Minesweeperเป็นเกมคอมพิวเตอร์ยอดนิยมที่คุณอาจเสียเวลาในการเล่นซึ่งคุณพยายามที่จะเปิดเผยเซลล์ที่ทำเหมืองในตารางสี่เหลี่ยมโดยคำแนะนำของจำนวนเหมืองที่อยู่ใกล้เคียงแต่ละเซลล์ที่ไม่ใช่ของเหมืองมี และในกรณีที่คุณไม่ได้เล่นมันทำที่นี่
ข้อเท็จจริงทางคณิตศาสตร์ที่ดีเกี่ยวกับ Minesweeper grid (aka board) คือ:
กระดานและส่วนประกอบของมันมีจำนวนเหมืองทั้งหมดเท่ากัน ( พิสูจน์ )
กล่าวคือถ้าคุณมีตาราง Minesweeper ที่เปิดเผยทั้งหมดผลรวมจำนวนทั้งหมดบนกริดนั้นคือผลรวมของเหมืองจะเท่ากับผลรวมทั้งหมดของส่วนเสริมของกริดซึ่งเป็นตารางที่ทุก ๆ เหมืองถูกแทนที่ กับไม่ใช่ของฉันและทุกไม่ใช่ของฉันถูกแทนที่ด้วยของฉัน
ตัวอย่างเช่นสำหรับตาราง Minesweeper
**1..
34321
*2**1
จำนวนเหมืองทั้งหมดคือ 1 + 3 + 4 + 3 + 2 + 1 + 2 + 1 = 17
ส่วนประกอบของกริดคือ
24***
*****
3*44*
ซึ่งมีจำนวนของฉันทั้งหมด 2 + 4 + 3 + 4 + 4 = 17 อีกครั้ง
เขียนโปรแกรมที่ใช้ในตาราง Minesweeper ตามอำเภอใจในรูปแบบข้อความที่*
แสดงถึงการขุดและ1
ผ่าน8
แสดงจำนวนเหมืองที่อยู่ติดกับเซลล์ที่ไม่ใช่ของฉัน คุณสามารถใช้.
หรือ0
หรือ
(ช่องว่าง) เพื่อแสดงเซลล์ที่ไม่มีเพื่อนบ้านของฉันและตัวเลือกของคุณ คุณสามารถสันนิษฐานได้ว่ากริดอินพุตจะถูกทำเครื่องหมายอย่างถูกต้องนั่นคือเซลล์ที่ไม่ใช่ของฉันจะแสดงจำนวนทั้งหมดของเหมืองที่อยู่ติดกับ orthogonally หรือแนวทแยงมุมในทันที
โปรแกรมของคุณจะต้องพิมพ์สมบูรณ์ของตารางในรูปแบบเดียวกัน (โดยใช้แบบเดียวกัน.
, 0
หรือ
ตามที่คุณคาดว่าในการป้อนข้อมูล)
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
- แทนที่จะเป็นโปรแกรมคุณสามารถเขียนฟังก์ชั่นที่ใช้กริดอินพุตเป็นสตริงและพิมพ์หรือส่งคืนกริดคอมโพเน้นท์
- บรรทัดใหม่ต่อท้ายในอินพุตหรือเอาต์พุตนั้นใช้ได้ แต่ไม่ควรมีอักขระอื่นนอกเหนือจากที่สร้างกริด
- คุณสามารถสมมติว่า 1 × 1 กริดจะเป็นอินพุตที่เล็กที่สุด
กรณีทดสอบ
อินพุตและเอาต์พุตทั้งหมดสามารถสลับเป็นส่วนเสริมของส่วนเติมเต็มเป็นตารางดั้งเดิม กริดสามารถหมุนได้เช่นกันสำหรับกรณีทดสอบเพิ่มเติม
การป้อนข้อมูล:
111
1*1
111
เอาท์พุท:
***
*8*
***
การป้อนข้อมูล:
.
เอาท์พุท:
*
การป้อนข้อมูล:
*11*1.1**1...1***1.....1*****1..........
เอาท์พุท:
1**2***11*****1.1*******1...1***********
อินพุต: ( ตัดตัวอย่างปม )
**212*32
333*33**
1*22*333
222222*1
*33*2232
2**22*2*
เอาท์พุท:
24***4**
***7**64
*8**7***
******8*
4**7****
*33**5*3
?
) บนบรรทัดหลังบรรทัดสุดท้ายของบอร์ดที่ยอมรับได้หรือฉันสามารถรับจำนวนบรรทัดอินพุตผ่านบรรทัดรับคำสั่งได้หรือไม่