Aceto , 19 17 bytes tidak bersaing
Versi baru (17 byte):
Versi baru ini mengambil karakter satu per satu dan paling baik dijalankan dengan -F
opsi. Ia bekerja serupa, tetapi tidak identik dengan solusi sebelumnya:
>,
Op0
p|1u
,ip^
Jawaban lama (19 byte):
(Non-bersaing karena saya harus memperbaiki dua bug pada penerjemah)
|p1u
iOp<
|!`X
rd!r
Ini adalah jawaban Aceto pertama yang menyoroti apa yang bisa dilakukan dengan relatif baik, menurut saya. "Daftar" adalah aliran input, dengan satu input per baris, "1" untuk true, dan "0" untuk false, dengan string kosong yang menandakan akhir daftar.
Program Aceto berjalan pada kurva Hilbert, mulai dari kiri bawah, dan berakhir di kanan bawah. Pertama, kita r
menghasilkan string, d
meng-uplicate, dan meniadakan ( !
) itu, mengubah string kosong menjadi True, yang lainnya menjadi False. Lalu ada mirror horizontal bersyarat ( |
): Jika elemen teratas pada stack benar, mirror horizontal. Ini terjadi ketika string kosong. Jika kita melakukan mirroring, kita mendarat di X
, yang membunuh penerjemah.
Kalau tidak, kita mengonversi salinan yang tersisa pada tumpukan ke i
nteger dan melakukan mirror horizontal bersyarat lainnya: Kali ini, karena 1 benar dan 0 palsu, kita mirror jika kita melihat nilai sebenarnya (pertama). Jika kita tidak mirror (jadi kita melihat 0) kita p
mematahkan apa yang ada di stack (karena stack kosong, nol) dan melompat ke O
rigin kurva, di mana kita mulai, memulai seluruh proses lagi.
Kalau tidak, ketika kita melihat 1, kita mirror dan mendarat di u
, yang membalikkan arah kita bergerak pada kurva Hilbert. 1p
mencetak 1, dan sekarang kita melanjutkan hal yang sama O
kita akan pergi jika kita melihat 0, tetapi karena kita berada dalam "mode terbalik", asal kita berada di kanan bawah , jadi kita lompat ke sana.
Sekarang kita punya r
string lain, dan meniadakannya. Jika string kosong, dan karena itu elemen tumpukan atas adalah benar, tidak`
akan luput dari perintah berikutnya ( ), membuat kita berhenti.X
Jika tidak (jika string tidak kosong), kita jangan melarikan diri X
dan mengabaikannya. Dalam hal ini, kita pergi ke kiri ( <
), p
rintis 0 (karena tumpukan kosong), dan melompat kembali ke O
rigin.