Ngân hàng đã bị đột nhập và tất cả những tên côn đồ mafia địa phương đều có một chứng cứ ngoại phạm khác thường: họ ở nhà chơi Connect 4! Để hỗ trợ điều tra, bạn được yêu cầu viết chương trình để xác thực tất cả các bảng Connect 4 đã bị tịch thu để kiểm tra xem các vị trí có thực sự là vị trí trong trò chơi Connect 4 hợp lệ không và chưa được kết hợp vội vàng ngay khi cảnh sát gõ cửa.
Các quy tắc để kết nối 4: người chơi R
và Y
thực hiện lần lượt để thả các ô màu của họ vào các cột của lưới 7x6. Khi một người chơi thả một viên gạch vào cột, nó sẽ rơi xuống chiếm vị trí thấp nhất trong cột đó. Nếu người chơi quản lý để có được một đường chạy ngang, dọc hoặc chéo của bốn ô màu của họ trên bảng, thì họ thắng và trò chơi kết thúc ngay lập tức.
Ví dụ: ( R
bắt đầu), sau đây là vị trí Kết nối 4 không thể.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Chương trình hoặc chức năng của bạn phải có trong bảng Connect 4 và trả lại
- Một giá trị giả, chỉ ra rằng vị trí là không thể hoặc
- Một chuỗi các số 1-7, cho thấy một chuỗi có thể di chuyển dẫn đến vị trí đó (các cột được đánh số
1
để7
từ trái sang phải, và do đó trình tự112
, ví dụ, chỉ một động thái đỏ trong cột1
, tiếp theo là một động thái vàng trong cột1
, tiếp theo là di chuyển màu đỏ trong cột2
). Bạn có thể chọn đánh số cột khác với 1234567 nếu muốn, miễn là bạn chỉ định trong giải pháp của mình. Nếu bạn muốn trả về danh sách ở một số định dạng khác; ví dụ như là một mảng[2, 4, 3, 1, 1, 3]
thì điều đó cũng tốt, miễn là dễ dàng để xem những gì di chuyển.
Bạn có thể chọn đọc bảng theo bất kỳ định dạng hợp lý nào, kể cả sử dụng các chữ cái khác R
và Y
cho người chơi, nhưng bạn phải chỉ định người chơi nào đi trước. Bạn có thể giả định rằng bảng sẽ luôn là 6x7, với hai người chơi.
Bạn có thể cho rằng các vị trí bạn nhận được ít nhất có thể về mặt vật lý để tạo trên bảng Connect 4 tiêu chuẩn; tức là, sẽ không có mảnh 'nổi'. Bạn có thể cho rằng bảng sẽ không trống.
Đây là mã golf, vì vậy câu trả lời ngắn nhất sẽ thắng. Tiêu chuẩn áp dụng.
Ví dụ
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |