traintracks
Pemecah teka-teki Jalur Kereta Api yang ditulis dalam JavaScript
Di Saturday Times (di Inggris), ada teka-teki bernama Jalur Kereta Api.
Ini adalah kotak persegi berukuran 8x8. Setiap baris dan kolom memiliki nomor yang memberitahukan Anda berapa banyak bagian yang ada di baris atau kolom tersebut.
Ada juga penanda A
dan B
sebagai awal dan akhir lintasan. Mungkin ada satu atau lebih bagian lain yang sudah ada di grid.
Tugas Anda adalah menggambar lintasan hanya dengan menggunakan potongan staight atau sudut 90 derajat dari A
ke B
sehingga jumlah potongan yang benar ada di setiap baris dan kolom kisi.
Berikut contoh teka-tekinya:
Kami mengkodekan teka-teki sebagai berikut: <A><B>-<cols>-<rows>-<pieces>
.
Teka-teki di atas adalah 54-14134544-54234341-48EW.53NE
A
dan B
adalah angka 1-8 yang menunjukkan seberapa jauh sepanjang grid (dari kiri bawah) titik awal (sejauh mana ke atas) dan selesai (sejauh ke kanan). Dalam contoh ini A
adalah 5
dan B
adalah 4
cols
adalah daftar 8 angka 1-8 yang menunjukkan batasan pada kolom. angka dibaca dari kiri ke kanan (sepanjang bagian atas puzzle seperti gambar).
rows
sama untuk barisnya, kali ini dari atas ke bawah, sehingga lebih mudah untuk mengikuti teka-teki sebenarnya.
pieces
adalah daftar potongan awal (tidak termasuk awal dan akhir) yang dipisahkan oleh sebuah titik .
dan <rol><col><type>
di mana type adalah cara yang ditunjukkan oleh potongan tersebut. Tipe yang valid adalah NS
(vertikal) EW
(horizontal) NE
berbentuk L, NW
mundur-L, SE
terbalik-L, SW
diputar 180 derajat L.
Ini jauh lebih mudah untuk diketik daripada kedengarannya. Namun jika ini digunakan di situs web, maka UI yang lebih intuitif dapat membuat teka-teki dan menghasilkan pengkodean.
Lagi pula, setelah kita memiliki pengkodeannya, kita dapat memanggil alat traintracks
:
$ traintracks 54-14134544-54234341-48EW.53NE
Puzzle: 54-14343245-14134544-48EW.53NE
1 4 1 3 4 5 4 4 1 4 1 3 4 5 4 4
┌─┬─┬─┬─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┬─┬─┬─┐
8 │ │ │ │━│ │ │ │ │ 5 8 │ │┏│━│━│━│┓│ │ │ 5
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
7 │ │ │ │ │ │ │ │ │ 4 7 │ │┃│ │ │ │┗│━│┓│ 4
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
6 │ │ │ │ │ │ │ │ │ 2 6 │ │┃│ │ │ │ │ │┃│ 2
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
A │━│ │ │ │ │ │ │ │ 3 A │━│┛│ │ │ │ │ │┃│ 3
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
4 │ │ │ │ │ │ │ │ │ 4 4 │ │ │ │ │┏│━│━│┛│ 4
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
3 │ │ │ │ │┗│ │ │ │ 3 3 │ │ │ │ │┗│━│┓│ │ 3
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
2 │ │ │ │ │ │ │ │ │ 4 2 │ │ │ │┏│━│━│┛│ │ 4
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
1 │ │ │ │┃│ │ │ │ │ 1 1 │ │ │ │┃│ │ │ │ │ 1
└─┴─┴─┴─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┴─┴─┴─┘
1 2 3 B 5 6 7 8 1 2 3 B 5 6 7 8
Solved: true - Steps: 323
Dan Anda dapat melihat algoritma bekerja dengan menambahkan --animate
. Lihat video asciinema:
Saya melihat AR Sudoku Solver ini. Ada karya seni sebelumnya di lapangan, tapi ini yang pertama kali saya lihat. Bagaimanapun, saya menyukai teka-teki kecil ini dan bertanya-tanya apakah a) saya dapat melakukan hal yang sama, dan b) menjadikannya sepenuhnya berbasis web.
Jadi peta jalannya adalah: