Inspirado por esta questão do Stack Overflow .
O desafio
Entrada
Uma matriz de matrizes quadradas contendo números inteiros não negativos.
Resultado
Uma matriz quadrada construída a partir das matrizes de entrada da seguinte maneira.
Seja o tamanho de cada matriz de entrada e o número de matrizes de entrada.
Para maior clareza, considere o seguinte exemplo de matrizes de entrada ( , ):
3 5
4 10
6 8
12 11
2 0
9 1
- Comece com a primeira matriz de entrada.
- Desloque a segunda matriz de entrada N -1 para baixo e N -1 para a direita, de modo que sua entrada superior esquerda coincida com a entrada inferior direita da anterior.
Imagine a segunda matriz deslocada como se estivesse empilhada em cima da primeira. Soma os dois valores na entrada coincidente. Escreva os outros valores e preencha as entradas restantes
0
para obter uma matriz . Com a entrada de exemplo, o resultado até agora é3 5 0 4 16 8 0 12 11
Para cada matriz de entrada restante, escalone-a para que sua parte superior esquerda coincida com a parte inferior direita da matriz de resultados acumulados até o momento. No exemplo, incluir a terceira matriz de entrada fornece
3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
A saída é a matriz obtida após a inclusão da última matriz de entrada.
Regras e esclarecimentos adicionais
- e são inteiros positivos.
- Opcionalmente, você pode usar e como entradas adicionais.
- A entrada e a saída podem ser obtidas por qualquer meio razoável . Seu formato é flexível, como de costume.
- Programas ou funções são permitidos, em qualquer linguagem de programação . As brechas padrão são proibidas .
- O código mais curto em bytes vence.
Casos de teste:
Em cada caso, as matrizes de entrada são mostradas primeiro, depois a saída.
, :
3 5 4 10 6 8 12 11 2 0 9 1 3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
, :
3 5 4 10 3 5 4 10
, :
4 7 23 5 39
, :
11 11 8 6 8 12 11 0 4 4 1 13 9 19 11 13 4 2 11 11 8 0 0 6 8 12 0 0 11 0 8 1 13 0 0 9 19 11 0 0 13 4 2
, :
14 13 10 0 13 20 21 3 9 22 0 8 17 3 19 16 14 13 0 0 0 10 13 20 0 0 0 21 12 22 0 0 0 0 25 3 0 0 0 19 16
fonte
Respostas:
Geléia ,
1512 bytesExperimente online!
Como funciona
fonte
R ,
8881 bytesExperimente online!
Leva um
list
das matrizes,A
,N
, eP
.Constrói a matriz necessária de zeros
o
e adiciona elementwise o conteúdo dasA
submatrizes apropriadas emo
.fonte
JavaScript (ES6), 102 bytes
Toma entrada como
(n,p,a)
.Experimente online!
Quão?
Para cada célula em( x , y) , calculamos:
onde células indefinidas são substituídas por zeros.
fonte
Python 2 , 124 bytes
Experimente online!
fonte
Gelatina , 12 bytes
Experimente online!
12 bytes
Se zeros extras forem permitidos,
ZŻ€‘ɼ¡)⁺S
é uma solução legal de 9 bytes. TIO .fonte
Gelatina , 20 bytes
Experimente online!
Bah, Jelly tem uma atitude hoje ...
fonte
Pip , 37 bytes
Uma função que recebe uma lista de listas de listas. Experimente online!
fonte
Python 2 , 124 bytes
Experimente online!
fonte
Carvão , 52 bytes
Experimente online! Link é uma versão detalhada do código e inclui dois bytes para formatação um tanto utilizável. Comecei com uma versão que preenchia todas as matrizes e as resumia, mas fui capaz de jogar essa versão para ser mais curta. Explicação:
Reduza o valor de entradaN .
Calcular o tamanho do resultado( N- 1 ) P+ 1 e mapeie o intervalo implícito duas vezes, produzindo assim uma matriz de resultados que é impressa de forma implícita.
Mapear sobre o intervalo implícito sobre o valor de entradaP e multiplique cada elemento por N- 1 . Em seguida, mapeie o intervalo resultante e some o resultado final.
Verifique se nenhum dos índices está fora da faixa.
Desloque a entrada original para buscar o valor desejado.
fonte