Напишите программу, которая принимает в качестве входных данных строку и целое число n
и выводит:
- Строка, которая была передана в программу несколько
n
раз назад; - Новая программа, которая будет использоваться для следующего вызова.
Вы не можете хранить какие-либо данные вне программы, и ваша программа не может вызывать предыдущие программы в цепочке. Если строка не существует, выведите пустую строку (но все равно выведите следующую программу).
Пример выполнения, где я использую обозначения program_n
для каждой последующей программы (Конечно, [This text is the nth program]
будет заменен реальным кодом.)
$ program_1 "One" 1
[This text is the second program]
$ program_2 "Two" 1
One
[This text is the third program]
$ program_3 "Three" 2
One
[This text is the fourth program]
$ program_4 "Four" 2
Two
[This text is the fifth program]
$ program_5 "Five" 1
Four
[This text is the sixth program]
program_n+1
'ы' в строку вывода, как[program_3, One]
если бы это было то, что вы хотели бы видеть. Если оба вывода идут в стандартный вывод, как они должны быть разделены? Также разрешена функция вместо полных программ?Ответы:
CJam, 25
Попробуйте онлайн
Объяснение:
Блок:
В конце запрошенная строка (если есть), представление массива, блок и строка «_ ~» печатаются автоматически.
источник
Python, 221 байт
Чтобы проверить это легко, используйте
./thisgolf.py "yourfirststring" | python -c "import sys;exec(sys.stdin.read().split('\n')[1])" "your second string" <N>
, повторяя последний бит столько раз, сколько захотите.источник
Python 2, 207 байт
Построенная на моей другой программе Quine, но меняющая программу , эта задача проще, так что я смог сыграть в нее дальше. Если бы я смог принять ввод в stdin, это должно быть намного короче.
источник
Javascript ES6,
130128121120113 байтовисточник
\n
символом новой строки.