Einführung
Betrachten wir das folgende Array:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
Eine Gruppe besteht aus den gleichen Ziffern nebeneinander. Im obigen Array gibt es 5 verschiedene Gruppen:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
1, 1, 1
2, 2
1, 1, 1, 1
2, 2, 2
1, 1, 1
Die kleinste Gruppe davon ist [2, 2]
, also geben wir aus [2, 2]
.
Nehmen wir ein anderes Beispiel:
[3, 3, 3, 4, 4, 4, 4, 5, 5, 4, 4, 3, 3, 4, 4]
3, 3, 3
4, 4, 4, 4
5, 5
4, 4
3, 3
4, 4
Sie können sehen, dass es mehrere Gruppen mit derselben Länge gibt. Die kleinsten Gruppen sind:
[3, 3], [4, 4], [4, 4] and [5, 5].
Wir geben also nur [3, 3], [4, 4], [4, 4], [5, 5]
in einem vernünftigen Format aus. Sie können diese in beliebiger Reihenfolge ausgeben.
Die Aufgabe
Bei einem Array, das nur aus positiven ganzen Zahlen besteht, geben Sie die kleinste (n) Gruppe (n) aus dem Array aus. Sie können davon ausgehen, dass das Array mindestens eine Ganzzahl enthält.
Testfälle
Input: [1, 1, 2, 2, 3, 3, 4]
Output: [4]
Input: [1]
Output: [1]
Input: [1, 1, 10, 10, 10, 100, 100]
Output: [1, 1], [100, 100]
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
11101010100100
scheint für die Eingabe nicht korrekt zu sein: p.Antworten:
Pyth,
141211Test Suite
2 Bytes dank Jakube! Und 1 Byte dank isaacg!
Leider entspricht die Lauflängendekodierung nicht genau unseren Wünschen, sie funktioniert jedoch mit einer geringfügigen Problemumgehung, die jedoch etwas länger dauert als die manuelle Implementierung:
Wir danken Jakube, dass er das herausgefunden hat.
quelle
mr]d9.mhbrQ8
.bmYN
==mM_M
Mathematica, 24 Bytes
Dies ist eine Zusammenstellung von zwei Funktionen, die auf eine Liste angewendet werden können.
Split
Nimmt alle Gruppen von fortlaufenden Nummern undMinimalBy[Length]
wählt diejenigen mit minimaler Länge aus.quelle
Haskell, 38 Bytes
Anwendungsbeispiel:
argmins length.group $ [3,3,3,4,4,4,4,5,5,4,4,3,3,4,4]
->[[4,4],[3,3],[4,4],[5,5]]
.Bilde Gruppen gleicher Elemente und finde solche mit minimaler Länge.
quelle
Data.Lists
?argmins
Beispiel: Data.List.Extras.Agrmax .Python 2, 120 Bytes
Nimmt Eingaben als eine Zeichenfolge von durch Leerzeichen getrennten Ganzzahlen mit einem nachgestellten Leerzeichen und gibt eine Liste von Zeichenfolgenlisten aus. Die Strategie besteht darin, Gruppen mithilfe des regulären Ausdrucks zu finden
(\d+ )\1*
(der einer oder mehreren durch Leerzeichen getrennten Ganzzahlen mit einem nachgestellten Leerzeichen entspricht) zu finden, sie dann auf Leerzeichen in Listen mit Ganzzahlen aufzuteilen und die Gruppen zu drucken, deren Länge der minimalen Gruppenlänge entspricht.Probieren Sie es online aus
quelle
C #, 204 Bytes
Ich weiß nicht, ob es fair ist, eine Saite zu verwenden, wenn man bedenkt, dass alle Golf-Esolangs ihre Eingabe auf die gleiche Weise erhalten, aber er forderte eine Array-Eingabe an.
ungolfed:
Ich brauche einen Weg, um die kleinsten Übereinstimmungen für das Übereinstimmungsarray zu erhalten. Die meisten meiner Bytes werden dort verschwendet. Ich versuche, mich mit LINQ und Lambda zu beschäftigen.
quelle
Python 2.x, 303 Bytes
Hässlichste. Code. Je.
Eingabe: Ein Array im Format
r'\[(\d,)*(\d,?)?\]'
Mit anderen Worten, ein Python-Array von Zahlen
Ausgabe: Ein Array von Arrays (die kleinsten Gruppen) in der Reihenfolge, in der sie im Eingabearray angezeigt werden
Zusätzliche zufällige Funktionen (Funktionen, die ich nicht machen wollte):
min
anmax
, wird es eine Reihe der größten Gruppen zurück.print r
, werden alle Gruppen der Reihe nach gedruckt.quelle
MATL, 15 Bytes
Probieren Sie es online aus
Die Eingabe ist wie ein Vektor
[1 2 3 4]
und die Ausgabe ist eine Matrix, in der jede Spalte eine der kleinsten Gruppen ist, z.für den dritten Testfall.
Erläuterung:
quelle
Jelly,
221716 BytesProbieren Sie es online!
quelle
JavaScript (ES6), 106
Prüfung
quelle
h.map(length)
nichtlength
sollte es eine Funktion mit dem String als Argument sein, keine Methode von stringJavaScript (ES6), 113 Byte
quelle
Retina,
9185807977767574 BytesProbieren Sie es online!
Erläuterung
Die Eingabe ist
1,1,10,10,10,100,100
.Die erste Zeile entspricht Gruppen mit denselben Begriffen:
Die Eingabe wird:
Die folgenden zwei Zeilen stellen die Anzahl der Kommas vor die Zeile:
Die Eingabe wird:
Dann werden sie nach dieser Zeile sortiert, die nach der ersten Zahl als Index sucht:
Die Eingabe wird:
Dann finden diese beiden Zeilen die Stelle, an der die Länge unterschiedlich ist, und entfernen alles weiter:
Die Eingabe wird:
Dann werden die Zahlen durch diese beiden Zeilen entfernt:
Wo die Eingabe wird:
quelle
APL, 25 Zeichen
Auf Englisch:
quelle
⍵⊂⍨1,2≠/⍵
J , 31 Bytes
Die Eingabe ist ein Array von Werten. Die Ausgabe ist ein Array von Boxed Arrays.
Verwendung
Erläuterung
quelle
Clojure, 65 Bytes
Verwendet
+
alsidentity
Funktion wie(+ 5)
5 :) Der Rest sollte offensichtlich sein,G
ist eine Hash-Map, die als Funktion verwendet wird und mit einem Schlüssel den entsprechenden Wert zurückgibt.quelle
Brachylog , 6 Bytes
Probieren Sie es online!
Eingabe über die Eingabevariable und Ausgabe über die Ausgabevariable.
Obwohl, anders als
ḅ
,ᵍ
Gruppen nicht aufeinanderfolgenden gleiche Elemente, dielᵒ
sind immer noch notwendig , die Gruppe mit den kürzesten Längen zu finden, und es funktioniert , weil die Reihenfolge der Gruppen in der Ausgabe vonᵍ
durch die Position des ersten Elements jeder Gruppe bestimmt wird, so dasᵍhᵐ
könnte als eine Art funktionieren Deduplikat von Pseudo-Metapredikat funktionieren.quelle
Perl 5
-MList::Util=pairkeys,min -a
, 69 BytesProbieren Sie es online!
quelle