Minesweeperเป็นเกมตัวต่อยอดนิยมที่คุณต้องค้นหาว่าแผ่นไหนเป็น "เหมือง" โดยไม่ต้องคลิกบนแผ่นเหล่านั้น แต่คุณคลิกที่ไพ่ใกล้เคียงเพื่อเปิดเผยจำนวนเหมืองที่อยู่ติดกัน ข้อเสียอย่างหนึ่งเกี่ยวกับเกมนี้คือมันเป็นไปได้ที่จะจบลงในสถานการณ์ที่มีหลายคำตอบที่ถูกต้องและคุณอาจเดาได้ ตัวอย่างเช่นใช้กระดานต่อไปนี้:
1110
2*31
3*??
2*4?
112?
ในรูปแบบนี้ตัวเลขหมายถึงจำนวนเหมืองที่อยู่ติดกันและเป็น*
ตัวแทนของเหมืองที่รู้จักและ "?" แสดงถึงเหมืองที่มีศักยภาพ อัปมงคลเกี่ยวกับปริศนานี้โดยเฉพาะอย่างยิ่งก็คือว่ามีสี่ที่แตกต่างและถูกต้องแก้ปัญหาที่อาจเกิดขึ้น:
1110 1110 1110 1110
2*31 2*31 2*31 2*31
3*4* 3*5* 3**2 3**1
2*42 2*4* 2*4* 2*42
112* 1121 1121 112*
หมายความว่าบอร์ดไม่สามารถแก้ไขได้ นี่คือตัวอย่างของบอร์ดที่แก้ไขได้ :
1121
1??*
12?*
0122
บอร์ดนี้แก้ไขได้เนื่องจากมีวิธีแก้ปัญหาที่ใช้ได้เพียงวิธีเดียวเท่านั้น
1121
1*4*
12**
0122
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้บอร์ดกวาดทุ่นระเบิดที่ถูกต้องและพิจารณาว่าสามารถแก้ไขได้หรือไม่ โดย "เรือกวาดทุ่นระเบิดที่ถูกต้อง" ฉันหมายความว่าอินพุตจะเป็นรูปสี่เหลี่ยมเสมอมีวิธีแก้ปัญหาอย่างน้อยหนึ่งรายการและไม่มีอักขระที่ไม่ถูกต้อง
อินพุตของคุณอาจเป็นอาร์เรย์ของอักขระอาร์เรย์ของสตริงสตริงที่มีการขึ้นบรรทัดใหม่ ฯลฯ ผลลัพธ์จะต้องเป็นค่าจริงหากมีการแก้ไขและค่าเท็จถ้าไม่ ผมไม่ได้กังวลอย่างมากเกี่ยวกับผลการดำเนินงาน แต่วิธีการแก้ปัญหาของคุณจะต้องในทางทฤษฎีการทำงานสำหรับการป้อนข้อมูลที่มีขนาดใด
ตามปกติจะใช้ช่องโหว่มาตรฐานและวิธีแก้ปัญหาที่สั้นที่สุดในหน่วยไบต์!
ตัวอย่าง:
ตัวอย่างต่อไปนี้สามารถแก้ไขได้ทั้งหมด:
1121
1??*
12?*
0122
1110
1???
1110
0000
1110
3???
??20
*310
****
****
****
****
0000
0000
0000
0000
1100
*100
2321
??*2
13*2
1221
1*10
1110
1121
2*??
2*31
2220
1*10
ตัวอย่างต่อไปนี้ไม่สามารถแก้ไขได้ทั้งหมด:
1110
2*31
3*??
2*4?
112?
01??11*211
12??2323*1
1*33*2*210
12?2122321
13?3101**1
1***101221
1***
3*52
2*31
12??
02??
01??
00000111
000012*1
00001*21
22101110
**100111
?31123*1
?311**31
**113*20
2?
ไม่มีวิธีแก้ปัญหาซึ่งหมายความว่ามันไม่สามารถมาจากเกม Minesweeper จริงดังนั้นจึงไม่ถือว่าเป็น "คณะกรรมการ Minesweeper" ... ใช่ไหม?)