&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
"
Згодом програма все ще повертається до початкового початку, але оскільки жодна з команд нічого не виводить або не має певної поведінки, це не має значення. Власне, перша непомітна команда, яку ми дістаємо, викликає виняток, пропускаючи більшість коду, тому що ми переходимо до позначки лову, тобто все, що Aceto бачить у цій частині, це:
&
!' @
'N'U
Оскільки U
на даний час не передує одиночної лапки , і тому не розглядається в якості символьного литерала, він отримує інтерпретується як команда: U
перевертає все елементи в стеку (тепер це !
, N
, U
, з верхньої частини), а також 'N
і '!
висунути більш символів, тобто закінчуємо стеком [U, N, !, N, !]
.
Побічна примітка: Це перша програма Aceto, написана (частково) за допомогою нового редактора Aceto .
notunischecked
?