Definitionen
- Eine Teilfolge darf nicht zusammenhängend sein, z. B.
[1, 1, 1]
ist eine Teilfolge von[1, 2, 1, 2, 1]
. - Eine gleiche Teilfolge ist eine Teilfolge, in der jedes Element gleich ist.
- Die längste gleiche Teilfolge darf nicht eindeutig sein, z. B.
[1, 1]
und[2, 2]
sind beide längste gleiche Teilfolgen von[2, 1, 1, 2]
.
Eingang
Eine nicht leere Liste positiver Ganzzahlen in einem der folgenden Formate:
- als native Implementierung einer Reihe positiver Ganzzahlen in Ihrer Sprache
- als Zeichenfolge von durch neue Zeilen getrennten Ganzzahlen in Dezimalzahl
- als eine Folge von durch Zeilenumbrüche getrennten ganzen Zahlen in unary
- andere sinnvolle Formate
Ausgabe
Alle längsten gleichen Teilfolgen in beliebiger Reihenfolge in einem der folgenden Formate:
- als 2D-verschachteltes Array in Ihrer Sprache (wenn die Eingabe ein Array ist)
- als abgeflachtes Array, wobei die gleichen Elemente aneinander grenzen
- jedes andere vernünftige Format
Wertung
Obwohl wir etwas Langes suchen, sollte der verwendete Code in Bezug auf die Anzahl der Bytes so kurz wie möglich sein, da dies Code-Golf ist
Testfälle
Eingänge:
[1, 2, 3]
[1, 2, 2, 1]
[1, 2, 3, 2, 1]
[1, 2, 1, 2, 3, 4, 1]
Ausgänge:
[[1], [2], [3]]
[[1, 1], [2, 2]]
[[1, 1], [2, 2]]
[[1, 1, 1]]
Beachten Sie, dass für die obigen Ausgaben jede Reihenfolge gültig ist.
Ein abgeflachtes Array ist auch gültig, solange die gleichen Elemente zusammenhängend sind.
code-golf
array-manipulation
Undichte Nonne
quelle
quelle
1 2 3
,1 1 2 2
,1 1 2 2
,1 1 1
?Antworten:
Gelee , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Brachylog , 7 Bytes
Probieren Sie es online!
Erläuterung
⊇
Die natürliche Reihenfolge von erzeugt zuerst die längsten Teilsequenzen, also sind es diejenigen, die in der ersten Gruppe enden.quelle
Pyth, 5 Bytes
Testsuite
Erläuterung:
Das ist implizit
S.M/QZQ
..M
ist die maximale Funktion,.M/QZQ
wählt also alle Elemente aus, bei denen der Wert von/QZ
, Anzahl der Vorkommen des Elements in der Eingabe, maximal ist.S
sortiert dann die Liste so, dass identische Elemente aneinander grenzen.quelle
Bash, 66 Bytes
Das scheint viel kürzer zu sein, aber ich kann nicht herausfinden, wie.
Probieren Sie es online!
Danke an Leaky Nun für 3 Bytes!
quelle
Python 2 ,
6863 BytesProbieren Sie es online!
quelle
print
mitreturn
.map
.Mathematica,
423125 BytesDanke @GregMartin für 5 Bytes und @MartinEnder für ein weiteres Byte!
Erläuterung
quelle
Gather@#~MaximalBy~Length&
.MaximalBy[Length]@*Gather
.Gestapelt ,
555243 BytesProbieren Sie es online!
Arbeitet mit Lauflängencodierung der Eingabe, Sortieren nach Vorkommen, Beibehalten von Vorkommen, für die die Anzahl der Vorkommen maximal ist, und Lauflängendecodierung. Ausgabe über eine flache Liste, wie von der Challenge akzeptiert.
quelle
Eigentlich 23 Bytes
Probieren Sie es online aus oder führen Sie alle Testfälle aus !
Vielen Dank an Leaky Nun für den Hinweis auf eine Ein-Byte-Verbesserung, die mir eigentlich klar sein sollte
-3 Bytes vom entspannten Ausgabeformat
Erläuterung:
quelle
Python 2, 138 Bytes
quelle
itertools
ist nie die kürzeste: pMATL , 10 Bytes
Probieren Sie es online!
Erläuterung
Ähnlich wie bei meiner Octave-Antwort. Betrachten Sie die Eingabe
[10, 20, 30, 20, 10]
als Beispiel.quelle
Oktave , 47 Bytes
Probieren Sie es online!
Erläuterung
Die zweiten und dritten Ausgänge von
mode
(erhalten als[~,b,c]=mode(...)
) geben jeweils die Anzahl der Wiederholungen (b
) und ein Spaltenzellenfeld (c
) der am häufigsten wiederholten Elemente in der Eingabe (input(0)
) an. Das Zellenarrayc
wird dann horizontal wiederholtb
(repmat(c,1,b)
), in eine durch Kommas getrennte Liste umgewandelt ({:}
) und horizontal verkettet ([...]
), um eine numerische Matrix zu erhalten, die angezeigt wird (disp(...)
).quelle
05AB1E ,
85 BytesGibt eine flache Liste in der angegebenen Reihenfolge aus
Verwendet die 05AB1E- Codierung. Probieren Sie es online!
quelle
CJam , 22 Bytes
Dies ist ein anonymer Block (eine Funktion), der die Eingabe vom oberen Rand des Stapels nimmt und mit der Ausgabe ersetzt. Die Ausgabe ist ein abgeflachtes Array, bei dem gleiche Elemente aneinandergrenzen.
Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
[10 20 30 20 10 ]
als Beispiel.quelle
Perl 5, 58 Bytes
quelle
APL (Dyalog) , 22 Bytes
Benötigt,
⎕ML←3
was auf vielen Systemen Standard ist.Programm:
s/⍨(⌈/=⊢)≢¨s←⊂⍨(⍋⊃¨⊂)⎕
⎕
numerische (ausgewertete) Eingabe erhalten(
…)
Implizite Funktion⍋
die Indizes aufsteigender Elemente, aus denen⊃¨
jeder auswählen kann⊂
dem gesamten Array ausgewählt werden⊂⍨
Partition durch Schneiden an seiner Zunahmes←
speichern als s≢¨
zählen jeden(
…)
Stillschweigende Funktion⌈/
das Maximum (Tally)=
gleich⊢
dem Argument (den Tallies)s/⍨
Filter s damitFunktion:
{s/⍨(⌈/=⊢)≢¨s←⊂⍨⍵[⍋⍵]}
{
…}
Anonyme Funktion, bei der das Argument ist⍵
⍵[⍋⍵]
sort (lit. index mit indizes aufsteigender artikel)⊂⍨
Partition durch Schneiden an seiner Zunahmes←
speichern als s≢¨
zählen jeden(
…)
Stillschweigende Funktion⌈/
das Maximum (Tally)=
gleich⊢
dem Argument (den Tallies)s/⍨
Filter s mit dem Online ausprobieren!quelle
PHP, 69 Bytes
Online Version
Ausgabeformat
Schlüssel = Wert, Wert = Anzahl
PHP, 96 Bytes
Online Version
Ausgabeformat
1D Key = Wert
2D Key = Position im Eingabearray für jeden Wert
PHP, 97 Bytes
quelle
JavaScript (ES6),
8483 BytesGibt ein sortiert abgeflachtes Array zurück.
Testfälle
Code-Snippet anzeigen
quelle
CJam, 24 Bytes
Ich wollte das in 05ab1e machen, aber ich habe aufgegeben: P
Das ist ein Block. Eingabe und Ausgabe sind Arrays auf dem Stapel.
Probieren Sie es online!
Erläuterung:
quelle
$W=
statt des ersten0=
.Clojure, 65 Bytes
Ungolfed:
quelle
145 Bytes
Das muss auch besser möglich sein, aber ich stecke irgendwie fest.
Erläuterung
Wahrscheinlich wäre ein völlig anderer Ansatz viel kürzer, sodass die C # -Herausforderung noch offen ist :)
quelle
Ruby , 57 Bytes
Probieren Sie es online!
quelle