Biorąc pod uwagę niepustą listę niepustych wierszy liczb, oblicz mądrą kolumnę , która jest kolejną listą o długości najdłuższego wiersza wejściowego. Pierwszy wpis listy wyjściowej jest sumą wszystkich pierwszych wpisów w wierszach wejściowych, drugi to suma wszystkich drugich elementów (jeśli są dostępne) itp. Myślę, że poniższy przykład wyjaśni to znacznie lepiej:
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]
Przypadki testowe
{[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]
Odpowiedzi:
Galaretka , 1 bajt
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
Atom sumy
S
jest skrótem od+/
, który dokonuje redukcji przez dodanie.Szybkość
/
zmniejsza się wzdłuż skrajnego wymiaru, więc nazywa swój link elementami wejściowymi. Tutaj elementami są rzędy.Atom dodawania jest
+
wektoryzowany, więc dodanie dwóch wektorów wierszowych powoduje dodawanie element po elemencie. Gdy argumenty mają różne długości, elementy dłuższego argumentu, które nie mają odpowiednika w krótszym, pozostają niezmienione.Podsumowując, z nieregularną macierzą jako argumentem,
S
oblicza sumę kolumnową, pomijając brakujące wpisy w krótszych wierszach.źródło
S€
?/
nie wektoryzuje; po prostu stosuje odpowiednią diadę do wszystkich elementów swojego argumentu.Python 2 ,
4745 bajtówDzięki @vaultah za grę w golfa z 2 bajtów!
Wypróbuj online!
źródło
Perl 6 , 23 bajtów
źródło
Mathematica, 15 bajtów
źródło
Haskell, 34 bajty
Wypróbuj online! Stosowanie:
źródło
import
ponieważ zjada już tak wiele bajtów: DCJam ,
75 bajtów2 bajty wyłączone dzięki Dennisowi!
Definiuje to anonimowy blok, który pobiera listę list, na przykład
[[1 2 3 4] [1] [5 2 3] [6 1]]
, i zastępuje ją listą,[13 5 6 4]
.Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
MATL , 3 bajty
( MATL nie wie, że liczba mnoga „wół” to „woły” ... )
Dane wejściowe to tablica komórek numerycznych wektorów wierszy, w tym samym formacie, co w tekście wyzwania:
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
źródło
JavaScript (ES6),
5148 bajtówOszczędność 3 bajtów dzięki produktom ETH
Przypadki testowe
Pokaż fragment kodu
źródło
reduce
?a=>a.reduce((l,r)=>r.map((e,i)=>e+(l[i]||0)))
ma tylko 45 bajtów.Cud , 11 bajtów
Transponuj i mapuj z funkcją sumowania. Stosowanie:
źródło
C ++ 14, 130 bajtów
Jako nienazwana ogólna lambda:
Wymaga
C
bycia podobnymvector<vector<int>>
i zwracania wartościr
bycia podobnymvector<int>
(powinno być w porządku zgodnie z meta ).Niegolfowane i użytkowanie:
źródło
Pyth - 4 bajty
Wypróbuj online tutaj .
źródło
Haskell,
61 4140 bajtówDzięki @Laikoni za -20 bajtów, @nimi za -1 bajtów!
Objaśnienie: Jest to po prostu rekurencyjne podsumowanie pierwszych elementów listy, które dotyczy również odrzucania pustych list na każdym etapie pośrednim:
źródło
(sum$sum.(take 1)<$>l)
zsum[h|h:_<-l]
i(f$filter(/=[])$drop 1<$>l)
zf[t|_:t<-l,t>[]]
.[h|h:_<-l]
!f[t:u|_:t:u<-l]
.J, 5 bajtów
Pobiera dane wejściowe jako zamkniętą listę list.
Przypadki testowe
źródło
Dyalog APL , 3 bajty
+⌿
suma pod względem kolumn↑
argument mieszany (lista, ułożony w macierz, dopełnianie zerami)Wypróbuj APL online!
źródło
Pyke, 4 bajty
Wypróbuj tutaj!
źródło
Java 8, 124 bajty
to jest wyrażenie lambda dla
Function< int[ ][ ], int[ ] >
pobiera największą długość tablicy z danych wejściowych, tworzy nową tablicę o tym rozmiarze, a następnie zapisuje sumy każdej kolumny do tablicy.
źródło
Oktawa, 69 bajtów
źródło
R
105 105bajtówSpowoduje to wprowadzenie
list
obiektu o nazwiew
w postaci:Zwraca sumę kolumnową:
[1] 3 4 3 4
To rozwiązanie jest dla mnie dość długie. R ma szczególny charakter do recyklingu, gdy próbujesz wiązać wektory o różnej długości. Na przykład :
b
jest ponownie używany raz, aby dopasować, dlatego zaczynam od listy.Program dostosowuje długość wszystkich elementów listy jako jeden z najdłuższych, wiąże elementy i oblicza sumę według kolumn. Dostosowywanie długości powoduje
NA
, że są ignorowane przezsum
.-8 bajtów dzięki @Jarko Dubbeldam!
źródło
colSums(a,na.rm=T)
oszczędza kilka bajtów.na.rm=T
sięn=T
.PHP, 63 bajty
wywołać w przeglądarce z parametrami GET jako listą danych wejściowych.
Przykład:
script.php?a[]=1&a[]=2&a[]=3&a[]=4&b[]=1&c[]=5&c[]=2&c[]=3&d[]=6&d[]=1
(Nazwy tablic są ignorowane, więc możesz nazwać je w dowolny sposób).
Wypróbuj tę funkcję do testowania:
lub użyj
http_build_query($array,a)
do konwersji danej tablicy tablic na parametry GET.źródło
Clojure, 70 bajtów
Podstawowa pętla zagnieżdżona.
źródło
Japt, 5 bajtów
Przetestuj online!
U
jest tablicą wejściową, az
na tablicach obraca tablicę o 90 stopni zgodnie z ruchem wskazówek zegara. W związku z tym,staje się
(Odstępy dodane tylko w celach wyświetlania).
mx
Następniem
aps przez sumowanie (x
), który daje pożądane wyniki:[13,5,6,4]
.źródło