Escreva um programa que determine se uma determinada matriz representa um problema. Um quandle é um conjunto equipado com uma única (não-conmutativo, n associativo) ◃ operação que obedece aos seguintes axiomas:
- A operação está fechada, o que significa que
a◃b = c
sempre é um elemento do conjunto sea
eb
são elementos do conjunto. - A operação é auto-direito-distributiva:
(a◃b)◃c = (a◃c)◃(b◃c)
. - A operação é divisível à direita: para qualquer par escolhido de
a
eb
, há um único únicoc
tal quec◃a = b
- A operação é idempotente:
a◃a = a
Um quandle finito pode ser representado como uma matriz quadrada. Abaixo está um exemplo de um quandle do pedido 5 ( origem ).
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
O valor localizado na n-ésima linha e na m-ésima coluna (indexado 0) é o valor de n◃m. Por exemplo, neste dilema 4◃1 = 3
,. Algumas das propriedades do quandle são fáceis de ver nesta matriz:
- Está fechado porque apenas os valores 0-4 aparecem nessa matriz 5x5.
- É idempotente porque a diagonal da matriz é 0 1 2 3 4
- É divisível à direita porque nenhuma coluna contém valores duplicados. (As linhas podem, e geralmente serão.)
A propriedade da auto-distributividade correta é mais difícil de testar. Pode haver um atalho, mas o método mais simples é repetir cada combinação possível de três índices para verificar isso m[m[a][b]][c] = m[m[a][c]][m[b][c]]
.
Entrada
Entrada será a lista de linhas de uma matriz quadrada, usando a indexação 0 ou o índice 1 (sua escolha). Cada entrada será um número de um dígito de 0
a 8
(ou 1
através 9
). Eu serei flexível no formato de entrada. Alguns formatos aceitáveis incluem:
- A formatação mais natural do seu idioma para matrizes ou listas, como
[[0 0 0][2 1 1][1 2 2]]
ou(0,0,0,2,1,1,1,2,2)
. - A lista de valores delimitados por espaço em branco, novas linhas, vírgulas etc.
- Uma única sequência que consiste em todos os valores concatenados juntos, como
000211122
.
Você também pode aceitar a transposição da matriz como entrada (trocando linhas por colunas). Apenas certifique-se de indicar isso em sua resposta.
Saída
Um único valor de truthy / falsey indicando o status da matriz como um quandle.
Exemplos de 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
Exemplos de não-quandles
não fechado
1
0 0 0
2 1 1
1 9 2
não é auto-distributivo
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
não divisível à direita
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
não idempotente
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