Ацето , 19 17 байт, що не змагаються
Нова версія (17 байт):
Ця нова версія містить символів один за одним і найкраще виконувати за допомогою -F
параметра. Це працює аналогічно, але не ідентично попередньому рішенню:
>,
Op0
p|1u
,ip^
Стара відповідь (19 байт):
(Неконкурент, тому що мені довелося виправити дві помилки в перекладачі)
|p1u
iOp<
|!`X
rd!r
Це перша відповідь Ацето, яка підкреслює, що це може зробити порівняно добре. "Списки" - це вхідні потоки з одним входом на рядок, "1" для істинного та "0" для помилкових, з порожнім рядком, що означає кінець списку.
Програми Aceto запускаються на кривій Гільберта, починаючи зліва внизу і закінчуючи внизу праворуч. Спочатку ми нав'язуємо r
рядок, d
ускладнюємо та заперечуємо ( !
), перетворюючи порожні рядки в True, а все інше - у False. Тоді є умовне горизонтальне дзеркало ( |
): Якщо верхній елемент на стеці є простий, дзеркально горизонтально. Це відбувається, коли рядок був порожнім. Якщо ми робимо дзеркальне відображення, ми приземляємось на той X
, що вбиває перекладача.
В іншому випадку ми перетворюємо решту копій на стеку в i
nteger і робимо ще одне умовне горизонтальне дзеркало. Цього разу, оскільки 1 є простім, а 0 - хибним, ми відображаємо, якщо бачимо (перше) справжнє значення. Якщо ми не віддзеркалюємось (тому ми побачили 0), ми показуємо p
те, що є на стеку (оскільки стек порожній, нуль) і переходимо до O
ригея кривої, з якої ми почали, починаючи весь процес заново.
В іншому випадку, побачивши 1, ми дзеркально і приземляємось на той u
, який повертає напрямок, який рухаємо по кривій Гільберта. 1p
друкує 1, і тепер ми продовжуємо те саме, що O
ми пішли б, якби бачили 0, але оскільки ми перебуваємо в "зворотному режимі", наше походження знаходиться внизу праворуч , тому ми туди стрибаємо.
Тепер ми r
нав'язуємо ще один рядок і заперечуємо його. Якщо рядок був порожнім, а отже, верхній елемент стека є truthy, не`
вийде з наступної команди ( ), змусивши нас вийти.X
В іншому випадку (якщо рядок не була порожньою), ми дійсно рятуючись від X
і ігнорувати його. У такому випадку ми переходимо ліворуч ( <
), p
rint 0 (тому що стек порожній) та відскакуємо назад до O
ріга.