Cấp độ của Kata: Dễ

Mô tả bài toán

Bạn đã từng chơi Minesweeper chưa? Đó là một game nhỏ rất thú vị được cung cấp kèm theo một hệ điều hành mà tôi cũng không còn nhớ nổi tên nữa. Mục tiêu của trò chơi là tìm ra tất cả các quả mìn trong một khu vực có kích thước M x N. Để giúp bạn, trò chơi cho hiển thị ở mỗi ô vuông số mìn ở các ô liền kề. Ví dụ, một khu vực có kích thước 4 × 4 chứa 2 quả mìn (mìn được biểu diễn bằng kí tự *) như sau:

Nếu chúng ta muốn thể hiện các con số để gợi ý số mìn cho khu vực trên, chúng ta sẽ có kết quả sau:

Bạn cần viết một chương trình sử dụng đầu vào như sau:

Đầu vào cho phép tùy chọn số lượng bãi mìn và kích thước vùng chứa mìn (bãi mìn).

Dòng đầu tiên nhập 2 số nguyên n và m (0<n, m<=100), tương ứng là chiều dài và chiều rộng (số hàng, số cột) của bãi mìn.

Căn cứ vào giá trị của n, nhập mỗi hàng (trong số n hàng) m ký tự biểu diễn cho mỗi ô của bãi mìn (n x m). Ô an toàn (không chứa mìn) nhập ký tự “.” (dấu chấm) và ô chứa mìn nhập vào kí tự “*” (dấu hoa thị).

Chương trình sẽ ngừng nhập dữ liệu đầu vào và không xử lý gì thêm nếu nhập giá trị 0 cho n và m.

Sau khi nhập dữ liệu xong chương trình sẽ cho kết quả đầu ra như sau.

Với mỗi bãi mìn, đầu tiên bạn sẽ in ra dòng thông báo như sau:

Trong đó x là số thứ tự của bãi mìn (bắt đầu từ 1, số lượng bãi mìn phụ thuộc dữ liệu đầu vào). Và n dòng tiếp theo các kí tự “.” được thay thế bằng số lượng mìn xung quanh ô đó. Các bãi mìn phân cách nhau bằng một dòng trắng.

Ví dụ:

Đầu vào:

Đầu ra:

Nguồn Kata: http://codingdojo.org/kata/Minesweeper/


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.