[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]
Letras S
(espaço), T
(guia) e N
(nova linha) adicionadas apenas como destaque.
[..._some_action]
adicionado apenas como explicação.
Experimente online. Você precisará copiar e colar o código sozinho (observe que o SE converte as guias em vários espaços!) Para executar o código no vii5ard do Whitespace-compilador on-line. Ao clicar em executar, ele solicitará uma entrada (ou seja -285.5
) e, após clicar em entrar, continuará e emitirá -283
.
Explicação em pseudo-código:
Integer i = STDIN as integer
Print i as integer
O espaço em branco só pode usar E / S como números inteiros ou caracteres únicos; portanto, nesse caso, ele leria a entrada como número inteiro e ignoraria quaisquer outros caracteres finais. -283.5
Ou seja, ou -283abc5
ambos seriam inseridos (e, portanto, gerados) como -283
.
Infelizmente, isso acima não funciona no TIO por dois motivos (todos os compiladores do Whitespace são um pouco diferentes ..):
- Isso causará um
no parse
erro quando tentarmos ler uma entrada como número inteiro, que não é um número inteiro válido. Então, em vez disso, leremos um caractere de cada vez e pararemos (com um erro) assim que encontrarmos a .
ou não houver mais entrada (por exemplo, 50
/-50
).
- No compilador vii5ard também é possível pressionar 0 com apenas
SSN
, enquanto no TIO ele requer um adicional S
ou T
: SSSN
/ SSTN
. O primeiro S
é Habilitar manipulação de pilha ; o segundo S
é Empurre o que segue como inteiro ; o terceiro S
/ T
é positivo / negativo, respectivamente; e qualquer S
/ T
depois disso (seguido de um N
) é o número que queremos inserir no binário, onde S=0
e T=1
. Para o número 0, essa parte binária não importa, pois é 0 por padrão. Mas no TIO ainda teríamos que especificar o positivo / negativo e, com a maioria dos outros compiladores do Whitespace, como o vii5ard, não.
Espaço em branco (com compilador TIO ), 48 bytes
[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]
Letras S
(espaço), T
(guia) e N
(nova linha) adicionadas apenas como destaque.
[..._some_action]
adicionado apenas como explicação.
Experimente online (apenas com espaços brutos, guias e novas linhas).
Explicação em pseudo-código:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
para3.14
?