Sfida:
Dato un numero intero positivo, genera la sottosequenza a cifra singola più lunga che si verifica almeno due volte e ha i confini di un'altra cifra (o l'inizio / fine dell'intero).
Un esempio:
Input: 7888885466662716666
la sottosequenza più lunga di una singola cifra sarebbe 88888
( 7[88888]5466662716666
) con una lunghezza di 5. Tuttavia, questa sottosequenza si verifica solo una volta nell'intero.
Invece, il risultato per l'input 7888885466662716666
dovrebbe essere 6666
( 78888854[6666]271[6666]
), poiché si verifica (almeno) due volte.
Regole della sfida:
- La lunghezza delle sottosequenze ha la priorità sul numero di volte in cui si verifica. (Vale a dire con input
8888858888866656665666
, produciamo88888
([88888]5[88888]66656665666
; lunghezza 5, si verifica due volte), e non666
(88888588888[666]5[666]5[666]
; lunghezza 3, si verifica tre volte). - Se la lunghezza di più sottosequenze è uguale, viene emesso quello con il maggior numero di occorrenze. Vale a dire con input
3331113331119111
, abbiamo output111
(333[111]333[111]9[111]
; lunghezza 3, si verifica tre volte), e non333
([333]111[333]1119111
; anche lunghezza 3, ma si verifica due volte) - Se il conteggio delle occorrenze e la lunghezza di più sottosequenze sono uguali, è possibile generare una di esse o tutte (in qualsiasi ordine). Cioè con ingressi
777333777333
, le uscite possibili sono:777
;333
;[777, 333]
; o[333, 777]
. - La sottosequenza deve avere i confini di altre cifre (o l'inizio / la fine dell'intero). Vale a dire con input
122222233433
il risultato è33
(1222222[33]4[33]
; lunghezza 2, ricorre due volte) e non222
(1[222][222]33433
, lunghezza 3, ricorre due volte con entrambi non validi).- Questo vale per tutti i numeri che vengono conteggiati nel contatore delle occorrenze. Vale a dire con
811774177781382
il risultato il risultato è8
([8]117741777[8]13[8]2
; lunghezza 1, si verifica tre volte) e non77
(811[77]41[77]781382
/811[77]417[77]81382
; lunghezza 2, si verifica due volte con una non valida) né1
(8[1][1]774[1]7778[1]382
; lunghezza 1, si verifica quattro volte con due non valide).
- Questo vale per tutti i numeri che vengono conteggiati nel contatore delle occorrenze. Vale a dire con
- Puoi presumere che l'input non conterrà alcuna cifra
0
(corrisponderà[1-9]+
). (Questo per evitare di dover gestire casi di test come quelli10002000
che dovrebbero essere prodotti000
, dove la maggior parte delle lingue produrrebbe0
di default.) - Si può presumere che l'input conterrà sempre almeno un output valido.
- Gli I / O sono entrambi flessibili. Può essere un elenco / matrice / flusso di cifre / byte / caratteri o come stringa anziché un singolo intero.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si consiglia vivamente di aggiungere una spiegazione per la risposta.
Casi test:
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]
222
quando è delimitato da altri numeri interi. Immagino che non dovremmo semplicemente contare l'occorrenza che è una sottostringa di 1111
. Meglio aspettare l'OP, comunque.
1112221112221111
queste sono le sottosequenze ed i loro conteggi: 1111 (1)
, 111 (2)
, 222 (2)
. Dato che emette solo sequenze verificano almeno due volte, l'uscita può essere: 111
, 222
, [111,222]
, [222,111]
. (Vedi la quarta regola per ulteriori informazioni.) Fondamentalmente 1111
conterà sempre come 1111
, e non come 1
e 111
o 11
e e 11
. Aggiungerò il tuo caso di prova, ma l'output è uno o entrambi di 111
e 222
.
8888858888866656665666
. Se ho interpretato correttamente la sfida, entrambe le soluzioni Brachylog e 05AB1E falliscono.