Deadfish è un "linguaggio di programmazione" scherzoso con quattro comandi. Poiché la pagina Esolang è un po 'contraddittoria e gli interpreti in quella pagina non funzionano tutti esattamente allo stesso modo, è necessario implementare la seguente variante:
specificazione
- C'è un accumulatore che ha una dimensione di almeno 16 bit, più è permesso ma meno non lo è. I numeri negativi non devono essere supportati. L'accumulatore è
0all'avvio del programma. - Esistono i seguenti due set di quattro comandi e il programma deve supportare entrambi contemporaneamente.
Pesce morto standard │ Variante XKCD │ Significato ─────────────────────┼──────────────────┼───────── ─────────────────────────── i │ x │ Accumulatore di incremento d │ d │ Accumulatore di decremento s │ k │ Square (acc = acc * acc) o │ c │ Accumulatore di uscita, come numero - Se, dopo aver eseguito un comando, l'accumulatore è uno
-1o256, l'accumulatore deve essere ripristinato a zero. Si noti che questo non è normale. Se, per esempio, l'accumulatore è20e ilscomando viene eseguito, l'accumulatore dovrebbe essere in400seguito. Allo stesso modo, se l'accumulatore è257e ildcomando viene eseguito, l'accumulatore dovrebbe diventare0. - Qualsiasi input che non è uno di questi comandi deve essere ignorato.
Programmi di test
xisksodovrebbe produrre0xiskiscdovrebbe produrre289
I / O
Il vostro programma dovrebbe visualizzare un prompt: >>. Il prompt deve essere all'inizio di una nuova riga. Dovrebbe quindi leggere una riga di input dell'utente ed eseguire i comandi dati da sinistra a destra. Quando si generano numeri, i numeri devono essere separati. Cioè, 12 34va bene, 12,34va bene,
12
34
va bene, ma 1234non lo è.
Il tuo programma dovrebbe continuare a farlo in un ciclo, almeno fino a quando non EOFviene raggiunto.
Sessione di esempio:
>> xiskso
0
>> xiskisc
289
>> ddddo ddddo
285
281
>> ddddo ddddo
277
273
>> dddddddo
266
>> dddddddddo
257
>> do
0
>> do
0
>> io
1
>>
#{STDIN.gets}avrebbe funzionato, ma in effetti non lo è.