traintracks
ตัวแก้ปริศนา Train Tracks ที่เขียนด้วย JavaScript
ใน Saturday Times (ในสหราชอาณาจักร) มีปริศนาชื่อ Train Tracks
เป็นตารางสี่เหลี่ยมขนาด 8x8 แต่ละแถวและคอลัมน์จะมีตัวเลขที่บอกคุณว่ามีกี่ชิ้นในแถวหรือคอลัมน์นั้น
นอกจากนี้ยังมีเครื่องหมายสำหรับ A
และ B
ที่จุดเริ่มต้นและจุดสิ้นสุดของแทร็กด้วย อาจมีชิ้นส่วนอื่นอย่างน้อยหนึ่งชิ้นอยู่ในตารางอยู่แล้ว
งานของคุณคือการวาดแทร็กโดยใช้ชิ้นส่วนตรงหรือมุม 90 องศาจาก A
ถึง B
เพื่อให้มีจำนวนชิ้นส่วนที่ถูกต้องในแต่ละแถวและคอลัมน์ของตาราง
นี่คือตัวอย่างปริศนา:
เราเข้ารหัสปริศนาดังนี้: <A><B>-<cols>-<rows>-<pieces>
ปริศนาข้างบนคือ 54-14134544-54234341-48EW.53NE
A
และ B
คือหมายเลข 1-8 ที่ระบุว่าระยะทางตามตาราง (จากซ้ายล่าง) จุดเริ่มต้น (ขึ้นไปไกลแค่ไหน) และสิ้นสุด (ขวาสุดเท่าไร) ในตัวอย่างนี้ A
คือ 5
และ B
คือ 4
cols
คือรายการตัวเลข 8 ตัว 1-8 ที่ระบุข้อจำกัดในคอลัมน์ ตัวเลขอ่านจากซ้ายไปขวา (ตามด้านบนของปริศนาตามภาพ)
rows
จะเหมือนกัน คราวนี้จากบนลงล่าง ทำให้ง่ายต่อการติดตามจากปริศนาจริง
pieces
คือรายการชิ้นส่วนเริ่มต้น (ไม่นับจุดเริ่มต้นและจุดสิ้นสุด) คั่นด้วย .
และ <rol><col><type>
โดยที่ type เป็นวิธีที่ชิ้นส่วนชี้ ประเภทที่ถูกต้องคือ NS
(แนวตั้ง) EW
(แนวนอน) NE
รูปตัว L, NW
ถอยหลัง-L, SE
กลับหัว-L, SW
หมุน 180 องศา L
การพิมพ์ทำได้ง่ายกว่าที่คิดมาก แต่หากใช้สิ่งนี้บนเว็บไซต์ UI ที่ใช้งานง่ายยิ่งขึ้นก็สามารถสร้างปริศนาและสร้างการเข้ารหัสได้
อย่างไรก็ตาม เมื่อเรามีการเข้ารหัสแล้ว เราก็สามารถเรียกใช้เครื่องมือ 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
และคุณสามารถดูการทำงานของอัลกอริทึมได้โดยเพิ่ม --animate
ดูวิดีโอ asciinema:
ฉันเห็น AR Sudoku Solver นี้ มีงานศิลปะมาก่อนในสาขานี้ แต่นี่เป็นครั้งแรกที่ฉันเห็น อย่างไรก็ตาม ฉันชอบปริศนาเล็กๆ นี้และสงสัยว่า a) ฉันสามารถทำแบบเดียวกันได้หรือไม่ และ b) ทำให้เป็นแบบเว็บอย่างสมบูรณ์
ดังนั้นแผนงานคือ: