Ваша задача - написать программу или функцию, которая выводит первый символ своего исходного кода, затем второй, затем третий ... каждый раз при запуске.
Например, если ваша программа была foo
на языке bar
в файле baz.bar
, вы должны получить вывод, подобный следующему:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Ваша программа может делать все, что угодно, после завершения печати исходного кода таким способом. Вы можете изменить исходный код файла, но помните, что исходный код для печати является исходным исходным кодом.
Это код-гольф, поэтому выигрывает самая короткая программа в байтах.
Ответы:
Желе , 12 байт
Это ниладическая ссылка. Попробуйте онлайн! (Включает код для вызова по ссылке двенадцать раз.)
Как это работает
В качестве дополнительного бонуса, поскольку регистр будет содержать пустую строку после двенадцатого вызова, он снова ложен, и ссылка готова начать заново. При 24-кратном вызове ссылки исходный код будет выведен дважды, трижды - 36 раз и т. Д.
источник
¢
), функцию идентификации (¹
не очень нужна после первого вызова), установите возвращаемое значение в перевод строки (⁷
неявно печатает предыдущее возвращаемое значение), повторите.¹
и⁷
оба верхних индекса, но они не связаны. Я заменил их на менее запутанные¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(вызов, объединение, повтор).Javascript - 26 байт
Определяет,
f()
что возвращает исходный код символ за символом.Возвращает неопределенное значение после того, как закончится количество символов.
источник
сложенный , неконкурентный, 34 байта
Вариация на стандартную квинну. Это полная программа. Используется,
execCounter
чтобы узнать, сколько раз эта программа была запущена. Ошибки после вывода всего.Попробуй это здесь!
источник
Пип , 31 байт
Анонимная функция. Проверьте это на TIO!
объяснение
Начните с этого стандартного пункта Пип:
Оберните это в фигурные скобки, чтобы сделать это функцией. Теперь, вместо того, чтобы возвращать весь источник, нам нужно проиндексировать его. Используя глобальную переменную для индекса и увеличивая ее каждый раз, будет выполняться требование «следующий символ каждый раз, когда он вызывается».
v
лучший кандидат, потому что он предварительно инициализирован-1
. Увеличение его в первый раз дает индекс0
, в следующий раз1
и т. Д.Pip имеет циклическую индексацию, поэтому, как только функция напечатает свой последний символ, она начнется сначала.
источник
Python, 90 байт
Расширение стандартного Python Quine (приветствуются советы по игре в гольф):
Это функция генератора Python , означающая, что вы выполняете итерацию по ней, и каждая итерация предоставляет следующий символ в исходном коде. Когда все символы были возвращены, происходит сбой
IndexError
.Для тестирования просто добавьте этот скрипт в конец программы:
Или попробуйте онлайн!
источник
*> <> ,
1321 байтСоздает файл с именем
\n
для отслеживания индекса.Это может быть в состоянии играть в гольф больше, но ничего сразу не выскакивает на меня ...
Выход
объяснение
Обман Инкремент Куайн
объяснение
источник
g
инструкции."your code goes here;
для> <>, а затем получить доступ к n-му члену в стекеMathematica, 91 байт
Комментарии очень приветствуются; Я до сих пор изучаю веревки о том, что такое квины.
Определяет функцию, вызываемую повторно без аргументов. После 91-го вызова он выдает большую ошибку и возвращает неоцененный.
Нужно было решить две проблемы: во-первых, я просто хотел использовать
StringTake[ToString[#0]<>"[]"]
, но,ToString[]
похоже, кавычки стерты; поэтому мне пришлось заменить"[]"
наFromCharacterCode[{91, 93}]
. Во-вторых, переменные Mathematica начинаются неинициализированными, поэтому я не могу их вызвать++q
до того, какq
определен; Вот почему первоначальныйIf[!NumberQ[q], q = 0]
необходим.Неактуальная кода: глядя вверх
NumberQ
, я узнал, что в Mathematica есть функция, которая называетсяTrueQ
... которая даёт,True
если аргумент естьTrue
иFalse
если аргумент естьFalse
! (Утилита в том, что она возвращает иFalse
все остальные аргументы.)источник
Microscript II,
4033 байтаЛитерал блока кода, ближайший эквивалент языка функции:
После запуска он возвращается в
x
исходное состояние, чтобы его было легче вызывать снова.источник
Bash (и zsh, ksh), 39 байтов
Он ничего не печатает после того, как программа распечатана.
Убедитесь,
0
что не существует в текущем каталоге и выполните:источник