[S S N
_Push_0][S N
S _Duplicate_0][T N
T T _Read_STDIN_as_integer][T T T _Retrieve_input][T N
S T _Print_as_integer]
Lettere S
(spazio), T
(scheda) e N
(nuova riga) aggiunti solo come evidenziazione.
[..._some_action]
aggiunto solo come spiegazione.
Provalo online. Dovrai copiare e incollare tu stesso il codice (nota che SE converte le schede in un mucchio di spazi!) Per eseguire il codice sul vii5ard del compilatore di spazi bianchi online. Quando si fa clic su Esegui, verrà richiesto un input (ad es. -285.5
), E dopo aver fatto clic su Enter continuerà e verrà emesso -283
.
Spiegazione in pseudo-codice:
Integer i = STDIN as integer
Print i as integer
Gli spazi bianchi possono usare l'I / O solo come numeri interi o caratteri singoli, quindi in questo caso leggono l'input come numero intero e ignorano qualsiasi altro carattere finale. Cioè -283.5
o -283abc5
sarebbero entrambi input (e quindi output) come -283
.
Sfortunatamente questo sopra non funziona su TIO per due motivi (tutti i compilatori di Whitespace sono leggermente diversi ..):
- Dà un
no parse
errore quando proviamo a leggere un input come intero, che non è un numero intero valido. Quindi, invece, leggeremo un carattere alla volta e ci fermeremo (con un errore) non appena avremo riscontrato l' .
input o non ci sarà più input (cioè 50
/ -50
).
- Nel compilatore vii5ard è anche possibile premere 0 con just
SSN
, mentre su TIO richiede un ulteriore S
o T
: SSSN
/ SSTN
. Il primo S
è Abilita manipolazione stack ; il secondo S
è Push ciò che segue come intero ; il terzo S
/ T
è rispettivamente positivo / negativo; e any S
/ T
after that (seguito da un N
) è il numero che vogliamo inserire in binario, dove S=0
e T=1
. Per l'intero 0 questa parte binaria non ha importanza, poiché è 0 per impostazione predefinita. Ma su TIO dovremmo ancora specificare il positivo / negativo, e con la maggior parte degli altri compilatori di Whitespace come vii5ard no.
[N
S S N
_Create_Label_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T N
T S _Read_STDIN_as_character][T T T _Retrieve_input][S N
S _Duplicate_input][S S S T S T T T S N
_Push_46_.][T S S T _Subtract][N
T S S N
_If_0_Jump_to_Label_EXIT][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]
Lettere S
(spazio), T
(scheda) e N
(nuova riga) aggiunti solo come evidenziazione.
[..._some_action]
aggiunto solo come spiegazione.
Provalo online (solo con spazi non elaborati, schede e nuove righe).
Spiegazione in pseudo-codice:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
per3.14
?