Thử thách này dựa trên trò chơi Layerz.
Được cung cấp, trên stdin hoặc làm đối số hàm, một mảng ô hình chữ nhật 2D trong đó mỗi ô chứa một khoảng trống (bạn có thể chọn sử dụng 0 thay vì khoảng trống mà không bị phạt), 1, 2, 3 hoặc 4 ; tìm cách chia nó thành các vùng hợp lệ (như được định nghĩa dưới đây) sao cho mỗi ô không trống được chứa chính xác bởi một vùng. Sau đó, xuất giải pháp tìm thấy trong bất kỳ định dạng hợp lý. Nếu không có giải pháp, hãy dừng lại mà không tạo ra đầu ra hoặc đầu ra một giá trị falsey duy nhất sau đó dừng lại.
Bất kỳ điều nào sau đây tạo thành một khu vực hợp lệ:
- Một ô chứa 1
- Một ô chứa 2 và chính xác là một trong những hàng xóm trực giao không trống của nó
- Một ô chứa 3 và chính xác là hai hàng xóm trực giao không trống của nó
- Một ô chứa 4 và chính xác ba hàng xóm trực giao không trống của nó
Đây là môn đánh gôn , vì vậy câu trả lời hợp lệ ngắn nhất, tính bằng byte, sẽ thắng.
Một số trường hợp thử nghiệm:
1. Một thứ khá tầm thường:
Và đây là giải pháp, với mỗi vùng có một màu khác nhau:
2. Một điều thú vị hơn
Giải pháp này có nhiều hơn một giải pháp, nhưng đây là một trong số đó:
3. Một cái nhỏ hơn, chứa khoảng trống, không có bất kỳ giải pháp nào (tùy thuộc vào việc bạn sử dụng một trong hai twos để "bắt" ba hay ba để lấy hai trong số các twos, bạn sẽ còn lại một cặp twos không liền kề [và do đó không thể ghép đôi] hoặc một hai cái riêng lẻ):
Vì lưới này không có giải pháp, chương trình của bạn sẽ tạm dừng mà không tạo ra bất kỳ đầu ra nào khi được cung cấp lưới này.
4. Cái này (với 2 ô trên cùng dịch chuyển một ô sang trái) có một giải pháp mặc dù:
Giải pháp:
(Phía dưới bên phải 2 được sử dụng để "chụp" 3)
5. Bởi vì chúng tôi cần một trường hợp thử nghiệm với một số bốn:
Một cách giải quyết:
4
s nếu đó là các đầu vào hợp lệ.