Deadfish est un "langage de programmation" blague avec quatre commandes. Étant donné que la page Esolang est un peu contradictoire et que les interprètes de cette page ne fonctionnent pas tous exactement de la même manière, vous devez implémenter la variante suivante:
spécification
- Il existe un accumulateur d'une taille d' au moins 16 bits, plus est autorisé, mais moins ne l'est pas. Les nombres négatifs n'ont pas besoin d'être pris en charge. L'accumulateur est au
0
démarrage du programme. - Il existe les deux ensembles de quatre commandes suivants, et votre programme doit prendre en charge les deux en même temps.
Poisson-mort standard Vari Variante XKCD │ Signification ─────────────────────┼──────────────────┼───────── ─────────────────────────── i │ x │ Accumulateur d'incréments d │ d │ Décrémenter l'accumulateur s │ k │ Carré (acc = acc * acc) o │ c │ Accumulateur de sortie, en nombre
- Si, après avoir exécuté une commande, l'accumulateur est soit
-1
ou256
, l'accumulateur doit être remis à zéro. Notez que ce n'est pas un bouclage normal. Si, par exemple, l'accumulateur l'est20
et que las
commande est exécutée, l'accumulateur doit l'être400
après. De même, si l'accumulateur est257
et lad
commande est exécutée, l'accumulateur devrait devenir0
. - Toute entrée qui ne fait pas partie de ces commandes doit être ignorée.
Programmes de test
xiskso
devrait sortir0
xiskisc
devrait sortir289
E / S
Votre programme devrait afficher une invite: >>
. L'invite doit être au début d'une nouvelle ligne. Il doit ensuite lire une ligne d'entrée utilisateur et exécuter les commandes données de gauche à droite. Lors de la sortie de nombres, les nombres doivent être séparés. C'est à dire, 12 34
est OK, 12,34
est OK,
12
34
est OK, mais 1234
ne l'est pas.
Votre programme doit continuer à le faire en boucle, au moins jusqu'à ce qu'il EOF
soit atteint.
Exemple de session:
>> xiskso
0
>> xiskisc
289
>> ddddo ddddo
285
281
>> ddddo ddddo
277
273
>> dddddddo
266
>> dddddddddo
257
>> do
0
>> do
0
>> io
1
>>
#{STDIN.gets}
marcherait mais en effet ça ne marche pas.