Aceto , 19 17 bajtów niekonkurujących
Nowa wersja (17 bajtów):
Ta nowa wersja pobiera postacie pojedynczo i najlepiej ją wykonać z -F
opcją. Działa podobnie, ale nie identycznie jak poprzednie rozwiązanie:
>,
Op0
p|1u
,ip^
Stara odpowiedź (19 bajtów):
(Nie konkuruje, ponieważ musiałem naprawić dwa błędy w tłumaczu)
|p1u
iOp<
|!`X
rd!r
Jest to pierwsza odpowiedź Aceto, która podkreśla, co może zrobić stosunkowo dobrze, powiedziałbym. „Listy” to strumienie wejściowe, z jednym wejściem na linię, „1” dla wartości true i „0” dla wartości false, z pustym ciągiem oznaczającym koniec listy.
Programy Aceto działają na krzywej Hilberta, zaczynając od lewego dolnego rogu, a kończąc na prawym dolnym rogu. Po pierwsze, r
wprowadzamy ciąg, d
powielamy i negujemy ( !
), zamieniając puste ciągi w True, a wszystko inne w False. Następnie jest warunkowe lustro poziome ( |
): Jeśli górny element na stosie jest prawdą, odbij lustro w poziomie. Dzieje się tak, gdy łańcuch jest pusty. Jeśli wykonujemy kopię lustrzaną, lądujemy na X
, co zabija tłumacza.
W przeciwnym razie konwertujemy pozostałą kopię na stosie na i
nteger i wykonujemy kolejne warunkowe lustro poziome: Tym razem, ponieważ 1 jest prawdą, a 0 jest fałszem, odbijamy, jeśli widzimy (pierwszą) prawdziwą wartość. Jeśli nie wykonamy lustra (widzieliśmy 0), p
przeszukujemy zawartość stosu (ponieważ stos jest pusty, zero) i przeskakujemy do O
sztywności krzywej, gdzie zaczęliśmy, rozpoczynając od nowa cały proces.
W przeciwnym razie, gdy zobaczymy 1, odbijamy lustro i lądujemy na nim u
, co odwraca kierunek, w którym poruszamy się po krzywej Hilberta. 1p
wypisuje 1, a teraz kontynuujemy to samo, O
co byśmy zrobili, gdybyśmy widzieli 0, ale ponieważ jesteśmy w „trybie odwróconym”, nasze pochodzenie znajduje się w prawym dolnym rogu , więc skaczemy tam.
Teraz mamy r
kolejny ciąg i negujemy go. Jeśli łańcuch był pusty, a zatem element najwyższego stosu jest zgodny z prawdą, nie ujdzie następnej komendy ( ), co `
spowoduje zamknięcie.X
W przeciwnym wypadku (jeśli łańcuch nie był pusty), my nie uciec X
i zignorować. W takim przypadku przechodzimy do left ( <
), p
rint 0 (ponieważ stos jest pusty) i przeskakujemy z powrotem do O
rigina.