Aceto , 49 bajtów
&M"pp"
L!)(de
&c;`Che"
`!d!sick
!',@p"!'
'N'U`!Lu
yadda yadda Krzywa Hilberta.
Przede wszystkim pchamy trzy ważne postacie na stosie:
!'
'N'U
Następnie ustalamy znak połowu i zaczynamy od przeczytania jednego znaku. Stosujemy dgo i negujemy, a jeśli wynik tego jest prawdziwy (więc jeśli łańcuch był pusty; więc dane wejściowe zostały zakończone), przeskakujemy do końca:
;`
d!
,@
Z pozostałą kopią znaku wejściowego sprawdzamy, czy jest on zawarty w pozostałej części stosu (tj. Czy jest to jeden z!, N, U). Jeśli tak nie jest, zgłaszamy błąd, rzucając nas z powrotem do kreski, w której czytamy inną postać:
&c
`!
W przeciwnym razie ładujemy to, co jest w szybkim magazynie (zasadniczo rejestr, który początkowo jest pustym ciągiem; fałsz), negujemy go i odsyłamy z powrotem do szybkiego przechowywania, a następnie zgłaszamy błąd (wracając do czytania znaków):
&M
L!
Gdy wejście zatrzyma się, jesteśmy wysyłani do końca. Tam odwracamy kierunek, wciskamy wykrzyknik, ładujemy szybkie przechowywanie i negujemy je. Jeśli to prawda (tzn. Mieliśmy dziwną liczbę negacji), drukujemy wykrzyknik, który wypchnęliśmy:
p !'
`!Lu
Na koniec wciskamy sznurek na dwie części i drukujemy je (ze względu na oszczędność miejsca):
"pp"
)(de
Che"
sick
"
Następnie program nadal powraca do pierwotnego początku, ale ponieważ żadne z poleceń niczego nie generuje ani nie zachowuje się w pętli, nie ma to znaczenia. W rzeczywistości pierwsze polecenie non-nopping, które osiągamy, powoduje wyjątek, pomijając większość kodu, ponieważ przeskakujemy do znaku catch, co oznacza, że wszystkie Aceto widzi w tej części:
&
!' @
'N'U
Od Uteraz nie jest poprzedzone znakiem apostrofu, a zatem nie jest postrzegana jako postać dosłownym, to zostanie zinterpretowane jako polecenie: Uodwraca wszystkie elementy na stosie (obecnie jest to !, N, U, od góry), a 'Ni '!wcisnąć więcej znaków, co oznacza, że kończymy stosem [U, N, !, N, !].
Uwaga dodatkowa: Jest to pierwszy napisany (częściowo) program Aceto przy pomocy nowego edytora Aceto .
notunischecked?