Bài 37.15. Mô Phỏng Trò Chơi Minesweeper - [Độ khó: Siêu khó]
Bài 37.15. Mô Phỏng Trò Chơi Minesweeper - [Độ khó: Siêu khó]
Bạn đang viết một phiên bản đơn giản của trò chơi Minesweeper. Trên một lưới hình chữ nhật, một số ô chứa mìn ('') và các ô còn lại là ô trống ('.'). Nhiệm vụ của bạn là, đối với mỗi ô trống, đếm số lượng mìn xung quanh nó (tám ô kề cạnh: trên, dưới, trái, phải, và bốn đường chéo). Kết quả sẽ là một lưới mới với các ô mìn giữ nguyên ('') và các ô trống được thay thế bằng số lượng mìn kề cạnh.
INPUT FORMAT
Dòng đầu tiên chứa hai số nguyên R
và C
(1 <= R, C <= 100), lần lượt là số hàng và số cột của lưới.
R
dòng tiếp theo, mỗi dòng chứa một chuỗi độ dài C
, biểu diễn một hàng của lưới Minesweeper. Mỗi ký tự là '*' (mìn) hoặc '.' (ô trống).
OUTPUT FORMAT
In ra R
dòng, mỗi dòng chứa C
ký tự, là lưới Minesweeper đã được xử lý.
Ví dụ:
Input:
3 3
*..
...
.*.
Output:
*10
2*2
1*1
Giải thích: Lưới ban đầu:
* . .
. . .
. * .
Ta duyệt qua từng ô và tính toán:
- Ô (0,0) là mìn, giữ nguyên '*'.
- Ô (0,1) là trống. Các ô kề cạnh là: (0,0)*, (1,0). (0,2). (1,1). Nó chỉ có 1 mìn kề cạnh (ở (0,0)). Vậy là '1'.
- Ô (0,2) là trống. Các ô kề cạnh là: (0,1). (1,1). (1,2). Nó không có mìn kề cạnh. Vậy là '0'.
- Ô (1,0) là trống. Các ô kề cạnh là: (0,0), (0,1), (1,1), (2,0), (2,1). Nó có 2 mìn kề cạnh. Vậy là '2'.
- Ô (1,1) là trống. Các ô kề cạnh là: (0,0), (0,1), (0,2), (1,0), (1,2), (2,0), (2,1), (2,2). Nó có 2 mìn kề cạnh. Vậy là '2'.
- Ô (1,2) là trống. Các ô kề cạnh là: (0,1), (0,2), (1,1), (2,1)*, (2,2). Nó có 1 mìn kề cạnh. Vậy là '1'.
- Ô (2,0) là trống. Các ô kề cạnh là: (1,0), (1,1), (2,1)*. Nó có 1 mìn kề cạnh. Vậy là '1'.
- Ô (2,1) là mìn, giữ nguyên '*'.
- Ô (2,2) là trống. Các ô kề cạnh là: (1,1), (1,2), (2,1)*. Nó có 1 mìn kề cạnh. Vậy là '1'. Kết quả: ```
- 1 0 2 2 1 1 * 1 ```
Comments