Программа которая печатает свой исходный код

Википедия говорит, что это называется quine, и кто-то дал код ниже:

char*s=»char*s=%c%s%c;main()»;main()

Но, очевидно, вы должны добавить

#include //corrected from #include

таким образом printf() может работать

Буквально, так как вышеуказанная программа не печатала #include , это не решение (?)

Меня смущает буквальное требование «печатать собственный исходный код» и любые цели такого рода проблем, особенно на собеседованиях.

Вам нужно #include для printf() , Не . Код настолько старый, что непонятно, нужен ли он вам. Но было бы хорошо обновить код для чистой компиляции под современным компилятором C. Также есть проблемы с отсутствием новой строки в конце вывода. Этот код, безусловно, не является кодом C++. — Jonathan Leffler

хороший улов. это . И вы правы в том, что компиляторы C++ не компилируют приведенный выше код, это делают только компиляторы C. — digit plumber

7 ответы

Основная цель вопросов о программах quine обычно состоит в том, чтобы узнать, сталкивались ли вы с ними раньше. Они почти никогда не бывают полезными в любом другом смысле.

Чат GPT создал мое приложение за несколько минут…

Приведенный выше код можно скромно обновить, чтобы сделать программу, совместимую с C99 (согласно GCC), следующим образом:

Сборник

/usr/bin/gcc -O3 -g -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition quine.c -o quine

Code

#include char*s=»#include %cchar*s=%c%s%c;%cint main(void)%c»; int main(void)

Обратите внимание, что это предполагает набор кодов, где » — кодовая точка 34, а новая строка — кодовая точка 10. Эта версия выводит новую строку в конце, в отличие от оригинала.

Он также содержит #include это необходимо, а строки почти достаточно короткие, чтобы работать на SO без горизонтальной полосы прокрутки. Приложив немного больше усилий, его, несомненно, можно было бы сделать достаточно коротким.

Читайте также:
Примеры программ на smlogix

Пусконаладка

Кислотным тестом для программы quine является:

./quine | diff quine.c —

Если есть разница между исходным кодом и выводом, об этом будет сообщено.

Почти полезное применение «кинеподобных» техник.

Еще в дни моей юности я создал двуязычную «самовоспроизводящуюся» программу. Это была комбинация сценария оболочки и исходного кода Informix-4GL (I4GL). Одним из свойств, которое сделало это возможным, было то, что I4GL обрабатывает < . >как комментарий, но оболочка обрабатывает это как единицу перенаправления ввода-вывода. I4GL также имеет #. EOL комментарии, как и оболочка.

Сценарий оболочки в верхней части файла включал данные и операции для повторного создания сложной последовательности операций проверки на языке, который не поддерживает указатели. Данные контролировали, какие функции I4GL мы генерировали и как генерировалась каждая из них. Затем код I4GL был скомпилирован для еженедельной проверки данных, импортируемых из внешнего источника данных.

Если вы запустили файл (назовите его file0.4gl ) в качестве сценария оболочки и зафиксировал вывод (назовем это file1.4gl ), а затем побежал file1.4gl как сценарий оболочки и записал вывод в file2.4gl , два файла file1.4gl и file2.4gl были бы идентичны. Тем не мение, file0.4gl может отсутствовать весь сгенерированный код I4GL, и пока «комментарий» сценария оболочки в верхней части файла не был поврежден, он будет регенерировать самовоспроизводящийся файл.

ИИ научили писать код | Copilot от GitHub и OpenAI

Источник: stackovergo.com

Java-приложение, которое печатает свой собственный исходный код

У меня есть небольшая опрос, которую я не могу решить сам. Я хочу создать программу, которая будет печатать собственный исходный код с помощью java. Кто-нибудь знает, как это сделать? Как этот пример:

public class SourcePrint < private static final long serialVersionUID = 1L; public void test()< System.out.println(«Hi I’m test»); >public static void main(String[] args) < new SourcePrint().test(); >>
когда мы запустим это, результат будет таким же:
public class SourcePrint < private static final long serialVersionUID = 1L; public void test()< System.out.println(«Hi I’m test»); >public static void main(String[] args) < new SourcePrint().test(); >>

