Takuzu là một trò chơi logic trong đó bạn phải hoàn thành một lưới với các ô chứa 0
s và 1
s. Lưới phải tuân theo 3 quy tắc:
- Không có ba ô ngang hoặc dọc liên tiếp có thể giống nhau.
- Phải có một số
0
s và1
s bằng nhau trong mỗi hàng và cột. - Không có hai hàng nào có thể giống nhau và không có hai cột nào có thể giống nhau.
Hãy nhìn vào một lưới hoàn chỉnh:
0011
1100
0101
1010
Như bạn có thể thấy, bảng này tuân theo quy tắc 1
, 2
và 3
. Không có ba ô ngang hoặc dọc giống nhau, tất cả các hàng và cột chứa một số 0
s và 1
s bằng nhau , và không có hai hàng và không có hai cột giống nhau.
Hãy xem xét một lưới không hợp lệ:
110100
010011
011010
101100
100011
001101
Có một loạt các vấn đề với lưới điện này. Ví dụ: hàng 5
có ba 0
s liên tiếp và cột 2
có ba 1
s liên tiếp, theo sau là ba 0
s. Do đó, đây không phải là một lưới hợp lệ.
Bài tập:
Nhiệm vụ của bạn là tạo ra một chương trình, với một mảng 2D n
* n
0
và 1
s, xác minh bảng để xem đó có phải là bảng Takuzu hợp lệ hay không.
Ví dụ:
0011
1100
0101
1010
Bảng này tuân theo tất cả các quy tắc, và do đó là một bảng Takuzu hợp lệ. Bạn phải trả lại một giá trị trung thực cho điều này.
11
00
Đây không phải là một bảng hợp lệ - hàng 1
không tuân theo quy tắc 2
. Bạn phải trả lại một giá trị falsey cho điều này.
100110
101001
010101
100110
011010
011001
Đây không phải là một bảng hợp lệ, nó thất bại (chỉ) do quy tắc 3 - hàng đầu tiên và thứ tư là như nhau.
110100
001011
010011
101100
100110
011001
Đây không phải là một bảng hợp lệ, nó thất bại (chỉ) do quy tắc 3 - các cột đầu tiên và thứ tư là như nhau.
011010
010101
101100
010011
100110
101001
Đây là một bảng hợp lệ.
Quy tắc và thông số kỹ thuật:
- Bạn có thể giả sử rằng tất cả các bảng là hình vuông có kích thước
n * n
, trong đón
một số nguyên chẵn dương. - Bạn có thể giả định rằng tất cả các bảng đã hoàn thành.
- Bạn có thể lấy đầu vào dưới dạng mảng 2D chứa các giá trị biểu thị
0
và1
hoặc dưới dạng chuỗi. - Bạn phải đưa ra các giá trị trung thực và falsey nhất quán cho các bảng trung thực và falsey, và các giá trị đại diện cho "sự thật" và "falsey" không thể giống nhau.
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!