Trò chơi video Minecraft là tất cả về việc đặt và loại bỏ các loại khối khác nhau trong mạng số nguyên 3D tạo nên thế giới ảo. Mỗi điểm mạng có thể chứa chính xác một khối hoặc trống (một khối " không khí " chính thức). Trong thử thách này, chúng ta sẽ chỉ quan tâm đến một mặt phẳng 2D ngang của thế giới 3D và một loại khối: rương .
Rương cho người chơi lưu trữ vật phẩm. Khi hai rương kề nhau trực giao trong cùng một mặt phẳng nằm ngang, kết cấu của chúng liên kết với nhau và một rương đôi với hai lần công suất. Không có gì lớn hơn một đôi ngực có thể được thực hiện; không có ba rương cũng không phải bốn rương.
Một khối ngực chỉ có thể được đặt trong một điểm mạng trống nếu bốn điểm liền kề trực giao của nó đều trống hoặc nếu chính xác một khối chứa một khối ngực không phải là một phần của ngực kép. Các quy tắc vị trí này đảm bảo rằng không bao giờ có bất kỳ sự mơ hồ nào về việc khối ngực nào liên kết để tạo thành rương đôi.
Ví dụ: giả sử .là không gian trống và Clà một rương: (Các số cũng là không gian trống và chỉ dành cho mục đích nhận dạng.)
.......C..
.1.C2.C3..
........5C
.CC4..CC..
..........
- Một cái rương có thể được đặt ở vị trí 1 vì 4 hàng xóm của nó trống rỗng.
- Một rương có thể được đặt ở vị trí 2 vì rương lân cận không phải là một phần của rương đôi.
- Một chiếc rương không thể được đặt ở vị trí 3 vì sẽ có sự mơ hồ về cách hình thành của chiếc rương đôi.
- Một rương không thể được đặt ở vị trí 4 vì rương lân cận đã là một phần của rương đôi.
- Một rương có thể được đặt ở vị trí 5. Ngực đôi lân cận chéo không ảnh hưởng gì.
Giả sử khu vực bên ngoài lưới trống, thay đổi mọi thứ .trong lưới thành *nếu có thể đặt rương ở đó sẽ dẫn đến kết quả này:
******.C**
***C**C.**
*..***..*C
.CC.*.CC.*
*..***..**
Tất nhiên, không phải tất cả các *không gian đều có thể chứa các rương cùng một lúc, nhưng nếu bạn chỉ có một rương, nó có thể được đặt trong bất kỳ rương nào.
Thử thách
Viết một chương trình hoặc chức năng mà mất trong một .và Clưới điện, và thay đổi mỗi .một *nếu một ngực có thể được đặt ở đó, in hoặc trả lại lưới kết quả.
Đầu vào có thể từ stdin hoặc tệp hoặc dưới dạng đối số chuỗi cho hàm.
Bạn có thể giả sử đầu vào được hình thành tốt - tức là một lưới văn bản hình chữ nhật hoàn hảo, rộng ít nhất 1 ký tự, chỉ chứa
.vàCbạn có thể tùy ý giả sử có một dòng mới sau hàng cuối cùng (và có thể có một trong đầu ra ).Bạn có thể cho rằng việc sắp xếp các rương trong đầu vào phù hợp với các quy tắc ở trên. Sẽ không bao giờ có sự mơ hồ về việc rương nào tạo thành rương đôi.
Nếu muốn, bạn có thể sử dụng bất kỳ ba biệt ASCII in ký tự thay
.,Cvà*. Bạn không thể sử dụng cái gì khác thay cho dòng mới.Tất cả các rương đều là rương bình thường. Không bị mắc kẹt rương hoặc rương ender .
Chấm điểm
Việc gửi với ít byte nhất sẽ thắng.
Đối với một thử thách liên quan đến Minecraft khó khăn hơn một chút, hãy thử Phát hiện Cổng thông tin Nether .