Читайте также:
Через какую программу стримить на твич

Я не знаю, как это сделать. Кто-нибудь знает решение или хотя бы намек? Это не декомпилятор, производитель викторины сказал мне, что подсказка «STATIC».

user1481602 26 июнь 2012, в 06:40
Поделиться

Квины обычно включают печать исходного текста без чтения его из собственного исходного файла, что расценивается как мошенничество [в отношении проблемы такого рода]. В вашем требовании к решению указано, разрешено ли вам это делать?

Источник: overcoder.net

C/C++ программа, которая печатает собственный исходный код в качестве вывода

Википедия говорит, что это называется quine, и кто-то дал код ниже:

char*s=»char*s=%c%s%c;main()»;main()

Но, очевидно, вы должны добавить

#include //corrected from #include

таким образом printf() может работать

Буквально, так как вышеприведенная программа не печатала #include , это не решение (?)

Меня смущает буквальное требование «печатать свой собственный исходный код» и любые цели такого рода проблем, особенно на собеседованиях.

user528884 20 апр ’12 в 00:23 2012-04-20 00:23
2012-04-20 00:23

11 ответов

Хитрость в том, что большинство компиляторов будут компилироваться без необходимости включать stdio.h ,

Обычно они просто бросают предупреждение.

user565635 20 апр ’12 в 00:27 2012-04-20 00:27
2012-04-20 00:27

Основная цель вопросов об интервью о программах Quine обычно состоит в том, чтобы узнать, сталкивались ли вы с ними раньше. Они почти никогда не полезны в каком-либо другом смысле.

Приведенный выше код может быть скромно обновлен для создания C99-совместимой программы (согласно GCC) следующим образом:

компиляция

/usr/bin/gcc -O3 -g -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition quine.c -o quine

Код

#include char*s=»#include %cchar*s=%c%s%c;%cint main(void)%c»; int main(void)

Обратите внимание, что это предполагает набор кодов, где » это кодовая точка 34, а новая строка — это кодовая точка 10. Эта версия печатает новую строку в конце, в отличие от оригинала.

Читайте также:
Лучшие программы для коррекции фотографий

Он также содержит #include это необходимо, и линии почти достаточно короткие, чтобы работать на SO без горизонтальной полосы прокрутки. Приложив немного больше усилий, это, несомненно, можно сделать достаточно коротким.

Тестовое задание

Кислотный тест для программы Quine:

./quine | diff quine.c —

Если есть разница между исходным кодом и выводом, об этом будет сообщено.

Практически полезное применение «квино-подобных» техник

Еще во времена моей юности я подготовил двуязычную программу «самовоспроизводства». Это была комбинация сценария оболочки и исходного кода Informix-4GL (I4GL). Одним из свойств, которые сделали это возможным, было то, что I4GL лечит < . >как комментарий, но оболочка воспринимает это как единицу перенаправления ввода / вывода. I4GL также имеет #. EOL комментарии, как и оболочка.

Сценарий оболочки в верхней части файла содержит данные и операции для создания сложной последовательности операций проверки на языке, который не поддерживает указатели. Данные контролировали, какие функции I4GL мы сгенерировали и как каждый из них был сгенерирован. Затем был скомпилирован код I4GL для проверки данных, импортируемых из внешнего источника данных на еженедельной основе.

Если вы запустили файл (назовите его file0.4gl ) в качестве сценария оболочки и захватил вывод (вызов этого file1.4gl ), а затем побежал file1.4gl в качестве сценария оболочки и захватил вывод в file2.4gl , два файла file1.4gl а также file2.4gl будет идентичным Тем не мение, file0.4gl может отсутствовать весь сгенерированный код I4GL и до тех пор, пока сценарий оболочки ‘comment’ в верхней части файла не будет поврежден, он будет самовоспроизводиться.

Источник: stackru.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru