Tag Archives: dò mìn

[Kata] Dò mìn

Cấp độ: Dễ

Mô tả vấ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 vùng 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 vùng có kích thước 4×4 chứa 2 quả 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 vùng kể trên, chúng ta sẽ có kết quả sau:

*100

2210

1*10

1110

Như bạn thấy, mỗi ô trong vùng có tối đa là 8 ô bao quanh nó.

Đầu vào:

Đầu vào bao gồm một số lượng tùy ý các vùng chứa mìn khác nhau. Dòng đầu tiên của mỗi vùng chứa 2 số nguyên n và m (0<n, m<=100), tương ứng là số hàng và số cột của vùng đó, ở mỗi hàng trong n hàng tiếp theo chứa chính xác m ký tự biểu diễn cho mỗi ô. Mỗi ô an toàn (không chứa mìn) được biểu diễn bằng ký tự “.” (không có dấu nháy kép) và mỗi ô chứa mìn được biểu diễn bằng kí tự “*” (không có dấu nháy kép). Khi dòng đầu tiên của mỗi vùng mà n=m=0 thì sẽ ngừng nhập dữ liệu đầu vào và không xử lý gì thêm nữa.

Đầu ra:

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

Vùng thứ #x:

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

Ví dụ về Đầu vào:

4 4

*…

….

.*..

….

3 5

**…

…..

.*…

0 0

Ví dụ về Đầu ra tương ứng:

Vùng thứ #1:

*100

2210

1*10

1110

Vùng thứ #2:

**100

33200

1*100

Người dịch: Ngô Đăng Thắng

Dịch từ acm.uva.es

Lời bình:

Đã có những phiên bản khác nhau của cocodojo. Các bạn có thể tham khảo, tham gia và đòng góp cho cododojo để tất cả chúng ta ngày càng phát triển phần mềm tốt hơn.