บทนำ
เขียนตัวแก้ปริศนาHitoriโดยใช้ไบต์น้อยที่สุด
ท้าทาย
งานของคุณคือเขียนตัวแก้สำหรับ Hitori (ひとりคำสำหรับ "คนเดียว" ในภาษาญี่ปุ่นความหมายของชื่อเกมคือ "ตรรกะให้ฉันอยู่คนเดียว") ปริศนาตรรกะ กฎมีดังนี้:
- คุณจะได้รับตาราง n-by-n ของเซลล์แต่ละเซลล์มีจำนวนเต็มระหว่าง 1 ถึง n (รวม)
- เป้าหมายของคุณคือเพื่อให้แน่ใจว่าไม่มีตัวเลขปรากฏมากกว่าหนึ่งครั้งในแต่ละแถวและแต่ละคอลัมน์ของตารางโดยลบตัวเลขออกจากกริดที่กำหนดโดยขึ้นอยู่กับข้อ จำกัด ที่ระบุในกฎสองข้อถัดไป
- คุณไม่สามารถลบตัวเลขสองตัวออกจากเซลล์ที่อยู่ติดกัน (แนวนอนหรือแนวตั้ง) สองเซลล์
- เซลล์ที่มีหมายเลขที่เหลือจะต้องเชื่อมต่อกัน หมายความว่าเซลล์ที่มีตัวเลขสองเซลล์ใด ๆ ที่เหลือสามารถเชื่อมต่อกับเส้นโค้งที่ประกอบด้วยส่วนที่เชื่อมต่อกับจำนวนที่เหลืออยู่ติดกันเท่านั้น (แนวนอนหรือแนวตั้ง) (ขอบคุณที่ @ user202729 สำหรับการชี้ให้เห็นว่าสิ่งนี้หายไป)
ฉันหวังว่ากฎระเบียบจะชัดเจนในตอนนี้ ถ้ามีอะไรที่ไม่ชัดเจนเกี่ยวกับหลักเกณฑ์การตรวจสอบหน้าวิกิพีเดีย
กรณีทดสอบ
เซลล์ที่มีการลบตัวเลขจะถูกแสดงด้วย 0s
Input -> Output
4
2 2 2 4 0 2 0 4
1 4 2 3 -> 1 4 2 3
2 3 2 1 2 3 0 1
3 4 1 2 3 0 1 2
4
4 2 4 3 0 2 4 3
4 1 1 2 -> 4 1 0 2
3 1 2 1 3 0 2 1
4 3 1 3 0 3 1 0
5
1 5 3 1 2 1 5 3 0 2
5 4 1 3 4 5 0 1 3 4
3 4 3 1 5 -> 3 4 0 1 5
4 4 2 3 3 4 0 2 0 3
2 1 5 4 4 2 1 5 4 0
8
4 8 1 6 3 2 5 7 0 8 0 6 3 2 0 7
3 6 7 2 1 6 5 4 3 6 7 2 1 0 5 4
2 3 4 8 2 8 6 1 0 3 4 0 2 8 6 1
4 1 6 5 7 7 3 5 -> 4 1 0 5 7 0 3 0
7 2 3 1 8 5 1 2 7 0 3 0 8 5 1 2
3 5 6 7 3 1 8 4 0 5 6 7 0 1 8 0
6 4 2 3 5 4 7 8 6 0 2 3 5 4 7 8
8 7 1 4 2 3 5 6 8 7 1 4 0 3 0 6
9
8 6 5 6 8 1 2 2 9 8 0 5 6 0 1 2 0 9
5 6 2 4 1 7 9 8 3 5 6 2 4 1 7 9 8 3
5 8 2 5 9 9 8 2 6 0 8 0 5 0 9 0 2 0
9 5 6 6 4 3 8 4 1 9 5 6 0 4 3 8 0 1
1 1 6 3 9 9 5 6 2 -> 0 1 0 3 9 0 5 6 2
1 1 4 7 3 8 3 8 6 1 0 4 7 0 8 3 0 6
3 7 4 1 2 6 4 5 5 3 7 0 1 2 6 4 5 0
3 3 1 9 8 7 7 4 5 0 3 1 9 8 0 7 4 5
2 9 7 5 3 5 9 1 3 2 9 7 0 3 5 0 1 0
กรณีทดสอบเหล่านี้นำมาจากConcept Is Puzzles , PuzzleBooks , Concept Is Puzzles , WikipediaและYoutubeตามลำดับ
รายละเอียด
ไม่จำเป็นต้องกังวลเกี่ยวกับการจัดการข้อยกเว้น
คุณสามารถสันนิษฐานได้ว่าการป้อนข้อมูลเป็นปริศนาที่ถูกต้องเสมอด้วยโซลูชันที่ไม่ซ้ำกันและคุณสามารถใช้ประโยชน์จากสิ่งนี้ในการเขียนรหัสของคุณ
นี่คือรหัส - กอล์ฟจำนวนไบต์ต่ำสุดชนะ
4 <= n <= 9 (16 เดิมเปลี่ยนเป็น 9 ตามคำแนะนำของ Stewie Griffin และบันทึกปัญหาบางอย่างใน IO)
คุณสามารถรับอินพุตและให้เอาต์พุตผ่านรูปแบบมาตรฐานและคุณสามารถเลือกรูปแบบได้ฟรี
คำแนะนำสำหรับรูปแบบผลลัพธ์บางอย่างคือ (แต่คุณไม่ได้ถูก จำกัด ในสิ่งเหล่านี้)
- การแสดงผลกริดสุดท้าย
- เอาท์พุทกริดที่มีหมายเลขที่ถูกลบทั้งหมด
- ส่งออกรายการพิกัดหนึ่งในด้านบน
ตามปกติช่องโหว่เริ่มต้นจะมีผลที่นี่
เกี่ยวข้อง (ได้รับแรงบันดาลใจจากความท้าทายนี้): ตรวจสอบว่าองค์ประกอบทั้งหมดในเมทริกซ์เชื่อมต่อกันหรือไม่
ความท้าทายครั้งสุดท้ายของฉัน: ส่วนขยายของเกมแห่งสามัคคี
4 <= n <= 16
n=9
ผมขอแนะนำให้คุณทั้งสองแสดงความกรณีทดสอบหรือพูดn=16
4 <= n <= 9
เป็นการท้าทายที่ดีตามทาง :)