Écrivez un programme qui prend en entrée une chaîne et un entier n
, et génère:
- La chaîne qui a été transmise au programme
n
il y a quelques temps; - Un nouveau programme qui sera utilisé pour la prochaine invocation.
Vous ne pouvez pas stocker de données en dehors du programme et votre programme ne peut pas appeler les programmes précédents de la chaîne. Si la chaîne n'existe pas, sortez une chaîne vide (mais sortez toujours le programme suivant).
Exemple d'exécution, où j'utilise la notation program_n
pour chaque programme successif (Bien sûr, [This text is the nth program]
serait remplacé par du code réel.)
$ 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
'à la ligne de sortie comme[program_3, One]
si c'était ce que vous aimeriez voir. Si les deux sorties vont à la sortie standard, comment devraient-elles être séparées? Les fonctions sont-elles également autorisées au lieu des programmes complets?Réponses:
CJam, 25 ans
Essayez-le en ligne
Explication:
Le bloc:
À la fin, la chaîne demandée (le cas échéant), la représentation du tableau, le bloc et la chaîne "_ ~" sont imprimés automatiquement.
la source
Python, 221 octets
Pour tester cela facilement, utilisez
./thisgolf.py "yourfirststring" | python -c "import sys;exec(sys.stdin.read().split('\n')[1])" "your second string" <N>
, en répétant le dernier bit autant de fois que vous le souhaitez.la source
Python 2, 207 octets
Construit sur mon autre programme mais change de programme , cette tâche est plus simple, j'ai donc pu jouer au golf plus loin. Si je pouvais prendre l'entrée sur stdin, cela devrait être beaucoup plus court.
la source
Javascript ES6,
130128121120113 octetsla source
\n
avec une nouvelle ligne réelle.