[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
Пробельные символы могут использовать ввод / вывод только как целые или одиночные символы, поэтому в этом случае он будет читать ввод как целое число и игнорировать любые другие завершающие символы. Т.е. -283.5
или -283abc5
оба были бы введены (и, следовательно, выведены) как -283
.
К сожалению, это выше не работает на TIO по двум причинам (все компиляторы Whitespace немного отличаются ..):
- Это даст
no parse
ошибку, когда мы попытаемся прочитать входные данные как целое число, которое не является допустимым целым числом. Таким образом, вместо этого мы будем читать по одному символу за раз и останавливаемся (с ошибкой), как только мы встретили .
или больше нет ввода (то есть 50
/ -50
).
- В компиляторе vii5ard также можно нажать 0 с помощью just
SSN
, тогда как в TIO это требует дополнительного S
или T
: SSSN
/ SSTN
. Первый S
- это « Включить манипуляцию стека» ; вторая S
- Push, которая следует как целое число ; третий S
/ T
положительный / отрицательный соответственно; и любой S
/ T
после этого (с последующимN
) - это число, которое мы хотим вставить в двоичном формате, где S=0
и T=1
. Для целого числа 0 эта двоичная часть не имеет значения, поскольку по умолчанию она равна 0. Но в TIO нам все равно придется указывать положительный / отрицательный, а с большинством других компиляторов Whitespace, таких как 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
?