Easy As ABC, juga dikenal sebagai "End View", adalah teka-teki di mana Anda diberi kotak kosong dengan huruf di sekitarnya; Anda harus mengisi sebagian kisi sehingga tepat satu dari setiap huruf ada di setiap baris dan kolom; selain itu, huruf di akhir baris (atau kolom) harus huruf pertama yang terlihat di baris (atau kolom) dari arah itu. Tujuan Anda dalam golf kode ini adalah memecahkan teka-teki Easy As ABC.
Sebagai contoh, berikut adalah teka-teki Easy As ABC dari MIT Mystery Hunt tahun ini menggunakan huruf MIC:
Solusinya adalah:
(Maaf tentang artefak di Cs; saya mencoba mengedit informasi yang tidak relevan dari sisa teka-teki.)
I / O
Input akan berupa array string atau string yang mungkin dengan pembatas. Itu akan mulai di sudut kiri atas dan pergi searah jarum jam. Misalnya, teka-teki di atas bisa menjadi input seperti ini:
".CMM.M|....IM|.....I|C.ICI."
Output harus berupa grid yang dipecahkan, dengan atau tanpa batas. Itu bisa sebagai array karakter, array string, atau format lain yang nyaman. Karakter "kosong" yang sama harus diterima sebagai input dan ditampilkan sebagai keluaran, tetapi karakter kosong itu bisa apa saja. Jika mereka adalah string tunggal, input dan output harus memiliki pemisah yang sama (antara sisi untuk input dan baris untuk output) atau tanpa pemisah sama sekali.
Untuk teka-teki yang tidak dapat dipecahkan, Anda harus mengeluarkan sesuatu yang tidak salah untuk solusi. Anda dapat berasumsi bahwa tidak ada puzzle yang memiliki lebih dari satu solusi.
Anda harus mengizinkan sejumlah huruf dan ukuran kisi apa pun; semua huruf yang digunakan akan muncul di perbatasan kisi.
Ini kode-golf : seperti biasa, kode terpendek menang!
Uji Kasus
"T.AA..|.T.TSS|..TST.|A...SS"
"R.RU..|B.B..B|.UR.UB|UR..B."
"N...NK|E.NK.K|..KK..|....EK"
"CA..DBD|.B..CC.|.D.DEB.|DB.A..A"
"...DDEBE|DC..EBBD|BA..ABF.|E..FECDE"
sumber
Jawaban:
PHP, 1111 Bytes
minus Bytes menghapus baris baru
Versi Online hanya berfungsi dengan Testcases dengan panjang 6
solusi singkat
buat semua permutasi
isi 2 array dengan permutasi $ x $ y
berubah di antara dua fungsi begitu lama hingga hanya 1 solusi dalam x array untuk setiap baris yang ada
fungsi i: menemukan persimpangan di grid dan drop permutasi
fungsi c: periksa kolom di setiap array karakter unik dan hapus permutasi di baris lain untuk array $ x dan $ y
sumber