Suatu hari, tim kami pergi ke ruang pelarian. Salah satu teka-teki melibatkan papan enam sakelar mekanis di mana Anda harus menemukan kombinasi yang benar dan mematikan untuk membuka kunci kotak, agak seperti ini:
-v-v-v-
-v-v-v-
Menjadi pengembang, kami memutuskan akan lebih efisien untuk mencoba setiap kombinasi 2 ^ 6 = 64 daripada benar-benar memecahkan teka-teki. Jadi kami menugaskan orang miskin untuk melakukan penghitungan biner:
-v-v-v-
-v-v-v-
-v-v-v-
-v-v-^-
-v-v-v-
-v-^-v-
-v-v-v-
-v-^-^-
dan seterusnya.
Tantangannya
Menulis sebuah program yang, mengingat semua sakelar dalam posisi tidak aktif sebagai string yang diformat seperti di atas, menghasilkan semua kombinasi on dan off dalam urutan apa pun.
Anda dapat menulis program lengkap atau fungsi. Dengan demikian, program Anda dapat menerima input melalui stdin, file, atau sebagai argumen string tunggal, dan mengembalikan atau mencetak hasilnya. Jika dikembalikan, hasilnya mungkin ada dalam daftar / array / etc. daripada string tunggal. Jika outputnya berupa string tunggal, papan harus dipisahkan oleh baris baru (trailing baris baru diizinkan.)
String input akan cocok dengan regex r'((-v)+-)(\n(-v)+-)*'
dan mewakili satu papan dengan semua dimatikan. Ini berarti tidak ada wadah nol, dan sakelar dibariskan ke kiri. Setiap baris mungkin tidak memiliki jumlah sakelar yang sama.
Setiap papan keluaran harus memiliki format yang sama persis dengan input, kecuali bahwa v dapat diganti oleh ^ seperti yang diperlukan. Papan keluaran dapat dipisahkan oleh sejumlah baris baru.
Karena runtime secara alami O (2 ^ n) dalam jumlah switch, kode Anda tidak akan diuji pada lebih dari 10 switch dalam pengaturan apa pun.
Ini adalah kode-golf, jadi kode terpendek dalam jumlah byte menang.
Input dan output sampel
Memasukkan:
-v-
Output yang mungkin:
-v-
-^-
Memasukkan:
-v-
-v-
Output yang mungkin:
-^-
-^-
-^-
-v-
-v-
-^-
-v-
-v-
Karena sangat membosankan untuk memeriksa jawaban Anda untuk jumlah switch yang lebih besar, inilah skrip Python sebagai alat pemeriksaan kewarasan. (Saya telah memasukkan cuplikan yang saat ini dikomentari untuk menghasilkan output yang diharapkan dari file input yang diberikan jika Anda ingin lebih banyak kasus uji.) Sayangnya, ini agak kurang fleksibel dalam hal input dan output daripada spesifikasi, sayangnya; letakkan string input dalam file bernama 'input' dan output yang dipisahkan baris baru (maaf, tidak ada pemformatan daftar) dalam file bernama 'output' di direktori yang sama dan jalankan python3 sanitycheck.py
.