Rosyjska lalka gniazdująca, bardziej znana jako lalka Matryoshka , to lalka, która zawiera mniejszą wersję siebie, która następnie zawiera kolejną mniejszą wersję siebie, która zawiera mniejszą wersję siebie, która zawiera mniejszą wersję siebie, która zawiera mniejszą wersję siebie ... - aż w końcu ostatnia jest pusta. Przykład:
Dzisiaj Twoim celem jest naśladowanie rosyjskiej tradycji, pisząc program lub funkcję, która, gdy będzie zawierała N razy, wydrukuje się zawierająca N-1 swoich kopii.
Na przykład program lalki abcd
będzie miał program N = 3 abababcdcdcd
, który wydrukuje program N = 2 ababcdcd
, który drukuje oryginalny program N = 1 abcd
, który w końcu wypisuje N = 0, który jest pusty. Powinno to teoretycznie działać dla każdej rozsądnej wartości N.
Zasady:
- Oto program TIO, który pomaga generować programy dla lalek na podstawie Twojego programu
- Obowiązują standardowe zasady Quine
- Obowiązują standardowe luki
- „Zawiera” oznacza bezpośrednio w centrum poprzedniej wersji, więc twoje rozwiązanie musi mieć dodatnią liczbę parzystą bajtów. Program o długości 10 będzie miał kopię oryginału wstawioną po piątym bajcie, a następnie kolejną po dziesiątym bajcie itp.
- Wyjściowe pojedyncze spacje są dozwolone
- Ponieważ jest to kod-golf , Twoim celem jest, aby Twój program N = 1 był jak najkrótszy.
- Dziękujemy za wyjaśnienie twojego kodu
źródło
N
zmierzony jest rozmiar kodu?Odpowiedzi:
Niedociążenie , 4 bajty
N = 1: Wypróbuj online.
N = 2: Wypróbuj online.
N = 3: Wypróbuj online.
Wyjaśnienie:
To oczywiste, ale i tak to dodam.
(...)S
wypisuje wszystko między nawiasami do STDOUTźródło
JavaScript,
3632 bajtówWykorzystuje fakt, że
Function.prototype.toString()
nie przyjmuje żadnych argumentów i dlatego zignoruje wszelkie przekazane mu argumenty.Częściowo zainspirowany rozwiązaniem user202729 .
Spróbuj
źródło
JavaScript (Node.js) , 46 bajtów
Pełny program Więc
console.log
jest to konieczne.Użyj pomysłu z tej odpowiedzi, aby zaoszczędzić trochę bajtów.
Wypróbuj online! Wypróbuj online dwa razy! Wypróbuj online trzy razy!
Moje podejście jest podobna do tej stosowanej w Kevin Cruijssen za odpowiedź , znaleźć strukturę gniazdowa (funkcja w tym przypadku).
źródło
Galaretka , 16 bajtów
Wypróbuj online!
Podwojony: wypróbuj online!
Trzykrotnie: wypróbuj online!
Galaretka nie ma żadnej zagnieżdżonej struktury, ale jej literały łańcuchowe są automatycznie kończone.
Spróbuje różnych podejść, aby sprawdzić, czy mogą być krótsze.
źródło
DipDup , 2 bajty
Spycha listę na stos i drukuje ją bez skrajnych nawiasów.
N = 1: Wypróbuj online!
N = 2: Wypróbuj online!
N = 3: Wypróbuj online!
źródło
dc , 4 bajty
Podobnie do niektórych innych odpowiedzi, ponieważ ciągi znaków
dc
mają ograniczniki start ([
) i end (]
) (tzn."
Nie wykonuje obu obowiązków itp.), Można je zagnieżdżać bez żadnego wysiłku.p
drukować.N = 1: Wypróbuj online!
N = 2: Wypróbuj!
N = 3: Wypróbuj nesteder!
źródło
Tcl , 12 bajtów
Wypróbuj online!
To tylko kolejny język, który ma to.
źródło