Herausforderung:
Bei einer positiven Ganzzahl geben Sie die längste einstellige Teilfolge aus, die mindestens zweimal vorkommt, UND hat die Grenzen einer anderen Ziffer (oder den Anfang / das Ende der Ganzzahl).
Ein Beispiel:
Eingabe: 7888885466662716666
Die längste Teilfolge einer einzelnen Ziffer wäre 88888
( 7[88888]5466662716666
) mit einer Länge von 5. Diese Teilfolge kommt jedoch nur einmal in der ganzen Zahl vor.
Stattdessen ist das Ergebnis für die Eingabe 7888885466662716666
sollte 6666
( 78888854[6666]271[6666]
), da es (mindestens) zweimal vorkommt.
Herausforderungsregeln:
- Die Länge der Teilsequenzen hat Vorrang vor der Häufigkeit ihres Auftretens. (Dh mit Eingabe geben
8888858888866656665666
wir aus88888
([88888]5[88888]66656665666
; Länge 5 tritt zweimal auf) und nicht666
(88888588888[666]5[666]5[666]
; Länge 3 tritt dreimal auf). - Wenn die Länge mehrerer Teilsequenzen gleich ist, geben wir die mit der größten Häufigkeit aus. Dh mit Input geben
3331113331119111
wir aus111
(333[111]333[111]9[111]
; Länge 3, kommt dreimal vor) und nicht333
([333]111[333]1119111
; Länge 3 auch, kommt aber zweimal vor) - Wenn die Anzahl der Vorkommen und die Länge mehrerer Teilsequenzen gleich sind, können Sie eine oder alle (in beliebiger Reihenfolge) ausgeben. Dh mit Eingang
777333777333
, sind die möglichen Ausgänge:777
;333
;[777, 333]
; oder[333, 777]
. - Die Subsequenz muss Grenzen anderer Ziffern haben (oder den Anfang / das Ende der ganzen Zahl). Dh bei Eingabe ist
122222233433
das Ergebnis33
(1222222[33]4[33]
; Länge 2 kommt zweimal vor) und nicht222
(1[222][222]33433
Länge 3 kommt zweimal vor, beide ungültig).- Dies gilt für alle Nummern, die auf den Vorkommenszähler angerechnet werden. Dh bei Eingabe ist
811774177781382
das Ergebnis8
([8]117741777[8]13[8]2
; Länge 1, kommt dreimal vor) und nicht77
(811[77]41[77]781382
/811[77]417[77]81382
; Länge 2, kommt zweimal mit einer ungültigen vor) oder1
(8[1][1]774[1]7778[1]382
; Länge 1, kommt viermal mit zwei ungültigen vor).
- Dies gilt für alle Nummern, die auf den Vorkommenszähler angerechnet werden. Dh bei Eingabe ist
- Sie können davon ausgehen, dass die Eingabe keine Ziffern enthält
0
(sie stimmt überein[1-9]+
). (Damit soll vermieden werden, dass Testfälle wie10002000
diese ausgegeben werden müssen000
, bei denen die meisten Sprachen0
standardmäßig ausgegeben werden.) - Sie können davon ausgehen, dass die Eingabe immer mindestens eine gültige Ausgabe enthält.
- I / O sind beide flexibel. Kann eine Liste / ein Array / ein Datenstrom aus Ziffern / Bytes / Zeichen oder eine Zeichenfolge anstelle einer einzelnen Ganzzahl sein.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Input: 7888885466662716666 / [7,8,8,8,8,8,5,4,6,6,6,6,2,7,1,6,6,6,6]
Output: 6666 / [6,6,6,6]
Input: 3331113331119111 / [3,3,3,1,1,1,3,3,3,1,1,1,9,1,1,1]
Output: 111 / [1,1,1]
Input: 777333777333 / [7,7,7,3,3,3,7,7,7,3,3,3]
Possible outputs: 777; 333; [777,333]; [333;777] / [7,7,7]; [3,3,3]; [[7,7,7],[3,3,3]]; [[3,3,3],[7,7,7]]
Input: 122222233433 / [1,2,2,2,2,2,2,3,3,4,3,3]
Output: 33 / [3,3]
Input: 811774177781382 / [8,1,1,7,7,4,1,7,7,7,8,1,3,8,2]
Output: 8 / [8]
Input: 555153333551 / [5,5,5,1,5,3,3,3,3,5,5,1]
Output: 1 / [1]
Input: 12321 / [1,2,3,2,1]
Possible outputs: 1; 2; [1,2]; [2,1] / [1]; [2]; [[1],[2]]; [[2],[1]]
Input: 944949949494999494 / [9,4,4,9,4,9,9,4,9,4,9,4,9,9,9,4,9,4]
Output: 4 / [4]
Input: 8888858888866656665666 / [8,8,8,8,8,5,8,8,8,8,8,6,6,6,5,6,6,6,5,6,6,6]
Output: 88888 / [8,8,8,8,8]
Input: 1112221112221111 / [1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1]
Output: 111; 222; [111,222]; [222,111] / [1,1,1]; [2,2,2]; [[1,1,1],[2,2,2]]; [[2,2,2],[1,1,1]]
Input: 911133111339339339339339 / [9,1,1,1,3,3,1,1,1,3,3,9,3,3,9,3,3,9,3,3,9,3,3,9]
Output: 111 / [1,1,1]
8888858888866656665666
. Wenn ich die Herausforderung richtig interpretiert habe, schlagen sowohl die Brachylog- als auch die 05AB1E-Lösung fehl.222
wenn es von anderen ganzen Zahlen begrenzt wird. Ich denke, wir sollten das Vorkommen, von dem ein Teilstring ist, einfach nicht zählen1111
. Warten Sie besser auf die OP.1112221112221111
diese sind die Teilfolgen und ihre zählt:1111 (1)
,111 (2)
,222 (2)
. Da wir nur Sequenzen mindestens doppelt vorkommende ausgibt, kann der Ausgang einer der folgenden sein:111
,222
,[111,222]
,[222,111]
. (Weitere Informationen finden Sie in der vierten Regel.) Grundsätzlich1111
wird immer nur als1111
und nicht als1
und111
oder11
und gezählt11
. Ich werde Ihren Testfall hinzufügen, aber die Ausgabe ist eine oder beide von111
und222
.Antworten:
05AB1E , 14 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee , 12 Bytes
Probieren Sie es online!
Vorherige Version - 14 Bytes
Probieren Sie es online!
Wie es funktioniert?
quelle
JavaScript (ES6),
797368 ByteÜbernimmt die Eingabe als Zeichenfolge. Gibt eine ganze Zahl zurück.
Probieren Sie es online!
Kommentiert
quelle
...s
die Eingabe in eine Liste von Ziffern konvertiert wird, ist es nicht kürzer, die Eingabe einfach als eine Liste von Ziffern zu betrachten, anstatt als eine Zeichenfolge? Ich habe flexible E / A zugelassen. (Aber ich[...s,0]
auch machen, wenns
schon eine Liste ist.Netzhaut , 56 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
Listen Sie alle maximal wiederholten Ziffernfolgen auf.
Sortieren Sie die Liste in der Reihenfolge.
Listen Sie alle multiplen Teilfolgen mit ihrer "Anzahl" auf.
In aufsteigender Reihenfolge der Anzahl sortieren.
Löschen Sie die Zählungen.
In aufsteigender Reihenfolge der Länge sortieren. (Wenn die Längen gleich sind, bleibt die vorherige Reihenfolge aufgrund der Anzahl erhalten.)
Behalten Sie den letzten bzw. längsten Wert bei.
quelle
R , 102 Bytes
Probieren Sie es online!
Da es noch keine R-Antwort gab, habe ich beschlossen, es zu versuchen, und nun ... es war nicht einfach. Ich weiß nicht wirklich, ob es ein guter Ansatz ist, aber jetzt geht es los.
Ein- und Ausgabevektoren von Zeichen.
quelle
Perl 6 ,
5856 BytesProbieren Sie es online!
quelle
Python 2 ,
123120 BytesProbieren Sie es online!
quelle
Powershell, 101 Byte
Erklärtes Testskript:
Ausgabe:
quelle
Python 2 ,
114113 Bytes-1 Byte dank TFeld .
Probieren Sie es online!
quelle
Haskell, 72 Bytes
Wie es funktioniert
quelle
Gloss
für die grafische Ausgabe oderMatrix
). Ich verwende "Haskell + etwas", wenn ich die Byteanzahl für die Importe nicht einschließen möchte. Ich glaube, wir hatten dieses Thema auf Meta, aber ich kann es nicht mehr finden. Wenn ich mich richtig erinnere, hatten wir keine allgemeine Definition von "Standardbibliothek". Was sollte die Referenz für Haskell sein? Der Haskell Report, die Basis von GHC, die Haskell Plattform, noch etwas?Data.Lists
Bibliothek auf TIO oder einem anderen Online-Haskell-Compiler nicht verfügbar?Data.Lists
fehlt auf TIO. Sie können es mit dieser Version testen .R , 85 Bytes
Probieren Sie es online!
Eingabe: Ein Vektor mit getrennten ganzzahligen Ziffern, z
c(1,8,8...)
Ausgabe: Ein Vektor mit getrennten ganzzahligen Ziffern
Abgerollter Code mit Erklärung:
Alternative Version, die einen Vektor mit ganzen Zahlen oder Zeichen akzeptiert:
R 88 Bytes
Probieren Sie es online!
Eingabe: Ein Vektor aus getrennten Zeichen oder Ziffern, z. B.
c("1","8","8"...)
oderc(1,8,8...)
Ausgabe: ein Vektor von getrennten Zeichen, wenn die Eingabe ein Vektor von Zeichen war, ein Vektor von Ziffern, wenn die Eingabe ein Vektor von Ziffern war
quelle
Rot ,
256250 BytesProbieren Sie es online!
Wirklich, wirklich lange Lösung dieses Mal ... (Seufzer)
Nimmt die Eingabe als String.
Erläuterung:
quelle
Java (JDK 10) , 213 Byte
Probieren Sie es online!
Erklärung (veraltet)
Credits
quelle
j*o>M
Scheck. Wenn ich es richtig verstehe, dauert es die maxlength * occurrence-count
. Aber für einen Testfall wie1113311133933933933933
zum Beispiel111
wäre das (3 * 2 = 6) und das33
wäre (2 * 6 = 12). Es gibt also33
das höchste Vorkommen aus, anstatt111
mindestens zweimal das längste Vorkommen . Auchvar r="";for(;O-->0;)r+=D;return r;
kann golfed werden , umfor(;O-->0;)System.out.print(D);
in Java 10 oder noch kürzer in Java 11:return(D+"").repeat(O);
.int X[][]=new int[10][99],d,l=99,
zuint l=99,X[][]=new int[10][l],d,
.d++<9
anstatt zu schreiben++d<10
. Entschuldigung für den Rest: Ich bin heute ziemlich müde = _ =Ruby ,
6867 BytesProbieren Sie es online!
Ein- und Ausgabe von Zeichen-Arrays.
Der Ansatz ist ziemlich einfach: Wir identifizieren die Läufe von aufeinanderfolgenden Ziffern (unter
chunk
Verwendung von unary+
als Identitätsfunktion) und nehmen das Maximum - zuerst durch die Größe des Laufs (zurückgesetzt auf Null, wenn die Anzahl seiner Vorkommen <2 ist), dann durch die Anzahl selbst .quelle
PCRE, 152 Bytes
Sehen Sie es in Aktion auf: https://regex101.com/r/0U0dEp/1 (schauen Sie sich nur das erste Match in jedem Testfall an)
Dies ist nur zum Spaß, da Regex keine echte Programmiersprache für sich ist und die Lösung begrenzt ist: P
Da eine Gruppe mit der Breite Null, wie z. B.
(?:)+
nur einmal übereinstimmt und sich nicht unbegrenzt wiederholt, und PCRE intern Kopien von Gruppen erstellt, die mit Grenzwerten quantifiziert wurden, musste ich eine magische Zahl verwenden ("{1,592}") Das heißt, wir können nur bis zu 592 aufeinanderfolgende Ziffernfolgen durchsuchen, um eine Konkurrenzmenge zu finden, die möglicherweise länger ist als die, die derzeit geprüft wird. Mehr Infos zu diesem Konzept hier .quelle
Perl 5 , 88 Bytes
Probieren Sie es online!
Leicht ungolfed, mit Tests:
quelle
Wolfram Language (Mathematica) , 67 Byte
Funktion pur. Nimmt eine Liste von Ziffern als Eingabe und gibt eine Liste von Untersequenzen (in keiner bestimmten Reihenfolge) als Ausgabe zurück. Nicht sicher, ob die Klausel "muss mindestens zweimal vorkommen" sauberer gehandhabt werden kann. Probieren Sie es online!
quelle
Japt
-h
, 12 BytesEingabe und Ausgabe sind Zeichenfolgen.
Versuch es
quelle