Oto stosunkowo proste wyzwanie:
Biorąc pod uwagę listę dodatnich liczb całkowitych:
Ułóż je w siatkę i zsumuj każdą kolumnę. Na przykład, jeśli dane wejściowe
[123, 7, 49, 681]
byłyby, siatka wyglądałaby następująco:1 2 3 7 4 9 6 8 1
A suma każdej kolumny byłaby
[18, 19, 4]
:1 2 3 7 4 9 6 8 1 -------- 18 19 4
Znajdź maksimum tych sum, które w tym przypadku wynosi 19, a następnie
Wypisuj każdą cyfrę o tym samym indeksie co ta maksymalna kolumna. W tym przypadku tak by było
2 9 8
Nie musisz wyprowadzać tych liczb w określonej kolejności. Zauważ, że są tylko trzy wyjścia, mimo że mieliśmy 4 wejścia. W przypadku remisu wybierz najwcześniejszy indeks. Na przykład, jeśli dane wejściowe były
[25, 223, 302]
, twoja siatka to:2 5 2 2 3 3 0 2 ------- 7 7 5
Powinieneś wyjść
2 2 3
Możesz wydrukować te liczby w dowolnym formacie. Format listy, separacja nowego wiersza, separacja spacji itp. Nie możesz traktować danych wejściowych jako tablicy cyfr 2D, np
[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]
Ale poza tym możesz brać dane wejściowe jako listę ciągów, listę cyfr lub w dowolnym innym rozsądnym formacie.
Możesz także założyć, że wszystkie dane wejściowe będą prawidłowe i będą zawierać co najmniej dwie liczby.
Jak zwykle, najkrótsza odpowiedź w bajtach wygrywa!
Test IO:
#Input #Output
[1, 11, 111, 1111] --> [1, 1, 1, 1]
[1, 12, 123] --> [2, 2]
[987654321, 111] --> [9, 1]
[111, 123456789] --> [9]
[4, 8, 15, 16, 23, 42] --> [4, 8, 1, 1, 2, 4]
[4, 8, 12, 26, 27, 38] --> [2, 6, 7, 8]
[24, 53] --> [2, 5]
[12, 304, 506] --> [4, 6]
[30, 285, 121] --> [0, 8, 2]
0
. Zero zwykle nie jest uważane za pozytywne po angielsku.Odpowiedzi:
Haskell, 63 bajty
Przykład użycia:
argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]
->[4,6]
.Jak to działa:
źródło
Galaretka , 6 bajtów
Wypróbuj online! . Jest to stosunkowo prosta realizacja pytania.
źródło
Rubinowy,
10097 bajtówźródło
eval e*?+
jest super! Możesz też po prostu zrobić$<.map
; nie trzeba umieszczać go w tablicy.Matematyka 82 bajty
To wstawia cyfry każdej liczby za pomocą x po prawej stronie, transponuje macierz, usuwa atrapę x, porządkuje według sumy cyfr i przyjmuje największą.
Powinien być jakiś sposób na użycie formy T w indeksie górnym
Transpose
do zapisania kilku bajtów.źródło
Perl,
4948 bajtówObejmuje +1 dla
-p
Uruchom z wejściem na STDIN, drukuje do STDOUT numery kolumn poprzedzone znakiem
+
lcolumn.pl
:źródło
JavaScript (ES6),
108103100 bajtówJest to trochę gadatliwe i prawdopodobnie można by grać w golfa z innym podejściem. Chciałbym się tego pozbyć
.filter(n=>n)
.Zapisano 5 bajtów dzięki Neilowi
Zapisano 3 bajty dzięki edc65
Próbny
źródło
(d,x)=>(
...,,d)
wewnętrznymap
zwraca kopięk
, dzięki czemu nie musisz przypisywaćk
, co oszczędza 4 bajty.m
, tzn.(s[x]=(s[x]|0)-d)<m
Oszczędza bajt.a=>a.map(n=>[...n+''].map((d,i)=>(t=s[i]=s[i]||[0],t.push(d),(t[0]-=d)<m?r=t:0)),s=[],m=0)&&r.slice(1)
+''
Pyth,
58 bajtówPobiera dane wejściowe jako listę ciągów, dane wyjściowe jako listę cyfr niepodzielnych.
Wypróbuj online!
Wyjaśnienie:
źródło
Pyth, 11 bajtów
Program, który pobiera listę liczb całkowitych na STDIN i drukuje listę.
Wypróbuj online
Jak to działa
źródło
JavaScript (ES6), 90
źródło
Pyth - 9 bajtów
Pakiet testowy .
źródło