Seperti yang Anda paling mungkin sekarang, ada 2339 solusi untuk teka-teki pentomino dalam kisi 6x10. Ada skema pelabelan yang berbeda untuk 12 pentomino, dua di antaranya ditunjukkan pada gambar di bawah ini:
Kredit gambar: Wikipedia
Untuk keperluan tugas saat ini kami akan mengatakan bahwa solusi pentomino yang dinormalisasi adalah solusi yang menggunakan skema pelabelan kedua (Conway's).
Contoh:
O O O O O S S S Z Z
P P R R S S W W Z V
P P P R R W W Z Z V
U U X R T W Y V V V
U X X X T Y Y Y Y Q
U U X T T T Q Q Q Q
Bagian dengan 5 kotak berturut-turut dilambangkan dengan huruf O
, sesuai dengan skema. Hal yang sama berlaku untuk semua bagian.
Tugas:
Diberikan solusi untuk pentomino 6x10 di mana potongan diberi label dengan sheme acak, menormalkannya sehingga semua potongan diberi label dalam skema label Conway. Anda perlu mengenali potongan-potongan itu dan menandai setiap kotak dari potongan tertentu dengan simbol dari potongan itu.
Memasukkan:
Solusi yang akan dinormalisasi, dalam format apa pun yang nyaman bagi Anda, misalnya:
String multiline
Daftar string
Daftar daftar karakter
dan seterusnya
Keluaran:
Solusi yang sama (semua posisi dan orientasi potongan dipertahankan), tetapi setiap bagian diberi label sesuai dengan skema pelabelan Conway. Catatan: Output HARUS DICETAK sebagai kotak karakter 6x10. Jalur dan spasi baris baru dan tertinggal diizinkan. Anda juga dapat mencetak spasi di antara karakter (tetapi bukan baris kosong), seperti pada contoh di atas.
Kasus uji:
1. Masukan:
6623338888
6222344478
66A234BB70
1AAA94B770
11A99BB700
1199555550
Keluaran:
UURTTTQQQQ
URRRTVVVSQ
UUXRTVZZSY
PXXXWVZSSY
PPXWWZZSYY
PPWWOOOOOY
2. Input:
45ookkkk00
455ooogk00
4a55gggdd0
4aaa3gnnd.
4am333ndd.
mmmm3nn...
Keluaran:
OWSSQQQQPP
OWWSSSRQPP
OTWWRRRUUP
OTTTXRZZUV
OTYXXXZUUV
YYYYXZZVVV
Kriteria menang:
Solusi terpendek dalam byte di setiap bahasa menang. Jangan berkecil hati dengan bahasa golf. Penjelasan algoritma dan implementasi dipersilahkan.
sumber
Jawaban:
APL (Dyalog Classic) ,
545350 byteCobalah online!
Hitung invarian untuk setiap pentomino di input: ukur (∆x, ∆y) dari masing-masing kotak ke pusat gravitasinya, ambil abs (∆x) dan abs (∆y), jumlah komponen x dan secara terpisah y komponen, dan kalikan dua jumlah. Ini memberikan 12 hasil berbeda. Kemudian, cari indeks masing-masing invarian pentomino dalam koleksi yang diurutkan dari semua invarian. Ganti 0 dengan
'O'
, 1 dengan'X'
, 2 dengan'R'
, dll.sumber
Jelly , 37 byte
Program lengkap mengambil daftar string (karena kita harus mencetak - jika tidak menghapus trailing
Y
dan Anda memiliki monad mengambil daftar daftar angka atau karakter yang mengembalikan daftar daftar karakter).Cobalah online!
Bagaimana?
Saya percaya ini bekerja menggunakan kategorisasi yang sama dari pentominos sebagai solusi APL ngn , meskipun dengan cara yang sedikit berbeda (saya juga tidak tahu APL jadi saya tidak yakin seberapa mirip metode ini di luar kategorisasi).
(Perhatikan bahwa
“æṂ⁾+’Œ?¤+78Ọ
hanya satu byte yang disimpan“XRPTZWUYSVQO”
!)sumber
Bahasa Wolfram (Mathematica) , 103 byte
Mengambil input sebagai daftar daftar karakter.
Cobalah online!
Gagasan utama di sini adalah bahwa untuk setiap karakter dalam input, kami menemukan koordinat tempat terjadinya, mengambil kurtosis, dan menjumlahkan koordinatnya. Ini memberi kita invarian untuk setiap bagian.
(Kurtosis adalah beberapa operator yang sebagian besar tidak relevan dari statistik - kuncinya adalah bahwa itu invarian di bawah terjemahan, sedangkan refleksi dan rotasi mungkin paling banyak mengubah urutan koordinat. Kami menjumlahkan koordinat, sehingga invarian tidak pernah berubah.)
Pokoknya, terlepas dari invarian aneh, solusi ini mirip dengan yang lain: kami mengurutkan karakter dan potongan dengan masing-masing invarian, lalu mengganti setiap karakter dengan karakter yang sesuai
"UPSWZVRTQXYO"
: potongan, diurutkan berdasarkan jumlah kurtosis.Akhirnya,
""<>Riffle[...,"\n"]
adalah kode print-as-a-grid.sumber
Sort@Variance
adaTr@Kurtosis
, dan mungkin lebih banyak orang telah mendengar varian. TetapiTr@Variance
tidak berfungsi karena beberapa pentomino (seperti P dan X) memiliki jumlah x-varians dan y-varians yang sama. Jadi saya mencari dokumentasi yang lebih menarik dari dokumentasi Mathematica.Python 2 , 191 byte
Cobalah online!
Mengambil string multi-line dengan baris baru yang tertinggal dan melakukan enam daftar pemahaman bersarang.
Versi Tidak Serigala
sumber