&M"pp"
L!)(de
&c;`Che"
`!d!sick
!',@p"!'
'N'U`!Lu
yadda yadda Hilbert eğrisi.
Her şeyden önce, yığındaki üç önemli karakteri itiyoruz:
!'
'N'U
Sonra bir yakalama işareti belirledik ve tek bir karakter okuyarak başlayalım. Onu d
çoğaltırız ve reddederiz ve eğer bunun sonucu doğruysa (eğer dizge boşsa; giriş biterse), sonuna atlarız:
;`
d!
,@
Giriş karakterinin kalan kopyasıyla, yığının geri kalan kısmında yer alıp almadığını kontrol ederiz (yani eğer!, N, U ise). Olmazsa, bir hata daha yaratırız, bizi başka bir karakter okuduğumuz yerdeki yakalama işaretine geri atarız:
&c
`!
Aksi takdirde, hızlı depolama alanını yükleriz (temelde boş bir dize olan bir kayıt; sahtedir), dikkate almaz ve hızlı depolamaya geri göndeririz, sonra hatayı da yükseltiriz (okuma karakterlerine geri dönersek):
&M
L!
Giriş durduğunda, sonuna kadar gönderilir. Burada, yönü tersine çevirir, ünlem işareti iter ve hızlı depolamayı yükler ve olumsuzlarız. Eğer bu gerçek değilse (yani çok sayıda olumsuzlama olayı yaşadık), ittiğimiz ünlem işaretini yazdırırız:
p !'
`!Lu
Son olarak, ipi iki parçaya iter ve yazdırırız (yerden tasarruf için):
"pp"
)(de
Che"
sick
"
Daha sonra, program hala orijinal başlangıcına geri döner, ancak komutların hiçbiri herhangi bir şey çıkarmaz veya döngüsel bir davranışa sahip olmadığından önemli değildir. Aslında, ulaştığımız ilk nonpop komutu, kodun çoğunluğunu atlayarak bir istisna yaratır, çünkü catch işaretine atlarız, yani Aceto'nun o kısımda gördüğü:
&
!' @
'N'U
Yana U
artık tek tırnak karakteri tarafından preceeded değildir ve bu nedenle değişmez bir karakter olarak görmedim, bir komut olarak yorumlanır alır: U
yığın tüm unsurları tersine çevirir (şimdi öyle !
, N
, U
, üstten) ve 'N
ve '!
daha zorlarsan karakterler, yığınla bittiğimiz anlamına gelir [U, N, !, N, !]
.
Not: Bu, Aceto'nun yeni editörünün yardımıyla (kısmen) yazılmış ilk Aceto programıdır .
notunischecked
mu?