ช่องว่าง , 141 104 103 ไบต์
[S S S N
_Push_0][S N
S _Duplicate_0][T N
T T _Read_STDIN_as_number][T T T _Retrieve][S S S T S N
_Push_2][T S S T _Subtract][S N
S _Duplicate_input-2][N
T T N
_If_negative_Jump_to_Label_-1][S S S T N
_Push_1][S N
S _Duplicate_1][T N
S T _Print_as_integer][S S T T N
_Push_-1][T N
S T _Print_as_integer][T S S T _Subtract][N
S S T N
_Create_Label_LOOP][S N
S _Duplicate][N
T T S N
_If_negative_Jump_to_EXIT][S S S T N
_Push_1][S N
S _Duplicate_1][T N
S T _Print_as_integer][T S S T _Subtract][N
S N
T N
_Jump_to_LOOP][N
S S N
_Create_Label_-1][T N
S T _Print_as_integer][N
S S S N
_Create_Label_EXIT]
เพิ่มตัวอักษรS
(ช่องว่าง), T
(แท็บ) และN
(บรรทัดใหม่) เป็นการเน้นเท่านั้น
[..._some_action]
เพิ่มเป็นคำอธิบายเท่านั้น
พิมพ์1
แทนC
และแทน-
E
-1 ไบต์ขอบคุณที่@JoKingด้วยการแนะนำการใช้งาน1
และการ-1
แทนและ0
1
คำอธิบายในรหัสเทียม:
Integer i = STDIN-input as integer - 2
If i is negative (-1):
Print i (so print "-1")
Else:
Print "1-1"
Start LOOP:
If i is negative:
EXIT program
Print "1"
i = i-1
Go to the next iteration of the LOOP
ตัวอย่างการทำงาน:
การป้อนข้อมูล: 1
Command Explanation Stack Heap STDIN STDOUT STDERR
SSSN Push 0 [0]
SNS Duplicate top (0) [0,0]
TNTT Read STDIN as integer [0] {0:1} 1
TTT Retrieve heap at 0 [1] {0:1}
SSSTSN Push 2 [1,2] {0:1}
TSST Subtract top two [-1] {0:1}
SNS Duplicate input-2 [-1,-1] {0:1}
NTSN If neg.: Jump to Label_-1 [-1] {0:1}
NSSN Create Label_-1 [-1] {0:1}
TNST Print top as integer [] {0:1} -1
NSSSN Create Label_EXIT [] {0:1}
error
ลองใช้ออนไลน์ (ด้วยพื้นที่ว่างเปล่าแท็บและบรรทัดใหม่เท่านั้น)
หยุดโดยมีข้อผิดพลาด: ไม่ได้กำหนดทางออก
การป้อนข้อมูล: 4
Command Explanation Stack Heap STDIN STDOUT STDERR
SSSN Push 0 [0]
SNS Duplicate top (0) [0,0]
TNTT Read STDIN as integer [0] {0:4} 4
TTT Retrieve heap at 0 [4] {0:4}
SSSTSN Push 2 [4,2] {0:4}
TSST Subtract top two [2] {0:4}
SNS Duplicate input-2 [2,2] {0:4}
NTSN If neg.: Jump to Label_-1 [2] {0:4}
SSSTN Push 1 [2,1] {0:4}
SNS Duplicate top (1) [2,1,1] {0:4}
TNST Print as integer [2,1] {0:4} 1
SSTTN Push -1 [2,1,-1] {0:4}
TNST Print as integer [2,1] {0:4} -1
TSST Subtract top two [1] {0:4}
NSSTN Create Label_LOOP [1] {0:4}
SNS Duplicate top (1) [1,1] {0:4}
NTTSN If neg.: Jump to Label_EXIT [1] {0:4}
SSSTN Push 1 [1,1] {0:4}
SNS Duplicate top (1) [1,1,1] {0:4}
TNST Print as integer [1,1] {0:4} 1
TSST Subtract top two [0] {0:4}
NSNTN Jump to Label_LOOP [0] {0:4}
SNS Duplicate top (0) [0,0] {0:4}
NTTSN If neg.: Jump to Label_EXIT [0] {0:4}
SSSTN Push 1 [0,1] {0:4}
SNS Duplicate top (1) [0,1,1] {0:4}
TNST Print as integer [0,1] {0:4} 1
TSST Subtract top two [-1] {0:4}
NSNTN Jump to Label_LOOP [-1] {0:4}
SNS Duplicate top (-1) [-1,-1] {0:4}
NTTSN If neg.: Jump to Label_EXIT [-1] {0:4}
NSSSN Create Label_EXIT [-1] {0:4}
error
ลองใช้ออนไลน์ (ด้วยพื้นที่ว่างเปล่าแท็บและบรรทัดใหม่เท่านั้น)
หยุดโดยมีข้อผิดพลาด: ไม่ได้กำหนดทางออก