[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]
Chữ cái S
(dấu cách), T
(tab) và N
(dòng mới) được thêm vào dưới dạng chỉ tô sáng.
[..._some_action]
chỉ thêm vào giải thích.
Hãy thử trực tuyến. Bạn sẽ phải tự sao chép-dán mã (lưu ý rằng SE chuyển đổi các tab thành một loạt khoảng trắng!) Để chạy mã tại trình biên dịch vii5ard trực tuyến vii5ard. Khi nhấp vào chạy, nó sẽ yêu cầu đầu vào (nghĩa là -285.5
) và sau khi nhấp vào, nó sẽ tiếp tục và xuất ra-283
.
Giải thích bằng mã giả:
Integer i = STDIN as integer
Print i as integer
Khoảng trắng chỉ có thể sử dụng I / O làm số nguyên hoặc ký tự đơn, vì vậy trong trường hợp này, nó sẽ đọc đầu vào dưới dạng số nguyên và bỏ qua bất kỳ ký tự dấu nào khác. Tức là -283.5
hoặc -283abc5
cả hai sẽ là đầu vào (và do đó đầu ra) là-283
.
Thật không may, điều này ở trên không hoạt động trên TIO vì hai lý do (tất cả các trình biên dịch Whitespace hơi khác nhau ..):
- Nó sẽ
no parse
báo lỗi khi chúng ta cố đọc đầu vào dưới dạng số nguyên, đây không phải là số nguyên hợp lệ. Vì vậy, thay vào đó, chúng tôi sẽ đọc một ký tự một lần và dừng (có lỗi) ngay khi chúng tôi gặp phải .
hoặc không có thêm đầu vào (tức là 50
/-50
).
- Trong trình biên dịch vii5ard, bạn cũng có thể ấn 0 chỉ
SSN
trong khi trên TIO, nó yêu cầu thêm S
hoặc T
: SSSN
/ SSTN
. Đầu tiên S
là Kích hoạt thao tác ngăn xếp ; thứ hai S
là Đẩy cái gì sau số nguyên ; thứ ba S
/ T
là tích cực / tiêu cực tương ứng; và bất kỳ S
/ T
sau đó (theo sau là N
) là số chúng tôi muốn đẩy ở dạng nhị phân, ở đâu S=0
và T=1
. Đối với số nguyên 0, phần nhị phân này không thành vấn đề, vì nó là 0 theo mặc định. Nhưng trên TIO, chúng tôi vẫn phải chỉ định dương / âm và với hầu hết các trình biên dịch khoảng trắng khác như vii5ard thì không.
[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]
Chữ cái S
(dấu cách), T
(tab) và N
(dòng mới) được thêm vào dưới dạng chỉ tô sáng.
[..._some_action]
chỉ thêm vào giải thích.
Dùng thử trực tuyến (chỉ có không gian thô, tab và dòng mới).
Giải thích bằng mã giả:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
cho3.14
?