Di beberapa surat kabar Inggris ada permainan yang dikenal sebagai Hidato . Ini agak mirip dengan Sudoku , meskipun bukannya memiliki 1-9 dalam garis dan blok, ini tentang menempatkan angka sedemikian rupa sehingga mereka terhubung secara berurutan dari 01
yang paling tinggi, sehingga mereka semua menyentuh secara horizontal, diagonal atau vertikal. .
Input akan berisi beberapa baris yang dipisahkan oleh \n
, berisi blok yang dipisahkan oleh spasi, yang dapat Anda anggap lebar dua karakter. Setiap blok akan berupa angka, ruang kosong untuk diisi (ditunjukkan oleh --
), atau dinding yang tidak dapat memiliki angka dalam ( XX
).
Output Anda harus cocok dengan yang disediakan meskipun dengan blok kosong yang disediakan dengan angka. Perhatikan bahwa mungkin tidak ada yang unik, atau bahkan keberadaan, solusi - beberapa dapat menghasilkan beberapa karena ambiguitas mereka, seperti Sudoku, dan beberapa mungkin benar-benar tidak terpecahkan, dalam hal ini Anda harus memberikan output palsu , tetapi Anda dapat berasumsi input diformat seperti di bawah ini.
Gunakan tajuk standar Language: XX bytes
. Selamat bermain golf!
Contohnya
Input 01 XX 03
, 01 -- 04
, 01 --
, dll semua harus kembali sesuatu falsey .
Memasukkan:
01 -- --
-- XX 05
Keluaran:
01 03 04
02 XX 05
Memasukkan:
-- 33 35 -- -- XX XX XX
-- -- 24 22 -- XX XX XX
-- -- -- 21 -- -- XX XX
-- 26 -- 13 40 11 XX XX
27 -- -- -- 09 -- 01 XX
XX XX -- -- 18 -- -- XX
XX XX XX XX -- 07 -- --
XX XX XX XX XX XX 05 --
Keluaran:
32 33 35 36 37 XX XX XX
31 34 24 22 38 XX XX XX
30 25 23 21 12 39 XX XX
29 26 20 13 40 11 XX XX
27 28 14 19 09 10 01 XX
XX XX 15 16 18 08 02 XX
XX XX XX XX 17 07 06 03
XX XX XX XX XX XX 05 04
Memasukkan:
XX XX XX XX -- 53 XX XX XX XX
XX XX XX XX -- -- XX XX XX XX
XX XX 56 -- -- -- 30 -- XX XX
XX XX -- -- -- -- -- -- XX XX
XX -- -- 20 22 -- -- -- -- XX
XX 13 -- 23 47 -- 41 -- 34 XX
-- -- 11 18 -- -- -- 42 35 37
-- -- -- -- 05 03 01 -- -- --
XX XX XX XX -- -- XX XX XX XX
XX XX XX XX 07 -- XX XX XX XX
Keluaran:
XX XX XX XX 52 53 XX XX XX XX
XX XX XX XX 54 51 XX XX XX XX
XX XX 56 55 28 50 30 31 XX XX
XX XX 26 27 21 29 49 32 XX XX
XX 25 24 20 22 48 45 44 33 XX
XX 13 19 23 47 46 41 43 34 XX
14 12 11 18 04 02 40 42 35 37
15 16 17 10 05 03 01 39 38 36
XX XX XX XX 09 06 XX XX XX XX
XX XX XX XX 07 08 XX XX XX XX
sumber
-1
menjadi tembok, dan0
menjadi kosong? Itu akan membuatnya lebih mudah untuk fokus pada tantangan sebenarnya dari teka-teki, dan kemudian tidak ada kompleksitas nomor padding dengan nol atau string parsing.Jawaban:
JavaScript (Node.js) , 482 byte
Ini adalah solusi brute-force, itu dimulai pada
01
dan memeriksa setiap sel tetangga memeriksa sel kosong (--
) atau nomor yang diinginkan dan mengikuti jalan menuju penyelesaian atau ketidakmungkinan. Jika nomor yang diinginkan ada dan bukan tetangga, pintas solusi ini. Butuh beberapa detik untuk grid terbesar.Ini mungkin tidak terlalu menarik, tetapi saya pikir saya akan mencoba membuat solusi sebelum melihat jawaban yang terkait pada Rosetta Code dan saya menikmati menangani tantangan yang sedikit lebih sulit!
Temukan semua solusi saat ada banyak . Tubuh adalah fungsi yang menerima array dua dimensi dan footer memproses input ke format yang diinginkan, dan mengembalikan hasilnya ke format yang diinginkan juga. Senang memberikan lebih banyak informasi (dan implementasi yang kurang golf jika ada minat).
Cobalah online!
sumber