Étant donné une liste non vide de lignes de nombres non vides, calculez la somme par colonne , qui est une autre liste qui a la longueur de la ligne d'entrée la plus longue. La première entrée de la liste de sortie est la somme de toutes les premières entrées des lignes d'entrée, la seconde est la somme de tous les seconds éléments (si disponibles) etc. Je pense que l'exemple suivant l'expliquera mieux:
Input: {[1,2,3,4],[1],[5,2,3],[6,1]}
Computation: [1,2,3,4]
+ . . .
[1]. . .
+ + + .
[5,2,3].
+ + . .
[6,1]. .
= = = =
Output: [13,5,6,4]
Cas de test
{[0]} -> 0
{[1],[1,1,1,1]} -> [2,1,1,1]
{[1],[1,2],[1,2,3],[1,2,3,4]} -> [4,6,6,4]
{[1,6,2,-6],[-1,2,3,5]} -> [0,8,5,-1]
Réponses:
Gelée , 1 octet
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça marche
L'atome somme
S
est un raccourci pour+/
, qui effectue la réduction par addition.Le rapide se
/
réduit le long de la dimension la plus à l'extérieur, il appelle donc son lien pour les éléments de l'entrée. Ici, les éléments sont les lignes.L'atome d'addition
+
vectorise, donc l'ajout de deux vecteurs de ligne effectue l'addition élément par élément. Lorsque les arguments ont des longueurs différentes, les éléments de l'argument le plus long qui n'ont pas d'équivalent dans le plus court ne sont pas modifiés.Dans l'ensemble, avec une matrice irrégulière comme argument,
S
calcule la somme par colonne, en sautant les entrées manquantes dans les lignes les plus courtes.la source
S€
, alors?/
ne vectorise pas; il applique simplement la dyade correspondante à tous les éléments de son argument.Python 2 ,
4745 octetsMerci à @vaultah d'avoir joué au golf sur 2 octets!
Essayez-le en ligne!
la source
Perl 6 , 23 octets
la source
Mathematica, 15 octets
la source
Haskell, 34 octets
Essayez-le en ligne! Usage:
la source
import
car il mange déjà tant d'octets: DCJam ,
75 octets2 octets de réduction grâce à Dennis!
Ceci définit un bloc anonyme qui prend une liste de listes, telles que
[[1 2 3 4] [1] [5 2 3] [6 1]]
, et la remplace par une liste[13 5 6 4]
,.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
MATL , 3 octets
( MATL ne sait pas que le pluriel de "bœuf" est "bœufs" ... )
L'entrée est un tableau de cellules de vecteurs de lignes numériques, au même format que dans le texte du défi:
Essayez-le en ligne! Ou vérifiez tous les cas de test .
la source
JavaScript (ES6),
5148 octetsEnregistré 3 octets, grâce à ETHproductions
Cas de test
Afficher l'extrait de code
la source
reduce
?a=>a.reduce((l,r)=>r.map((e,i)=>e+(l[i]||0)))
n'est que de 45 octets.Wonder , 11 octets
Transposer et cartographier avec la fonction somme. Usage:
la source
C ++ 14, 130 octets
En tant que lambda générique sans nom:
Nécessite
C
d'être similairevector<vector<int>>
et de renvoyer la valeurr
pour être similairevector<int>
(devrait être correct selon la méta ).Non golfé et utilisation:
la source
Pyth - 4 octets
Essayez-le en ligne ici .
la source
Haskell,
61 4140 octetsMerci @Laikoni pour -20 octets, @nimi pour -1 octet!
Explication: il s'agit simplement d'un résumé récursif des premiers éléments de la liste, traitant également de l'élimination des listes vides à chaque étape intermédiaire:
la source
(sum$sum.(take 1)<$>l)
parsum[h|h:_<-l]
et(f$filter(/=[])$drop 1<$>l)
parf[t|_:t<-l,t>[]]
.[h|h:_<-l]
!f[t:u|_:t:u<-l]
.J, 5 octets
Prend la saisie sous forme de liste encadrée de listes.
Cas de test
la source
Dyalog APL , 3 octets
+⌿
somme par colonne↑
l'argument mixte (liste de liste, empilé dans la matrice, remplissage avec des zéros)TryAPL en ligne!
la source
Pyke, 4 octets
Essayez-le ici!
la source
Java 8, 124 octets
c'est une expression lambda pour un
Function< int[ ][ ], int[ ] >
il prend la plus grande longueur de tableau de l'entrée, crée un nouveau tableau de cette taille, puis écrit les sommes de chaque colonne dans le tableau.
la source
Octave, 69 octets
la source
R,
10597 octetsCela prend en entrée un
list
objet appeléw
sous la forme:Il génère la somme par colonne:
[1] 3 4 3 4
Cette solution est assez longue pour moi. R a la particularité de recycler lorsque vous essayez de lier des vecteurs de longueur différente. Par exemple :
b
est réutilisé une fois pour s'adapter, c'est pourquoi je commence par une liste.Le programme ajuste la longueur de tous les éléments de la liste comme l'un des plus longs, lie les éléments et calcule la somme par colonne. Le réglage de la longueur produit
NA
des, qui sont ignorés par lesum
.-8 octets grâce à @Jarko Dubbeldam!
la source
colSums(a,na.rm=T)
enregistre quelques octets.na.rm=T
devenirn=T
.PHP, 63 octets
appeler dans le navigateur avec les paramètres GET comme liste d'entrées.
Exemple:
script.php?a[]=1&a[]=2&a[]=3&a[]=4&b[]=1&c[]=5&c[]=2&c[]=3&d[]=6&d[]=1
(Les noms de tableaux sont ignorés, vous pouvez donc les nommer comme vous le souhaitez.)
Essayez cette fonction pour tester:
ou utilisez
http_build_query($array,a)
pour convertir un tableau donné de tableaux en paramètres GET.la source
Clojure, 70 octets
Une boucle imbriquée de base.
la source
Japt, 5 octets
Testez-le en ligne!
U
est le tableau d'entrée, etz
sur les tableaux fait pivoter le tableau dans le sens horaire de 90 degrés. Par conséquent,devient
(Espacement ajouté uniquement à des fins d'affichage.)
mx
puism
aps par sommation (x
), ce qui donne le résultat souhaité:[13,5,6,4]
.la source