Nicht zu verwechseln mit Least Common Multiple .
Wenn Sie eine Liste positiver Ganzzahlen mit mehr als einem Element erhalten, geben Sie das häufigste Produkt von zwei Elementen im Array zurück.
Der MCM der Liste [2,3,4,5,6]
lautet beispielsweise 12
wie folgt:
2 3 4 5 6
---------------
2 | # 6 8 10 12
3 | # # 12 15 18
4 | # # # 20 24
5 | # # # # 30
6 | # # # # #
Danke DJMcMayhem für den Tisch
Wie 12
erscheint am häufigsten (zweimal als 2*6
und 3*4
). Beachten Sie, dass wir ohne das Produkt eines Elements sind und sich so 2*2
oder 4*4
nicht in dieser Liste nicht angezeigt. Identische Elemente werden jedoch weiterhin multipliziert, sodass die Tabelle für [2,3,3]
wie folgt aussieht:
2 3 3
----------
2 | # 6 6
3 | # # 9
3 | # # #
Mit dem MCM sein 6
.
Im Falle eines Unentschieden können Sie eines der verknüpften Elemente oder eine Liste aller Elemente zurückgeben.
- Das ist Code-Golf , also gewinnt die kürzeste Anzahl von Bytes für jede Sprache!
Testfälle:
[2,3,4,5,6] -> 12
[7,2] -> 14
[2,3,3] -> 6
[3,3,3] -> 9
[1,1,1,1,2,2] -> 2
[6,200,10,120] -> 1200
[2,3,4,5,6,7,8,8] -> 24
[5,2,9,10,3,4,4,4,7] -> 20
[9,7,10,9,7,8,5,10,1] -> 63, 70, 90 or [63,70,90]
code-golf
array-manipulation
Scherzen
quelle
quelle
[3,3,3] -> 9
). Mit all Ihren aktuellen Testfällen werden Paare mit identischen Elementen herausgefiltert (auch für Testfälle[2,3,3]
mit identischen Werten). Sie enthalten weiterhin die korrekten Testergebnisse, schlagen jedoch für diesen Testfall fehl, da nach dem Filtern keine zurückbleibt.Antworten:
Brachylog , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
R ,
545041 BytesProbieren Sie es online!
Alternativ für
545344 Bytes:Probieren Sie es online!
Im Prinzip gibt die letztere Version das relevante Ergebnis auch ohne die
names
Funktion aus, gefolgt von der Zählung der häufigsten Produkte, die nicht nachgefragt wird ...Danke an CriminallyVulgar für -4 und -1 und Giuseppe für -9 für beide.
quelle
combn(scan(),2,prod)
funktioniert statt zu verwendenapply
Gelee , 6 Bytes
Probieren Sie es online! oder Schauen Sie sich die Testsuite an .
Wie es funktioniert
quelle
Pyth, 12 Bytes
Testsuite
Zunächst nehmen wir alle 2 Elementkombinationen der Eingabe ohne Ersetzung (
.cQ2
). Dann ordnen wir jedes dieser Paare ihrem Produkt zu (*M
). Als nächstes überschreiben wir die Eingabevariable mit der Liste der Produkte (=
). Als nächstes sortieren wir die Liste der Produkte nach der Anzahl der Vorkommen in der Liste der Produkte (o/QN
). Zuletzt nehmen Sie das letzte Element der sortierten Liste (e
).quelle
MATL ,
87 BytesProbieren Sie es online!
(-1 Byte mit der Methode aus der Antwort von @Mr. Xcoder Jelly .)
Ältere Antwort:
8 Bytes
Probieren Sie es online!
quelle
05AB1E ,
86 Bytes-2 Bytes dank @Kaldo .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
ù
.Mathematica, 32 Bytes
-17 Bytes (und ein Update ) dank JungHwan Min .
Funktion pur. Nimmt eine Liste von Zahlen als Eingabe und gibt die Liste von MCMs als Ausgabe zurück.
quelle
{3, 3, 3}
.Commonest[1##&@@@#~Subsets~{2}]&
Subsets
Wiederholungen nicht als separate Elemente gezählt werden. Es scheint aber so, also danke!MATLAB, 43 Bytes
Es ist auch eine Art Zungenbrecher!
Erläuterung
quelle
I'*I*1-eye
Warum nicht einfachI'*I-eye
?Perl 6 ,
4138 BytesProbieren Sie es online!
quelle
:
Operator.Stax ,
1210 BytesFühren Sie es aus und debuggen Sie es
quelle
Python 3 ,
7772 BytesProbieren Sie es online!
quelle
Attache , 59 Bytes
Probieren Sie es online!
Ich arbeite immer noch daran, das ein bisschen herunter zu spielen, aber ich denke, das ist nahezu optimal für den Ansatz, den ich gewählt habe.
Erläuterung
Dies ist eine Komposition aus drei Funktionen:
{Flat[UpperTriangle&1!Table&_!`*]^^0}
SortBy#`&&:`~
Last
Die erste Funktion übernimmt den Großteil der Berechnung:
Die zweite ist etwas kompliziert, macht aber etwas ziemlich Einfaches. Zunächst ist es nützlich zu wissen, dass
f&n
es sich um eine Funktion handelt, die beim Aufruf mit Argumenten zurückgegeben...x
wirdf[...x, n]
.f&:n
ist ähnlich und kehrt zurückf[n, ...x]
. Zerlegen wir nun Folgendes:Zunächst
f#g
erstellt eine Gabel. Mit der Eingaben
kehrt es zurückf[n, g[n]]
. In diesem Fallf
ist jedoch die Funktion~SortBy
.~f
Kehrt die Argumente der Funktion um. Das heißt, das~f#g
ist gleichbedeutend mitf[g[n], n]
oder hierSortBy[(`& &: `~)[n], n]
.`& &: `~
folgt der Formf&:n
. Aber was ist`&
und`~
? Sie sind "Operator-Anführungszeichen" und geben eine Funktion zurück, die dem angegebenen Operator entspricht. Also, in diesem Fall`&
ist das Gleiche wie${ x & y }
. In diesem Sinne entspricht dieser Ausdruck für binäre Operatoren dem Folgenden:Dies ergibt die Funktion
`~&x
, wobeix
das Ergebnis der ersten Funktion ist.n ~ a
zählt die Vorkommen vonn
ina
. Dies gibt also eine Funktion zurück, die das Auftreten des Arguments in dem berechneten Array von Funktion 1 zählt.Zurück zu
SortBy
: Jedes Element im Array wird so oft angezeigt, wie es darin enthalten ist.Schließlich
Last
nimmt das Element, das am häufigsten auftritt. Verbindungen werden durch den Sortieralgorithmus unterbrochen.quelle
[5, 2, 9, 10, 3, 4, 4, 4, 7] -> 16
statt20
ohne.JavaScript (ES6),
72-70ByteProbieren Sie es online!
quelle
Holzkohle , 24 Bytes
Probieren Sie es online!Link ist eine ausführliche Version des Codes. Erläuterung:
Während das Eingabearray nicht leer ist ...
... füge das letzte Element ein und multipliziere den Rest des Arrays mit diesem Element ...
... und verschieben Sie die Ergebnisse in die vordefinierte leere Liste.
Zählen Sie, wie oft jedes Produkt in der Liste erscheint, und nehmen Sie das Maximum ...
... dann filtern Sie nach den Produkten, deren Anzahl dem Maximum entspricht ...
... dann füge das letzte Element ein und gib es als String für den impliziten Druck aus.
quelle
Schale , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
APL (Dyalog Unicode) ,
29 2719 BytesProbieren Sie es online!
Tacit fn.
Vielen Dank an Adám für die stillschweigende Version und 2 Bytes.
Danke an ngn für 8 Bytes!
Wie:
quelle
Japt ,
2016 BytesProbieren Sie es online!
quelle
CJam ,
7068 BytesProbieren Sie es online!
Erläuterung
Sie müssen nach rechts scrollen, um die Erklärungen zu sehen, da der Code ziemlich lang ist, sowie die Erklärungen.
Dies war ein absoluter Albtraum zu schreiben. CJam hat keine Powerset-Funktion (im Gegensatz zu vielen anderen Golfsprachen - eine gute Wahl für mich), was bedeutet, dass ich das Powerset manuell finden musste. Dies gab mir jedoch die Möglichkeit, eine ungültige Anzahl von Faktoren zu ignorieren, im Gegensatz zu anderen Antworten mit einer Powerset-Funktion.
Das sollte Golf sein, wenn man bedenkt, dass ich bei CJam schrecklich bin.
Änderungen:
Helen hat 2 Bytes abgeschnitten!
Alt:
q',/S*~_,1-:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,1-=
Neu:
q',/S*~_,(:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,(=
Durch Ändern der
1-
s in einfach ,(
erhalten Sie den gleichen Effekt, jedoch mit einer geringeren Bytezahl.quelle
Java (JDK 10) , 132 Byte
Probieren Sie es online!
quelle
Haskell ,
9694 Bytes-2 bytes dank nimi (mit
sortOn(0<$)
stattlength
)!Probieren Sie es online!
quelle
MATLAB 39 Bytes
Lesen Sie auch die Antwort von Jacob Watson
quelle
b=triu(a'*a,1);
4 Bytes gespart.triu
ursprünglich aber irgendwieSQL Server, 93 Byte
Es wird davon ausgegangen, dass die Eingabe aus einer Tabelle des Formulars stammt
Beispiel einer Tabellenpopulation:
Erläuterung:
Ich gehe davon aus, dass einer "Liste von Ganzzahlen" ein Index zugeordnet ist, in meinem Fall die Spalte
i
. Die Spaltea
enthält die Werte der Liste.Ich erstelle Produkte von jedem Paar, wobei das linke Paar früher in der Liste steht als das rechte Paar. Ich gruppiere dann nach dem Produkt und sortiere nach der bevölkerungsreichsten Zahl.
Ich bin ein bisschen traurig, dass ich keine CTE- oder Partitionierungsklauseln verwenden durfte, aber sie waren einfach zu lang.
SELECT
ist ein sehr teures Stichwort.Alternative, 183 Bytes
Wenn SQL keine separate Indexspalte hat, ist hier eine Lösung, bei der ich mithilfe der
ROW_NUMBER
Funktion einen Index erstelle . Ich persönlich interessiere mich nicht für die Bestellung, aber eine Bestellung ist erforderlich und die Verwendung dera
Spalte ist die kürzeste.quelle
CJam , 29 Bytes
Probieren Sie es online!
quelle
Burlesque - 8 Bytes
Probieren Sie es hier online aus.
(und ja, Burlesque hat auch einen Befehl für "am wenigsten verbreitetes Element")
quelle
C # (Visual C # Interactive Compiler) , 95 Byte
Probieren Sie es online!
Weniger Golf Code:
quelle
PHP, 91 Bytes
Nimmt Eingaben von Befehlszeilenargumenten entgegen. Laufen Sie mit
-nr
oder versuchen Sie es online .Verwenden Sie PHP 7, um die STRICT MODE-Warnung zu vermeiden.
quelle
J,
29252423 BytesProbieren Sie es online!
Wie
quelle
Japt
-h
, 11 BytesVersuch es
Versuch es
quelle
APL (NARS), 53 Zeichen, 106 Byte
Prüfung:
quelle