Fillomino adalah teka-teki di mana Anda mengisi kotak dengan polyomino . Setiap polyomino adalah area sel yang berdekatan. Representasi grid menunjukkan ukuran polyomino yang menutupi setiap sel. Sebagai contoh, sebuah pentomino (5) akan ditampilkan sebagai 5
masing-masing dari lima sel yang berdekatan (lihat di bawah). Dua polyomino dengan ukuran yang sama tidak dapat berbagi batas, tetapi dapat berbatasan secara diagonal.
Untuk setiap puzzle, Anda mulai dengan sejumlah givens dan harus mengisi sel yang tersisa. Contoh teka-teki dan solusi mudah:
Tugas Anda: Diberikan puzzle persegi, pecahkan dan keluarkan jawabannya. Input dapat melalui stdin, argumen baris perintah tunggal, atau file teks. Input akan diberikan sebagai integer n
, diikuti oleh masing-masing n
baris n
digit. Sel kosong akan diberikan sebagai titik ( .
). Untuk contoh puzzle di atas, itu akan menjadi:
5
3..66
5.4.6
.54.6
.1.6.
..312
Output adalah teka-teki yang dipecahkan, diberikan pada n
garis n
digit, ke konsol atau file teks:
33366
55446
55466
51462
33312
Jika puzzle tidak valid, hasilkan 0
. Teka-teki bisa tidak valid jika inputnya salah atau tidak ada solusi. Jika ada beberapa solusi, Anda dapat mengeluarkan salah satu atau semuanya.
Karena setiap sel diwakili oleh satu digit, semua teka-teki akan terdiri dari ukuran poliomino 9
dan di bawahnya saja. Jika tidak mungkin diselesaikan tanpa poliomino yang lebih besar, anggap itu tidak valid.
Jawaban yang valid akan memecahkan setiap teka-teki yang diberikan, bukan hanya menghasilkan solusi untuk menguji kasus. Tidak ada sumber daya eksternal, baik online maupun lokal. Jika kebetulan ada bahasa dengan fungsi penyelesaian fillomino bawaan, Anda tidak dapat menggunakannya. Singkatnya, bermain adil .
Kasus cobaan:
Memasukkan:
9
..21.3..5
.5...5..5
.1.44.334
...53.4..
2.3.3..5.
1.15.5.15
..45..1..
.24.53.53
....2....
Output (kemungkinan solusi):
322133315
355445555
315443334
235531444
233135551
141535515
344553155
324553553
321223133
Ingatlah bahwa beberapa polyomino tidak memiliki angka, dan beberapa memiliki lebih dari satu. Ada tidak hubungan satu-ke-satu antara jumlah kodrat dan jumlah polyominoes.
Skor adalah kode-golf standar, ukuran program dalam byte.
sumber
Jawaban:
4882 karakter - Jawa
Bukan solusi yang sangat golf (yaitu 4800 karakter adalah lotttttttttttt). Bisa lebih sedikit golf karena 1 atau 2 debug printlines masih ada di sana. Saya pikir saya dapat mengurangi sedikit masih adil dalam hal kode tidak berguna / dioptimalkan.
Belum pernah melihat Polyominoes sebelumnya, saya membaca tentang apa itu dan tanpa melihat pemecahan alrogitma hanya membuat saya sendiri (sangat lambat).
Pada dasarnya, banyak menggunakan rekursi ... Menemukan Polyomino yang tidak lengkap, mencoba untuk menyelesaikannya. Menemukan ruang kosong, Loop 1-9 melalui semua kotak di saku, menetapkan saku ke nilai itu. Jika kantungnya lengkap, ia mencoba mencari kantung lain, lalu ulangi sampai selesai. Saya tidak dapat membuatnya berfungsi untuk kisi ukuran 9 ... Saya memiliki setidaknya satu pengoptimalan yang dapat membuatnya berfungsi dalam waktu yang masuk akal untuk 9. Mungkin mencoba untuk segera menerapkannya.
sumber