Napisz program, który pobiera jako dane wejściowe ciąg i liczbę całkowitą n
i wyprowadza:
- Ciąg, który został przekazany do programu kilka
n
razy temu; - Nowy program, który zostanie użyty do następnego wywołania.
Nie możesz przechowywać żadnych danych poza programem, a twój program nie może wywoływać poprzednich programów w łańcuchu. Jeśli ciąg nie istnieje, wypisz pusty ciąg (ale nadal wypisz następny program).
Przykładowy bieg, w którym używam notacji program_n
dla każdego kolejnego programu (Oczywiście, [This text is the nth program]
zostałby zastąpiony faktycznym kodem).
$ 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
do linii wyjściowej, tak[program_3, One]
jakbyś chciał zobaczyć to. Jeśli oba dane wyjściowe zostaną ustawione na standardowe wyjście, jak należy je rozdzielić? Czy dozwolone są również funkcje zamiast pełnych programów?Odpowiedzi:
CJam, 25
Wypróbuj online
Wyjaśnienie:
Blok:
Na końcu żądany ciąg (jeśli istnieje), reprezentacja tablicy, blok i ciąg „_ ~” są drukowane automatycznie.
źródło
Python, 221 bajtów
Aby to łatwo przetestować, użyj
./thisgolf.py "yourfirststring" | python -c "import sys;exec(sys.stdin.read().split('\n')[1])" "your second string" <N>
, powtarzając ostatni bit tyle razy, ile chcesz.źródło
Python 2, 207 bajtów
Zbudowane na moim innym quine, ale zmienia program , to zadanie jest prostsze, więc mogłem grać w golfa dalej. Gdybym mógł wprowadzić dane wejściowe do standardowego wejścia, powinno to być znacznie krótsze.
źródło
JavaScript ES6,
130128121120113 bajtówźródło
\n
miejsce rzeczywistą nową linią.