[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]
설명으로 만 추가되었습니다.
온라인으로 사용해보십시오. 온라인 Whitespace-compiler vii5ard에서 코드를 실행하려면 코드를 직접 복사하여 붙여 넣어야합니다 (SE는 탭을 여러 공백으로 변환합니다!). 실행을 클릭하면 입력 (즉 -285.5
)을 요청하고 Enter를 클릭하면 계속 진행하고 출력 -283
합니다.
의사 코드의 설명 :
Integer i = STDIN as integer
Print i as integer
공백은 I / O를 정수 또는 단일 문자로만 사용할 수 있으므로이 경우 입력을 정수로 읽고 다른 후행 문자는 무시합니다. 즉 -283.5
또는 -283abc5
로 입력 (및 출력)됩니다 -283
.
불행히도 위의 두 가지 이유로 TIO 에서 작동하지 않습니다 (모든 공백 컴파일러는 약간 다릅니다.) :
- 그것은 줄 것이다
no parse
우리는 유효한 정수가 아닌 정수로 입력을 읽으려고 할 때 오류가 발생했습니다. 따라서 대신 한 번에 한 문자를 읽고 .
더 이상 입력이 없거나 (예 : 50
/ -50
) 가 없으면 즉시 오류와 함께 중지 합니다.
- vii5ard 컴파일러에서는 그냥 0으로 푸시하는 것도 가능
SSN
하지만 TIO에서는 추가 S
또는 T
: SSSN
// 가 필요합니다 SSTN
. 첫 번째 S
는 스택 조작 사용입니다 . 두 번째 S
는 Push 다음에 오는 정수입니다 . 제 S
/은 T
각각 양극 / 마이너스이고; 및 S
/ T
(AN 다음에 그 이후로는 N
) 우리가 진에 밀어 원하는 번호 S=0
및 T=1
. 정수 0의 경우이 이진 부분은 기본적으로 0이므로 중요하지 않습니다. 그러나 TIO에서는 여전히 양수 / 음수를 지정해야하며 vii5ard와 같은 대부분의 다른 공백 컴파일러에서는 그렇지 않습니다.
[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
있습니까?