[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]
Buchstaben S
(Leerzeichen), T
(Tabulator) und (Zeilenvorschub) werden N
nur als Hervorhebungen hinzugefügt.
[..._some_action]
nur als Erklärung hinzugefügt.
Probieren Sie es online aus. Sie müssen den Code selbst kopieren und einfügen (beachten Sie, dass SE die Tabulatoren in eine Reihe von Leerzeichen konvertiert!), Um den Code auf dem Online-Whitespace-Compiler vii5ard auszuführen. Wenn Sie auf "Ausführen" klicken, werden Sie nach einer Eingabe gefragt (dh -285.5
). Nach dem Klicken auf "Eingabe" wird die Eingabe fortgesetzt und ausgegeben -283
.
Erklärung im Pseudocode:
Integer i = STDIN as integer
Print i as integer
Whitespace kann E / A nur als Ganzzahl oder Einzelzeichen verwenden. In diesem Fall wird die Eingabe als Ganzzahl gelesen und alle anderen nachgestellten Zeichen ignoriert. Dh -283.5
oder -283abc5
beides wäre Eingabe (und damit Ausgabe) als -283
.
Leider funktioniert dies auf TIO aus zwei Gründen nicht (alle Whitespace-Compiler sind leicht unterschiedlich ..):
- Es wird ein
no parse
Fehler ausgegeben, wenn wir versuchen, eine Eingabe als Ganzzahl zu lesen, die keine gültige Ganzzahl ist. Stattdessen lesen wir also jeweils ein Zeichen und stoppen (mit einem Fehler), sobald wir auf das gestoßen sind .
oder es keine Eingabe mehr gibt (dh 50
/ -50
).
- Im vii5ard-Compiler ist es auch möglich, 0 mit just zu drücken
SSN
, während für TIO ein zusätzliches S
or T
: SSSN
/ erforderlich ist SSTN
. Das erste S
ist Stapelmanipulation aktivieren ; der zweite S
ist Push, was als Ganzzahl folgt ; das dritte S
/ T
ist positiv / negativ; und any S
/ T
after that (gefolgt von einem N
) ist die Zahl, die wir binär einfügen wollen, wo S=0
und T=1
. Für die Ganzzahl 0 spielt dieser Binärteil keine Rolle, da er standardmäßig 0 ist. Aber bei TIO müssten wir immer noch das Positive / Negative angeben und bei den meisten anderen Whitespace-Compilern wie vii5ard nicht.
Whitespace (mit TIO-Compiler ), 48 Byte
[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]
Buchstaben S
(Leerzeichen), T
(Tabulator) und (Zeilenvorschub) werden N
nur als Hervorhebungen hinzugefügt.
[..._some_action]
nur als Erklärung hinzugefügt.
Probieren Sie es online aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).
Erklärung im Pseudocode:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
für3.14
?