Hier ist eine relativ einfache Herausforderung für Sie:
Eine Liste von positiven ganzen Zahlen gegeben:
Richten Sie sie in einem Raster aus und addieren Sie jede Spalte. Wenn die Eingabe beispielsweise so wäre, würde das
[123, 7, 49, 681]
Raster folgendermaßen aussehen:1 2 3 7 4 9 6 8 1
Und die Summe jeder Spalte wäre
[18, 19, 4]
:1 2 3 7 4 9 6 8 1 -------- 18 19 4
Bestimmen Sie das Maximum dieser Summen, in diesem Fall 19, und dann
Geben Sie jede Ziffer aus, die sich am selben Index wie diese maximale Spalte befindet. In diesem Fall wäre das
2 9 8
Sie müssen diese Nummern nicht in einer bestimmten Reihenfolge ausgeben. Beachten Sie, dass es nur drei Ausgänge gibt, obwohl wir 4 Eingänge hatten. Wählen Sie im Falle eines Unentschieden den frühesten Index. Wenn die Eingabe beispielsweise war
[25, 223, 302]
, lautet Ihr Raster:2 5 2 2 3 3 0 2 ------- 7 7 5
Sie sollten ausgeben
2 2 3
Sie können diese Zahlen in einem beliebigen Format ausdrucken. Listenformat, Zeilenvorschub getrennt, Leerzeichen getrennt usw. Sie können die Eingabe möglicherweise nicht als 2D-Array von Ziffern verwenden, z
[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]
Ansonsten können Sie Eingaben als eine Liste von Zeichenfolgen, eine Liste von Ziffern oder ein anderes vernünftiges Format annehmen.
Sie können auch davon ausgehen, dass alle Eingaben gültig sind und mindestens zwei Zahlen enthalten.
Wie immer gewinnt die kürzeste Antwort in Bytes!
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 wird in Englisch normalerweise nicht als positiv eingestuft.Antworten:
Haskell, 63 Bytes
Anwendungsbeispiel:
argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]
->[4,6]
.Wie es funktioniert:
quelle
Gelee , 6 Bytes
Probieren Sie es online! . Dies ist eine relativ einfache Umsetzung der Frage.
quelle
Ruby,
10097 Bytesquelle
eval e*?+
ist toll! Auch können Sie einfach tun$<.map
; Sie müssen es nicht in ein Array aufteilen.Mathematica 82 Bytes
Dies füllt die Ziffern jeder Zahl mit x rechts auf, transponiert die Matrix, entfernt die Dummy-x, ordnet nach der Summe der Ziffern und nimmt die größten.
Es sollte eine Möglichkeit geben, die hochgestellte T-Form von zu verwenden
Transpose
zu verwenden, um ein paar Bytes zu sparen.quelle
Perl,
4948 BytesBeinhaltet +1 für
-p
Run mit der Eingabe auf STDIN, druckt die Spaltennummern, denen das Präfix vorangestellt ist, auf STDOUT
+
lcolumn.pl
:quelle
Javascript (ES6),
108103100 BytesEs ist ein bisschen wortreich und könnte mit einer anderen Herangehensweise wahrscheinlich noch etwas mehr golfen werden. Ich wünschte, ich könnte das loswerden
.filter(n=>n)
.5 Bytes dank Neil
gespeichert 3 Bytes dank edc65 gespeichert
Demo
quelle
(d,x)=>(
... verwenden, gibt,d)
das Inneremap
eine Kopie von zurückk
, wodurchk
Sie 4 Bytes einsparen .m
, dh(s[x]=(s[x]|0)-d)<m
, spart Ihnen ein Byte.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 BytesNimmt Eingaben als Liste von Zeichenfolgen auf, gibt sie als durch nichts getrennte Ziffernliste aus.
Probieren Sie es online!
Erläuterung:
quelle
Pyth, 11 Bytes
Ein Programm, das eine Liste von Ganzzahlen in STDIN eingibt und eine Liste druckt.
Probieren Sie es online aus
Wie es funktioniert
quelle
JavaScript (ES6), 90
quelle
Pyth - 9 Bytes
Test Suite .
quelle