Vous devez écrire un programme ou une fonction qui, lorsqu'il est administré une nonvide chaîne S de N caractères ASCII imprimables † , émet un programme qui se termine avec le code de sortie C , où C est le point de code ASCII à la position 0 dans S . Ce programme que vous écrivez en outre un programme de sortie P , de telle sorte que, lorsqu'il est exécuté, il sort avec le code de sortie C ' , où C' est le point de code ASCII en position 1 dans S . Le programme P sortira un autre programme P ' . Ce processus se répète jusqu'à ce qu'il ne reste plus de caractères dans S. Après cela, vous ne devez rien produire, suivi d'un retour à la ligne facultatif; et doit quitter avec le code de sortie 0.
† Les caractères entre 0x20
et 0x7e
inclus.
Quelques règles supplémentaires:
- Les programmes auto-modifiables ne sont pas autorisés: vous devez sortir la source vers STDOUT (ou, retourner la valeur initialement)
- Vous ne pouvez pas lire votre propre code source.
Le programme le plus court en octets gagnera.
Pour certains tests rudimentaires, ce script rubis peut être utilisé. (Le premier argument est la façon dont vous invoquez le script, le second le programme et le troisième la chaîne d'entrée.)
Exemple hypothétique
Disons que le programme l'est FOO
. Lorsqu'on lui donne la chaîne "ABC", il sort BARA
. Ce programme se termine avec du code 65
et des sorties BARB
. Cela se termine à son tour avec du code 66
et des sorties BARC
. Ce programme se termine avec du code 67
et des sorties BAR!
. Cela ne produit rien et se termine avec du code 0
.
33 throw
lancer un nombre arbitraire. Vous utilisez des négatifs pour le niveau OS et le décalage est -512. Idk beaucoup non plus, mais je regarde ici: complang.tuwien.ac.at/forth/gforth/Docs-html/…
0
est le succès. tio.run/nexus/…