Напишіть програму, яка визначить, чи дана матриця являє собою квадрати. Quandle являє собою набір оснащений однією (некомутативними, неассоціатівное) операціями ◃ , яка задовольняє наступні аксіоми:
- Операція закрита, тобто
a◃b = c
завжди є елементом множини, якщоa
іb
є елементами безлічі. - Операція правої самостійно дистрибутивний:
(a◃b)◃c = (a◃c)◃(b◃c)
. - Операція розділена справа: для будь-якої обраної пари
a
таb
, є один унікальнийc
такийc◃a = b
- Операція ідентична:
a◃a = a
Кінцевий квадратик може бути представлений у вигляді квадратної матриці. Нижче наводиться приклад набору замовлення-5 ( джерело ).
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
Значення, розташоване в n-му рядку та m-му стовпці (0-індексовано), є значення n◃m. Наприклад, в цьому quandle, 4◃1 = 3
. Деякі властивості quandle легко помітити з цієї матриці:
- Він закритий, оскільки у цій матриці 5x5 відображаються лише значення 0-4.
- Це ідентично, оскільки діагональ матриці дорівнює 0 1 2 3 4
- Це розділяється справа, оскільки жоден стовпець не містить жодних повторюваних значень. (Рядки можуть, і зазвичай будуть.)
Властивість права на саморозподілення важче перевірити. Може бути ярлик, але найпростішим методом є перегляд кожної можливої комбінації трьох індексів для перевірки цього m[m[a][b]][c] = m[m[a][c]][m[b][c]]
.
Вхідні дані
Введенням буде список рядків квадратної матриці, використовуючи або 0-індексацію, або 1-індекс (на ваш вибір). Кожен запис буде один значний номер від 0
до 8
(або 1
через 9
). Я буду гнучким у форматі введення. Деякі прийнятні формати включають:
- Найбільш природне форматування вашої мови для матриць або списків, таких як
[[0 0 0][2 1 1][1 2 2]]
або(0,0,0,2,1,1,1,2,2)
. - Список значень, розділених пробілами, новими рядками, комами тощо.
- Одина рядок, що складається з усіх об'єднаних значень разом, таких як
000211122
.
Вам також дозволено приймати транспортування матриці як вхідний (обмін рядками зі стовпцями). Просто не забудьте вказати це у своїй відповіді.
Вихідні дані
Єдине значення truthy / falsey, що вказує на статус матриці як квадрату.
Приклади квандлів
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
Приклади неквандрів
не закритий
1
0 0 0
2 1 1
1 9 2
не правильно-саморозподілюючий
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
не правоподільний
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
не ідентичний
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