Википедия говорит, что это называется 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 без горизонтальной полосы прокрутки. Приложив немного больше усилий, его, несомненно, можно было бы сделать достаточно коротким.
Пусконаладка
Кислотным тестом для программы 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