Desafio:
Dada uma entrada de matriz, determine a quantidade de diagonais e antiagonais com números duplicados.
Portanto, se tivermos uma matriz como esta:
[[aa,ab,ac,ad,ae,af],
[ba,bb,bc,bd,be,bf],
[ca,cb,cc,cd,ce,cf],
[da,db,dc,dd,de,df]]
Todas as diagonais e antiagonais seriam:
[[aa],[ab,ba],[ac,bb,ca],[ad,bc,cb,da],[ae,bd,cc,db],[af,be,cd,dc],[bf,ce,dd],[cf,de],[df],
[af],[ae,bf],[ad,be,cf],[ac,bd,ce,df],[ab,bc,cd,de],[aa,bb,cc,dd],[ba,cb,dc],[ca,db],[da]]
Exemplo:
[[1,2,1,2,1,2],
[1,2,3,4,5,6],
[6,5,4,3,2,1],
[2,1,2,1,2,1]]
Todas as diagonais e antiagonais seriam:
[[1],[2,1],[1,2,6],[2,3,5,2],[1,4,4,1],[2,5,3,2],[6,2,1],[1,2],[1],
[2],[1,6],[2,5,1],[1,4,2,1],[2,3,3,2],[1,2,4,1],[1,5,2],[6,1],[2]]
Removendo todas as diagonais e antiagonais que contêm apenas números exclusivos:
[[2,3,5,2],[1,4,4,1],[2,5,3,2],[1,4,2,1],[2,3,3,2],[1,2,4,1]]
Portanto, a saída é a quantidade de diagonais e antiagonais que contêm números duplicados:
6
Regras do desafio:
- Se a matriz de entrada estiver vazia, contiver apenas 1 número ou apenas números únicos em toda a matriz, a saída será sempre
0
. - A entrada é garantida para conter apenas dígitos positivos
[1,9]
(a menos que esteja completamente vazia). - A matriz sempre será retangular (ou seja, todas as linhas têm o mesmo comprimento).
- A E / S é flexível. A entrada pode ser tomada como uma lista de listas de números inteiros, ou uma matriz 2D de números inteiros, ou um objeto Matrix, como uma string, etc. etc. Você também pode usar uma ou ambas as dimensões da matriz como entrada adicional se ele salvasse bytes no idioma de sua escolha.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Input: Output:
[[1,2,1,2,1,2], 6
[1,2,3,4,5,6],
[6,5,4,3,2,1],
[2,1,2,1,2,1]]
[[]] 0
[[1,2], 0
[3,4]]
[[1,1], 2
[1,1]]
[[9,9,9], 6
[9,9,9],
[9,9,9]]
[[7,7,7,7], 8
[7,7,7,7],
[7,7,7,7]]
[[1,1,1], 1
[2,3,4],
[2,5,1]]
[[1,8,4,2,9,4,4,4], 12
[5,1,2,7,7,4,2,3],
[1,4,5,2,4,2,3,8],
[8,5,4,2,3,4,1,5]]
[[1,2,3,4], 4
[5,6,6,7],
[8,6,6,9],
[8,7,6,5]]
row
ecol
à minha lista de 'funções extremamente situacionais'. Solução realmente inteligente.