Chris, pecandu teka-teki silang samar, memiliki satu set algoritma untuk urutan di mana dia memecahkannya.
Kami akan menggunakan gambar di atas sebagai panduan.
- Chris selalu memulai dengan petunjuk pertama, dalam hal ini 1 Across. Chris adalah penggila teka-teki silang yang cakap, sehingga diasumsikan bahwa ia akan selalu tahu jawaban atas petunjuk yang sedang dikerjakannya.
- Setelah Chris menyelesaikan suatu petunjuk, ia akan memeriksa semua petunjuk yang berdampingan dengan yang telah ia selesaikan (dalam kasus pertama, 1 Down, 2 Down, dan 3 Down) dan kemudian melengkapi petunjuk itu dengan angka terendah. Jika tidak ada petunjuk yang bersebelahan, ia akan pergi ke langkah 3.
- Jika petunjuknya sedemikian sehingga nomor berikutnya (seperti yang dijelaskan dalam Langkah 3) memiliki petunjuk lintas dan petunjuk turun, ia akan menyelesaikan petunjuk pertama (100% kepastian, ini berbatasan dengan OCD!)
- Jika tidak ada petunjuk yang berdampingan, ia akan pergi ke petunjuk yang tersedia berikutnya yang nomor berikutnya (melintasi atau ke bawah)
- Ulangi dari Langkah 2 sampai semua petunjuk selesai.
Dan ini adalah saatnya untuk Anda, coders sayang. Anda telah ditugaskan untuk membuat kode yang dapat, dengan disediakan template teka-teki silang, memberikan output yang menggambarkan urutan petunjuk berdasarkan algoritma Chris untuk menyelesaikannya.
Kode akan menerima input dari template teka-teki silang, dalam bentuk .
mewakili kotak putih dan #
mewakili kotak hitam.
Contoh :
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Input dapat melalui: a) file yang membaca representasi dari teka-teki silang, atau b) dengan input baris dari setiap baris teka-teki silang, diikuti oleh \n
, dengan \n
EOF kedua yang mengindikasikan.
Dan kemudian akan menentukan metode dimana Chris akan menyelesaikannya sesuai dengan algoritma di atas yang telah dia jelaskan.
Output harus dalam format serangkaian instruksi yang dipisahkan koma dalam bentuk n(A|D)
, di mana n
nomor petunjuk diikuti oleh A
untuk seluruh atau D
untuk ke bawah.
Jadi pada contoh di atas (baik dari gambar, dan contoh template, yang merupakan satu dan sama), hasilnya adalah:
1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
Kode terpendek menang ...
Pengujian
Anda harus memberikan kode, jumlah byte, dan salah satu dari empat kasus uji yang diwakili dalam .
dan #
format, serta output yang dihasilkan dari input ini. Ada empat kasus uji, tiga di bawah ini serta contoh template di atas.
Contoh uji kasus:
Test Case 1
.....#
.#.#.#
...#..
.#.#.#
.....#
##.#..
Keluaran: 1A,1D,2D,3D,4A,5A,6A,7A
Test Case 2
.....#..
.#.##..#
.#....#.
...##.#.
.####...
......##
Keluaran: 1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A
Test Case 3
.........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..
Keluaran: 1A,2D,3D,4D,5D,7A,8A,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A
Test Case 4
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Keluaran: 1A,1D,2D,3D,9A,10A,4D,4A,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
Semoga berhasil!
17A
di akhir. Juga yang keempat4A
tepat setelahnya4D
.Jawaban:
GolfScript, 154 karakter
Masukan harus diberikan di STDIN. Contoh-contoh menghasilkan hasil berikut (periksa online ):
sumber
votes++
Mathematica
806477(Tampaknya ada kesalahan dalam pemesanan langkah-langkah solusi. Saya melihat ini.)
Golf
Fungsi
q
menemukan urutan solusi teka-teki silang.Tidak disatukan
board
menampilkan teka-teki silang. Kode tidak termasuk dalam jumlah karakter. Beberapa sub fungsi dariq
dipinjam di sini.TestCases
1
2
3
4
sumber
3A
seharusnya tidak boleh tepat setelah2D
karena belum ada petunjuk. Juga solusi lain menunjukkan efek ini.5A
memiliki petunjuk dan karena itu harus disukai3A
.ToString
dua kali