โจทย์
ดูต้นฉบับ (ภาษาอังกฤษ)ใส่หมายเหตุให้กระดานสี่เหลี่ยมผืนผ้า โดยเครื่องหมายดอกจัน (*) คือระเบิด และจุด (.) คือช่องปลอดภัย สำหรับแต่ละช่องปลอดภัย ให้นับจำนวนระเบิดใน 8 ช่องรอบข้าง (รวมแนวทแยง) แล้วแทนที่ด้วยตัวเลข 1 ถึง 8 ตามจำนวนนั้น หรือคงไว้เป็นจุดถ้าจำนวนนั้นเป็นศูนย์ ระเบิดต้องคงเดิม ช่องนอกกระดานถือว่าไม่มีอยู่
ให้เขียนฟังก์ชัน minesweeper_neighbor_counts(board)
อินพุต
board: แถวของกระดานจากบนลงล่าง; ตัวอักษรในแต่ละแถวเรียงจากซ้ายไปขวา
เอาต์พุต
คืนค่าแถวที่ใส่หมายเหตุแล้ว โดยลำดับและขนาดเท่าเดิม
เงื่อนไข
1 ≤ จำนวนแถว, จำนวนคอลัมน์ ≤ 200 ทุกแถวต้องมีความยาวเท่ากันและไม่เป็นศูนย์ และประกอบด้วยเฉพาะ * และ . เท่านั้น
ตัวอย่าง
อินพุต:
board = ["*..", "...", "..*"]
ผลลัพธ์ที่คาดหวัง:
expected = ["*1.", "121", ".1*"]
อินพุต:
std::vector<std::string> board = {"*..", "...", "..*"};
ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"*1.", "121", ".1*"};
อินพุต:
string[] board = new string[] {"*..", "...", "..*"};
ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"*1.", "121", ".1*"};
คำอธิบาย
ช่องตรงกลางสัมผัสระเบิดสองลูก จึงมีค่าเป็น 2 ช่องขวาบนและซ้ายล่างไม่สัมผัสระเบิดเลย จึงยังเป็นจุด ช่องปลอดภัยอื่น ๆ สัมผัสระเบิดหนึ่งลูก
อินพุต:
board = ["..."]
ผลลัพธ์ที่คาดหวัง:
expected = ["..."]
อินพุต:
std::vector<std::string> board = {"..."};
ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"..."};
อินพุต:
string[] board = new string[] {"..."};
ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"..."};
คำอธิบาย
กระดานแถวเดียวนี้ไม่มีระเบิดเลย ทุกช่องจึงมีค่าเป็นศูนย์และยังคงเป็นจุดทั้งหมด
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน