Inspiriert von dieser Frage und verfeinert von Luis Mendo .
Herausforderung
Bei einer 2D-Matrix von Ganzzahlen hat jede Zeile einen Maximalwert. Ein oder mehrere Elemente jeder Zeile entsprechen dem Maximalwert der jeweiligen Zeile. Ihr Ziel ist es zu bestimmen, welche Spalte (n) die meisten Einträge enthält, die dem Maximalwert der jeweiligen Zeile sowie der Anzahl der in diesen Spalten gefundenen zeilenweisen Maxima entsprechen.
Eingang
- Die Eingabe ist eine nicht leere
M
x-N
Matrix (M
> 0 undN
> 0) in einer beliebigen Form, die für die Sprache Ihrer Wahl gut geeignet ist.
Ausgabe
- Ihr Programm sollte den Index jeder Spalte zurückgeben, die die maximale Anzahl zeilenweiser Maxima enthält (entweder als separate Werte oder als Liste). Es kann entweder eine 0- oder eine 1-basierte Indizierung verwendet werden (in Ihrer Beschreibung angeben).
- Ihr Programm sollte auch die Anzahl der Maxima zurückgeben, die in diesen Spalten vorhanden waren (eine einzelne Zahl).
- Die Reihenfolge / das Format der Ausgabe ist flexibel, sollte jedoch im Text zu Ihrer Antwort erläutert werden.
zusätzliche Information
- Alle Einträge in der Eingabematrix sind positive ganze Zahlen.
- Wenn der Maximalwert einer Zeile von mehreren Elementen in dieser Zeile gemeinsam genutzt wird, werden alle Vorkommen dieses Werts auf die Gesamtsumme ihrer Spalten angerechnet.
- Wenn mehrere Spalten dieselbe Anzahl von Maxima enthalten, sollten Sie eine Liste aller Spalten zurückgeben, die diese Anzahl von Maxima hatten.
Ein Beispiel
Eingabe berücksichtigen
7 93
69 35
77 30
Zeile 1 hat das Maximum 93, das nur einmal vorkommt, nämlich in Spalte 2. Zeile 2: tritt in Spalte 1 auf. Zeile 3: auch in Spalte 1. Die Gewinnerspalte ist also 1 mit 2 Maxima. Somit wird die Ausgabe sein [1] [2]
. Wenn wir die Eingabe auf ändern
7 93
69 35
77 77
Die Ausgabe erfolgt [1 2] [2]
, da beide Spalten 2 Maxima haben.
Testfälle
input => output ( [1-based index array], [nMaxima] )
----------------------------------------------
7 93
69 35 => [1], [2]
77 30
7 93
69 35 => [1 2], [2]
77 77
1 2 3 4 => [4], [2]
5 6 7 8
16 2 3 13
5 11 10 8 => [1 2 4], [1]
9 7 6 12
1 1 1 1 => [1 2 3 4], [1]
25 6 13 25 => [1 4], [1]
1
2
3 => [1], [4]
4
100 => [1], [1]
Wertung
Dies ist Code-Golf , der kürzeste Code in Bytes gewinnt. Tiebreaker geht zur früheren Antwort.
Bestenliste
Unten finden Sie einen Stapelausschnitt zur Analyse aller Einträge.
quelle
Antworten:
Gelee , 9 Bytes
Die Eingabe ist eine 2D-Liste, die Ausgabe ist ein Paar: eine Liste von 1-basierten Indizes und die maximale Anzahl von Maxima.
Probieren Sie es online aus! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
J, 27 Bytes
Dies ist ein monadisches Verb, das im Fall des zweiten Beispiels wie folgt verwendet wird:
Die Ausgabe besteht aus zwei Feldern und verwendet eine 0-basierte Indizierung. Probieren Sie es hier aus!
Erläuterung
quelle
MATL, 17 Bytes
Die erste Ausgabe ist die maximale Anzahl von Maxima und die zweite Ausgabe sind die Spalten, in denen dies aufgetreten ist (1-basierte Indizierung).
Probieren Sie es online aus!
Erläuterung
quelle
MATL , 17 Bytes
Die Eingabe ist ein 2D-Array mit durch Semikolons getrennten Zeilen. Die Eingaben für die Testfälle sind also
Die Ausgabe ist: zuerst die maximale Anzahl von Maxima, dann ein oder mehrere Spaltenindizes.
Probieren Sie es online aus!
Erläuterung
Dies verwendet einen anderen Ansatz als Suevers Antwort .
Zuerst wird eine Matrix logischer Werte (
true
undfalse
) berechnet, wobeitrue
das Vorhandensein eines Zeilenmaximums angezeigt wird. Dann werden die Spaltenindizes dertrue
Werte in einen Vektor extrahiert. Schließlich wird der Modus dieses Vektors berechnet (maximale Anzahl von Maxima), zusammen mit allen Werten, die am häufigsten sind (gewünschte Spaltenindizes).quelle
Pyth,
201917 Bytes1 Byte danke an @Suever .
1 Byte dank @Jakube .
Testsuite.
Die Ausgabe ist 0-indiziert.
Reihenfolge ist umgekehrt.
Alle Eingänge
Alle Ausgänge
Wie es funktioniert
quelle
CJam ,
383531 Bytes2 Bytes weniger dank @FryAmTheEggMan, mit Hilfe auch von @quartata. Vielen Dank auch an @Dennis für das Entfernen von 4 weiteren Bytes.
Die Eingabe erfolgt in der Form
Die Ausgabe besteht aus einem Array von 1-basierten Spaltenindizes und einer Zahl.
Probieren Sie es online aus!
quelle
q~_::e>.f=:.+_:e>_@f{=U):Ua*~}p
spart ein paar Bytes. Wenn Sie es in einen Codeblock verwandeln, sparen Sie 1 weitere.{=U):Ua*~}
tut ...Pyke, 17 Bytes
Probieren Sie es hier aus!
quelle
Python 2, 106 Bytes
Die Eingabe ist eine 2D-Liste von Floats, die Ausgabe ist ein Paar: eine Liste von 0-basierten Indizes und eine Ganzzahl.
Testen Sie es auf Ideone .
quelle
Julia, 54 Bytes
Eingabe ist eine Matrix, Ausgabe ist ein Paar: eine Liste von 1-basierten Indizes und die maximale Anzahl von Maxima.
Probieren Sie es online aus!
quelle
JavaScript (ES6), 111 Byte
Gibt ein Array mit zwei Elementen zurück. Die erste ist die maximale Anzahl von Maxima, die zweite ist das Array von Spalten mit null Index mit dieser Anzahl.
quelle
Oktave,
4746 BytesDadurch wird eine anonyme Funktion erstellt, die sich automatisch zuweist
ans
und mit ausgeführt werden kannans([1 2 3; 4 5 6])
. Es wird ein Zellenarray mit zwei Elementen zurückgegeben, wobei das erste Element die maximale Anzahl von Maxima und das zweite der 1-basierte Index der Spalten ist, die diese Maxima enthalten.Alle Testfälle
quelle
Python 3, 142 Bytes
Der Algorithmus hier ist im Grunde, gehen Sie durch jede Zeile und erhöhen Sie die Punktzahl der Spalten, die das Maximum dieser Zeile haben. Suchen Sie dann das Maximum der Punktzahlen und suchen Sie die Spalten mit dieser Maximalpunktzahl und geben Sie sie zurück. Spalten sind 1-indiziert. Ich habe versucht, dies zu einem Lambda zu machen, aber bei der spaltenweisen Generierung der Scores waren es 153 Bytes.
Testfälle
quelle
Clojure, 150 Bytes
Mann, das ist lang, ich habe das Gefühl, das könnte sehr vereinfacht werden. Zumindest erzeugt es die richtige Ausgabe.
quelle
05AB1E , 14 (oder 12) Bytes
Ausgaben im Format
[[1-indexed columns-list], maxima]
.Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Wenn Elemente
0
in der Spaltenliste enthalten sein dürfen, die wir ignorieren, können 2 Byte weniger sein, wenn Folgendes entfernt wird0K
:Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle