Tulis sebuah program untuk menghasilkan file yang berisi kisi silang yang dapat dicetak pengguna dan kerjakan puzzle.
Memasukkan
Nama file yang mewakili file kotak silang dan secara opsional nama file kedua yang mewakili file penomoran silang. Input harus diterima dengan cara konvensional untuk lingkungan pemrograman Anda: argumen baris perintah, input standar, formulir web, dll.
Anda dapat mengasumsikan bahwa teka - teki silang telah divalidasi , dan jika menggunakan file penomoran yang sesuai dengan kisi yang disediakan .
Format file kisi: Baris pertama terdiri dari dua konstanta integer yang dipisahkan spasi-putih M dan N. Berikut adalah garis M yang masing-masing terdiri dari N karakter (ditambah baris baru) dipilih [#A-Z ]
. Karakter-karakter ini diinterpretasikan sedemikian rupa sehingga '#'
mengindikasikan kotak yang diblokir, ' '
kotak terbuka dalam teka-teki tanpa isi yang diketahui dan huruf apa pun berupa kotak terbuka yang berisi huruf itu.
Format file penomoran Baris yang dimulai dengan '#' diabaikan dan dapat digunakan untuk komentar. Semua jalur lain mengandung tab terpisah triplet i
, m
, n
di mana i
merupakan nomor yang akan dicetak di grid, dan m
dan n
mewakili baris dan kolom dari alun-alun di mana ia harus dicetak. Jumlah baris dan kolom dimulai dari 1.
Keluaran
Outputnya akan berupa file yang dapat dicetak pengguna dan menggunakan teka-teki silang. ASCII, postscript, pdf, png, dan format wajar lainnya akan diterima, tetapi semua harus mematuhi aturan-aturan ini:
- Harus ada aturan di seluruh teka-teki dan di antara setiap pasang kotak.
- Kotak yang diblokir harus diisi dengan gelap.
- Dalam kotak permainan yang mewakili awal dari petunjuk bernomor (melintasi atau bawah) harus disediakan dengan nomor di sudut kiri atas kotak, sambil membiarkan sebagian besar kotak kosong untuk permainan untuk menulis. Perhatikan bahwa kotak khas diterbitkan di surat kabar akan memiliki puluhan petunjuk dan mungkin memiliki lebih dari 100.
Outputnya akan dari grid sendiri, tanpa daftar petunjuk.
Output harus dikirim ke tujuan konvensional (file yang namanya berasal dari nama file input, diproduksi sebagai halaman web, dll.)
Kasus cobaan
Diberikan input dari
5 5
# ##
#
#
#
## #
sudut awal dari output ASCII yang dapat diterima mungkin terlihat seperti ini
+-----+-----+-----+---
|#####|1 |2 |###
|#####| | |###
|#####| | |###
+-----+-----+-----+---
|#####|3 | |4
|#####| | |
|#####| | |
+-----+-----+-----+---
|6 | |#####|
| | |#####|
Mereka yang menggunakan format grafis harus mengambil inspirasi dari sumber cetak yang biasa.
Skema penomoran
Kisi bernomor yang benar memiliki properti berikut:
- Penomoran dimulai pada 1.
- Tidak ada kolom atau rentang kotak terbuka yang tidak dinomori.
- Angka akan ditemui dalam penghitungan urutan dengan memindai dari baris atas ke bawah mengambil setiap baris dari kiri ke kanan.
Ke samping
Ini adalah yang ketiga dari beberapa tantangan terkait silang. Saya berencana untuk menggunakan serangkaian file-format yang konsisten di seluruh dan untuk membangun seperangkat utilitas terkait silang yang terhormat dalam prosesnya.
Tantangan sebelumnya dalam seri ini: