[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]
字母S
(空格),T
(制表符)和N
(换行符)仅作为突出显示而添加。
[..._some_action]
仅作为说明添加。
在线尝试。您必须自己复制粘贴代码(请注意,SE会将制表符转换为一堆空格!),以便在在线Whitespace编译器vii5ard上运行代码。单击运行时,它将要求输入(即-285.5
),单击输入后,它将继续输出-283
。
伪代码中的解释:
Integer i = STDIN as integer
Print i as integer
空格只能将I / O用作整数或单个字符,因此在这种情况下,它将以整数形式读取输入,而忽略其他任何尾随字符。即-283.5
或-283abc5
都将作为输入(并因此输出)-283
。
不幸的是,由于两个原因,以上内容在TIO上不起作用(所有Whitespace编译器略有不同..):
no parse
当我们尝试将输入读取为整数(这不是有效的整数)时,将产生错误。因此,取而代之的是,我们一次读取一个字符,并在遇到.
或没有更多输入(即50
/ -50
)后立即停止(出现错误)。
- 在vii5ard编译器中,也可以用just推0
SSN
,而在TIO上则需要附加S
or T
:SSSN
/ SSTN
。第一个S
是启用堆栈操作 ; 第二个S
是Push,其后为整数 ; 第三S
/ T
分别为正/负;任何S
/ T
后(后面的N
)是我们希望在二进制,其中推数S=0
和T=1
。对于整数0,此二进制部分无关紧要,因为默认情况下为0。但是在TIO上,我们仍然必须指定正/负,而对于像vii5ard这样的大多数其他Whitespace编译器,则不需要。
[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]
字母S
(空格),T
(制表符)和N
(换行符)仅作为突出显示而添加。
[..._some_action]
仅作为说明添加。
在线尝试(仅使用空格,制表符和换行符)。
伪代码中的解释:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
为3.14
?