Inspiré par cette question Stack Overflow .
Le défi
Contribution
Un tableau de matrices carrées contenant des entiers non négatifs.
Production
Une matrice carrée construite à partir des matrices d'entrée comme suit.
Soit la taille de chaque matrice d'entrée et le nombre de matrices d'entrée.
Pour plus de clarté, considérons les exemples de matrices d'entrée suivantes ( , ):
3 5
4 10
6 8
12 11
2 0
9 1
- Commencez avec la première matrice d'entrée.
- Décaler la deuxième matrice d'entrée N −1 pas vers le bas et N −1 pas vers la droite, de sorte que son entrée en haut à gauche coïncide avec l'entrée en bas à droite de la précédente.
Imaginez la seconde matrice décalée comme si elle était empilée sur la première. Additionnez les deux valeurs à l'entrée coïncidente. Écrivez les autres valeurs et remplissez les entrées restantes avec
0
pour obtenir une matrice . Avec l'exemple d'entrée, le résultat jusqu'à présent est3 5 0 4 16 8 0 12 11
Pour chaque matrice d'entrée restante, échelonnez-la de sorte que sa partie supérieure gauche coïncide jusqu'à présent avec la partie inférieure droite de la matrice de résultat accumulée. Dans l'exemple, l'inclusion de la troisième matrice d'entrée donne
3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
La sortie est la matrice obtenue après avoir inclus la dernière matrice d'entrée.
Règles et clarifications supplémentaires
- et sont des entiers positifs.
- Vous pouvez éventuellement prendre et comme entrées supplémentaires.
- L'entrée et la sortie peuvent être prises par tout moyen raisonnable . Leur format est flexible comme d'habitude.
- Les programmes ou fonctions sont autorisés, dans n'importe quel langage de programmation . Les failles standard sont interdites .
- Le code le plus court en octets gagne.
Cas de test:
Dans chaque cas, les matrices d'entrée sont affichées en premier, puis la sortie.
, :
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
la source
Réponses:
Gelée ,
1512 octetsEssayez-le en ligne!
Comment ça fonctionne
la source
R ,
8881 octetsEssayez-le en ligne!
Prend un
list
des matrices,A
,N
etP
.Construit la matrice de zéros requise
o
et ajoute par élément le contenu deA
aux sous-matrices appropriées danso
.la source
JavaScript (ES6), 102 octets
Prend l'entrée comme
(n,p,a)
.Essayez-le en ligne!
Comment?
où les cellules non définies sont remplacées par des zéros.
la source
Python 2 , 124 octets
Essayez-le en ligne!
la source
Gelée , 12 octets
Essayez-le en ligne!
12 octets
Si des zéros supplémentaires étaient autorisés,
ZŻ€‘ɼ¡)⁺S
c'est une solution cool de 9 octets. TIO .la source
Gelée , 20 octets
Essayez-le en ligne!
Bah, Jelly a une attitude aujourd'hui ...
la source
Pip , 37 octets
Une fonction qui prend une liste de listes de listes. Essayez-le en ligne!
la source
Python 2 , 124 octets
Essayez-le en ligne!
la source
Fusain , 52 octets
Essayez-le en ligne! Le lien est vers une version détaillée du code et comprend deux octets pour une mise en forme quelque peu utilisable. J'ai commencé avec une version qui rembourrait tous les tableaux, puis je les ai sommés, mais j'ai pu utiliser cette version pour être plus courte à la place. Explication:
Décrémenter la valeur d'entréeN .
Calculez la taille du résultat( N- 1 ) P+ 1 et mapper sur la plage implicite deux fois, produisant ainsi une matrice de résultats qui est implicitement imprimée.
Mapper sur la plage implicite sur la valeur d'entréeP et multipliez chaque élément par N- 1 . Ensuite, cartographiez la plage résultante et additionnez le résultat final.
Vérifiez qu'aucun des indices n'est hors de portée.
Décalage dans l'entrée d'origine pour récupérer la valeur souhaitée.
la source