Berechnen Sie bei einer nicht leeren Liste mit nicht leeren Zahlenzeilen die spaltenweise Summe . Dies ist eine weitere Liste mit der Länge der längsten Eingabezeile. Der erste Eintrag in der Ausgabeliste ist die Summe aller ersten Einträge der Eingabezeilen, der zweite ist die Summe aller zweiten Elemente (falls verfügbar) usw. Ich denke, das folgende Beispiel wird es besser erklären:
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]
Testfälle
{[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]
Antworten:
Gelee , 1 Byte
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
Das Summenatom
S
ist eine Abkürzung für+/
, die durch Addition eine Reduktion durchführt.Der Schnellzugriff
/
wird entlang der äußersten Dimension reduziert, sodass die Verknüpfung für die Elemente der Eingabe aufgerufen wird. Hier sind die Elemente die Zeilen.Das Additionsatom
+
vektorisiert, so dass das Addieren von zwei Zeilenvektoren eine elementweise Addition durchführt. Wenn die Argumente unterschiedlich lang sind, bleiben die Elemente des längeren Arguments, die kein Gegenstück zum kürzeren haben, unverändert.Insgesamt wird mit einer unregelmäßigen Matrix als Argument
S
die spaltenweise Summe berechnet, wobei fehlende Einträge in den kürzeren Zeilen übersprungen werden.quelle
S€
dann eine zeilenweise Summe ?/
vektorisiert nicht; es wendet einfach die entsprechende Dyade auf alle Elemente seines Arguments an.Python 2 ,
4745 BytesVielen Dank an @vaultah für das Golfen mit 2 Bytes!
Probieren Sie es online!
quelle
Perl 6 , 23 Bytes
quelle
Mathematica, 15 Bytes
quelle
Haskell, 34 Bytes
Probieren Sie es online! Verwendung:
quelle
import
da es schon so viele BytesCJam ,
75 Bytes2 Bytes weniger dank Dennis!
Dies definiert einen anonymen Block, der eine Liste von Listen aufnimmt, z. B.
[[1 2 3 4] [1] [5 2 3] [6 1]]
und diese durch eine Liste ersetzt[13 5 6 4]
.Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
MATL , 3 Bytes
( MATL weiß nicht, dass der Plural von "ox" "oxen" ist ... )
Die Eingabe ist ein Zellenarray numerischer Zeilenvektoren im gleichen Format wie im Aufforderungstext:
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
quelle
JavaScript (ES6),
5148 BytesDank ETHproductions 3 Bytes gespart
Testfälle
Code-Snippet anzeigen
quelle
reduce
?a=>a.reduce((l,r)=>r.map((e,i)=>e+(l[i]||0)))
ist nur 45 Bytes.Wunder , 11 Bytes
Transponieren und Mapen mit Summenfunktion. Verwendung:
quelle
C ++ 14, 130 Bytes
Als unbenanntes generisches Lambda:
Erfordert
C
, wie zu sein,vector<vector<int>>
und Rückgabewertr
, um wie zu seinvector<int>
(sollte laut Meta in Ordnung sein ).Ungolfed & Nutzung:
quelle
Pyth - 4 Bytes
Probieren Sie es hier online aus .
quelle
Haskell,
61 4140 BytesDanke @Laikoni für -20 Bytes, @nimi für -1 Bytes!
Erläuterung: Es handelt sich nur um eine rekursive Zusammenfassung der ersten Elemente der Liste, die auch das Löschen leerer Listen in jedem Zwischenschritt behandelt:
quelle
(sum$sum.(take 1)<$>l)
mitsum[h|h:_<-l]
und(f$filter(/=[])$drop 1<$>l)
mit ersetzenf[t|_:t<-l,t>[]]
.[h|h:_<-l]
!f[t:u|_:t:u<-l]
.J, 5 Bytes
Nimmt die Eingabe als eine Liste von Listen in Kästchen an.
Testfälle
quelle
Dyalog APL , 3 Bytes
+⌿
Summe spaltenweise↑
das gemischte Argument (Liste der Liste, in Matrix gestapelt, mit Nullen aufgefüllt)TryAPL online!
quelle
Pyke, 4 Bytes
Probieren Sie es hier aus!
quelle
Java 8, 124 Bytes
Dies ist ein Lambda-Ausdruck für a
Function< int[ ][ ], int[ ] >
Es nimmt die größte Array-Länge von der Eingabe, erstellt ein neues Array dieser Größe und schreibt dann die Summen jeder Spalte in das Array.
quelle
Oktave, 69 Bytes
quelle
R
10597 BytesDies nimmt in der Eingabe ein
list
Objekt auf, dasw
in der Form aufgerufen wird:Es gibt die spaltenweise Summe aus:
[1] 3 4 3 4
Diese Lösung ist mir ziemlich lang. R hat die Besonderheit, recycelt zu werden, wenn Sie versuchen, Vektoren unterschiedlicher Länge zu binden. Beispielsweise :
b
wird zur Anpassung einmalig wiederverwendet, weshalb ich mit einer Liste beginne.Das Programm passt die Länge aller Elemente der Liste als die der längsten an, bindet die Elemente und berechnet die spaltenweise Summe. Die Längenanpassung erzeugt
NA
's, die von der ignoriert werdensum
.-8 Bytes dank @Jarko Dubbeldam!
quelle
colSums(a,na.rm=T)
spart ein paar Bytes.na.rm=T
inn=T
.PHP, 63 Bytes
Browser mit GET-Parametern als Liste der Eingaben aufrufen.
Beispiel:
script.php?a[]=1&a[]=2&a[]=3&a[]=4&b[]=1&c[]=5&c[]=2&c[]=3&d[]=6&d[]=1
(Array-Namen werden ignoriert, sodass Sie sie nach Belieben benennen können.)
Probieren Sie diese Funktion zum Testen aus:
oder verwenden Sie
http_build_query($array,a)
, um ein bestimmtes Array von Arrays in GET-Parameter zu konvertieren.quelle
Clojure, 70 Bytes
Eine einfache verschachtelte Schleife.
quelle
Japt, 5 Bytes
Online testen!
U
ist das Eingabearray, undz
bei Arrays wird das Array im Uhrzeigersinn um 90 Grad gedreht. Deshalb,wird
(Abstand nur zu Anzeigezwecken hinzugefügt.)
mx
dannm
aps durch Summierung (x
), die das gewünschte Ergebnis liefert:[13,5,6,4]
.quelle