&M"pp"
L!)(de
&c;`Che"
`!d!sick
!',@p"!'
'N'U`!Lu
Ядда Ядда Кривая Гильберта.
Прежде всего, мы помещаем три важных символа в стек:
!'
'N'U
Затем мы устанавливаем метку и начинаем с чтения одного символа. Мы d
дублируем это и отрицаем его, и если результат этого является правдивым (поэтому, если строка была пустой; значит, ввод закончился), мы переходим к концу:
;`
d!
,@
С оставшейся копией входного символа мы проверяем, содержится ли он в остальной части стека (т. Е. Является ли он одним из!, N, U). Если это не так, мы выдаем ошибку, возвращая нас к нашей метке, где мы читаем другой символ:
&c
`!
В противном случае мы загружаем то, что находится в быстром хранилище (по сути, регистр, который изначально является пустой строкой; ложно), отменяем его и отправляем обратно в быстрое хранилище, а затем поднимаем ошибку (возвращаясь к чтению символов):
&M
L!
Когда ввод прекратился, нас отправили до конца. Там мы меняем направление, нажимаем восклицательный знак, загружаем быстрое хранение и отменяем его. Если это правда (т. Е. У нас было нечетное количество отрицаний), мы печатаем восклицательный знак, который мы нажали:
p !'
`!Lu
Наконец, мы помещаем строку в две части и печатаем их (для экономии места):
"pp"
)(de
Che"
sick
"
После этого программа все еще возвращается к исходному началу, но поскольку ни одна из команд не выводит ничего или имеет зацикленное поведение, это не имеет значения. Фактически, первая команда non-nopping, которую мы достигаем, вызывает исключение, пропуская большую часть кода, потому что мы переходим к метке улова, то есть все, что Aceto видит в этой части:
&
!' @
'N'U
Поскольку U
в настоящее время не предваряется одиночной кавычки , и поэтому не рассматривается в качестве символьного литерала, он получает интерпретируется как команда: U
переворачивает все элементы в стеке (теперь это !
, N
, U
, из верхней части), а также 'N
и '!
выдвинуть более символы, означающие, что мы заканчиваем стеком [U, N, !, N, !]
.
Примечание: это первая программа Aceto, написанная (частично) с помощью нового редактора Aceto .
notunischecked
?