Tantangan ini dibuat untuk merayakan bahasa esoteris pertamaku, Backhand !
Backhand adalah bahasa satu dimensi dengan aliran penunjuk non-linear. Pointer bergerak tiga langkah sekaligus, hanya menjalankan setiap instruksi ketiga.
Program 1..1..+..O..@akan menambahkan 1 + 1 dan output 2 sebelum mengakhiri. Instruksi perantara dilewati, begitu 1<>1()+{}O[]@juga program yang sama.
Ketika pointer akan keluar dari ujung kaset, itu sebaliknya membalikkan arah dan melangkah ke arah lain, begitu 1.@1.O+.juga program yang sama. Perhatikan bahwa itu hanya menghitung instruksi akhir sekali. Ini memungkinkan kita untuk mengompres sebagian besar program linier ke bawah, seperti1O+1@
Tantangan Anda di sini adalah menulis program atau fungsi yang mengambil string, dan menampilkan instruksi yang akan dieksekusi jika program ditafsirkan seperti Backhand (Anda tidak perlu menangani instruksi Backhand yang sebenarnya). Anda hanya akan output sampai pointer mendarat pada karakter terakhir dari string (di mana titik eksekusi biasanya akan mundur).
Tapi tunggu , itu belum semuanya! Ketika program Anda sendiri diinterpretasikan dengan cara ini, kode yang dihasilkan harus menampilkan salah satu di bawah ini:
(Mostly) worksTuring complete'Recreational'(kutipan bisa berupa'atau", tetapi tidak keduanya)Perfectly okayOnly a few bugs
Misalnya, jika kode sumber Anda code 2 backhand, maka program ce cankb od2ahdharus menampilkan salah satu dari frasa ini.
Kasus uji:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
Dan program referensi yang ditulis, tentu saja, Backhand ( ini mungkin agak buggy Oke, saya pikir saya sudah memperbaikinya).
Aturan
- Celah Standar dilarang
- Input dari program pertama hanya akan berisi ASCII dan baris baru yang dapat dicetak (yaitu, byte
0x20-0x7Edan 0x0A) - Anda dapat memilih apakah program kedua Anda dikonversi dari yang pertama dengan byte atau karakter UTF-8.
- Program kedua:
- Case tidak masalah, jadi output Anda bisa jadi
pErFectLy OKayjika Anda mau. - Berapapun spasi / spasi spasi awal (baris baru, tab, spasi) juga oke.
- Program kedua harus bahasa yang sama dengan yang pertama, meskipun tidak harus format yang sama (program / fungsi)
- Saya senang memasukkan saran dari komentar pada frasa tambahan (asalkan tidak terlalu pendek)
- Case tidak masalah, jadi output Anda bisa jadi
- Karena ini kode-golf , tujuan Anda adalah mendapatkan jawaban terpendek untuk bahasa Anda!
- Dalam dua minggu, saya akan memberikan hadiah 200 untuk jawaban Backhand terpendek.
"---!---!"(atau string apa pun di mana karakter terakhir muncul lebih dari satu kali)