[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上则需要附加Sor 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?