Viết chương trình sẽ xác định xem một ma trận đã cho có biểu thị một quandle không. Một quandle là một bộ được trang bị một hoạt động (không giao hoán, không liên kết) tuân theo các tiên đề sau:
- Thao tác được đóng, nghĩa
a◃b = c
là luôn luôn là một phần tử của tập hợp nếua
vàb
là các phần tử của tập hợp. - Các hoạt động là tự phân phối phải :
(a◃b)◃c = (a◃c)◃(b◃c)
. - Hoạt động là chia đúng: Đối với bất kỳ cặp nào được chọn
a
vàb
, có một duy nhấtc
như vậyc◃a = b
- Các hoạt động là idempotent:
a◃a = a
Một quandle hữu hạn có thể được biểu diễn dưới dạng ma trận vuông. Dưới đây là một ví dụ về một quandle thứ tự 5 ( nguồn ).
0 0 1 1 1
1 1 0 0 0
3 4 2 4 3
4 2 4 3 2
2 3 3 2 4
Giá trị nằm ở hàng thứ n và cột m-th (được lập chỉ mục 0) là giá trị của n◃m. Ví dụ, trong quandle này , 4◃1 = 3
. Một số thuộc tính quandle rất dễ nhìn thấy từ ma trận này:
- Nó bị đóng vì chỉ các giá trị 0-4 xuất hiện trong ma trận 5x5 này.
- Đó là idempotent vì đường chéo ma trận là 0 1 2 3 4
- Nó là chia đúng vì không có cột nào chứa bất kỳ giá trị trùng lặp nào. (Các hàng có thể, và thường sẽ.)
Tài sản của quyền tự phân phối khó kiểm tra hơn. Có thể có một phím tắt, nhưng phương pháp đơn giản nhất là lặp lại qua từng kết hợp có thể có của ba chỉ mục để xác minh điều đó m[m[a][b]][c] = m[m[a][c]][m[b][c]]
.
Đầu vào
Đầu vào sẽ là danh sách các hàng của ma trận vuông, sử dụng chỉ mục 0 hoặc chỉ mục 1 (lựa chọn của bạn). Mỗi mục sẽ là một số có một chữ số từ 0
đến 8
(hoặc 1
thông qua 9
). Tôi sẽ linh hoạt về định dạng đầu vào. Một số định dạng có thể chấp nhận bao gồm:
- Định dạng tự nhiên nhất của ngôn ngữ của bạn cho ma trận hoặc danh sách, chẳng hạn như
[[0 0 0][2 1 1][1 2 2]]
hoặc(0,0,0,2,1,1,1,2,2)
. - Danh sách các giá trị được phân định bởi khoảng trắng, dòng mới, dấu phẩy, v.v.
- Một chuỗi duy nhất bao gồm tất cả các giá trị được nối với nhau, chẳng hạn như
000211122
.
Bạn cũng được phép lấy chuyển vị của ma trận làm đầu vào (hoán đổi các hàng với các cột). Chỉ cần chắc chắn để nói điều này trong câu trả lời của bạn.
Đầu ra
Một giá trị trung thực / falsey duy nhất cho biết trạng thái của ma trận là một quandle.
Ví dụ về quandles
0
0 0
1 1
0 0 0
2 1 1
1 2 2
0 0 1 1
1 1 0 0
3 3 2 2
2 2 3 3
0 3 4 1 2
2 1 0 4 3
3 4 2 0 1
4 2 1 3 0
1 0 3 2 4
Ví dụ về không quandles
không đóng cửa
1
0 0 0
2 1 1
1 9 2
không tự phân phối
0 0 1 0
1 1 0 1
2 3 2 2
3 2 3 3
(3◃1)◃2 = 2◃2 = 2
(3◃2)◃(1◃2) = 3◃0 = 3
không chia đúng
0 2 3 4 1
0 1 2 3 4
3 4 2 2 2
3 3 3 3 3
4 1 1 1 4
0 1 2 3
3 1 2 0
3 1 2 3
0 1 2 3
không bình thường
1 1 1 1
3 3 3 3
2 2 2 2
0 0 0 0
2 1 0 4 3
3 4 2 0 1
4 2 1 3 0
1 0 3 2 4
0 3 4 1 2