Русская матрешка, более известная как матрешка , - это кукла, которая содержит уменьшенную версию самой себя, которая затем содержит другую уменьшенную версию самой себя, которая содержит уменьшенную версию самой себя, которая содержит уменьшенную версию самой себя, которая содержит меньшую версию самого себя ... - пока, наконец, последний не пуст. Пример:
Сегодня ваша цель состоит в том, чтобы подражать этой русской традиции, написав программу или функцию, которая, если она содержит себя N раз, напечатает себя, содержащую N-1 копий своего времени.
Например, программа куклы abcd
будет иметь программу N = 3 abababcdcdcd
, которая будет печатать программу N = 2 ababcdcd
, которая печатает оригинальную программу N = 1 abcd
, которая, наконец, печатает N = 0, которая является пустой. Это должно теоретически работать для любого разумного значения N.
Правила:
- Вот программа TIO, чтобы помочь генерировать программы куклы на основе вашей программы
- Применяются стандартные правила Куайна
- Стандартные лазейки применяются
- «Содержит» означает непосредственно в центре предыдущей версии, поэтому ваше решение должно иметь положительное четное число байтов. Программа длиной 10 будет иметь копию оригинала, вставленную после пятого байта, затем еще одну после десятого байта и т. Д.
- Один выходной пробел допускается в выходных данных
- Поскольку это код-гольф , ваша цель - сделать программу N = 1 максимально короткой.
- Пояснение вашего кода будет оценено
источник
N
измеряется размер кода?Ответы:
Недогрузка , 4 байта
N = 1: попробуйте онлайн.
N = 2: попробуйте онлайн.
N = 3: попробуйте онлайн.
Объяснение:
Само собой разумеется, но я все равно добавляю это.
(...)S
печатает что-либо между круглыми скобками в STDOUTисточник
JavaScript,
3632 байтаИспользует тот факт, что не
Function.prototype.toString()
принимает аргументов и поэтому игнорирует все, что ему передано.Частично вдохновлено решением пользователя 202729 .
Попытайся
источник
JavaScript (Node.js) , 46 байт
Полная программа. Так
console.log
надо.Используйте идею из этого ответа, чтобы сохранить несколько байтов.
Попробуйте онлайн! Попробуйте онлайн дважды! Попробуйте онлайн три раза!
Мой подход аналогичен тому , который используется в Kevin Cruijssen в ответе , найти вложенную структуру (функции в данном случае).
источник
Желе , 16 байт
Попробуйте онлайн!
Дабл: попробуйте онлайн!
В три раза: попробуйте онлайн!
Jelly не имеет вложенной структуры, но его строковые литералы автоматически завершаются.
Попробуем разные подходы, чтобы увидеть, могут ли они быть короче.
источник
DipDup , 2 байта
Он помещает список в стек и печатает его без крайних скобок.
N = 1: попробуйте онлайн!
N = 2: попробуйте онлайн!
N = 3: попробуйте онлайн!
источник
постоянный ток , 4 байта
Подобно некоторым другим ответам, поскольку строки в разделителях
dc
start ([
) и end (]
) (то есть"
не выполняют обе обязанности и т. Д.), Они могут быть вложены без каких-либо реальных усилий.p
печатать.N = 1: попробуйте онлайн!
N = 2: попробуй вложенный!
N = 3: попробуйте это Nesteder!
источник
Tcl , 12 байт
Попробуйте онлайн!
Это просто другой язык, который также имеет это.
источник