Desafio:
Dado um número inteiro positivo, produza a subsequência de um dígito mais longa que ocorre pelo menos duas vezes, AND tem limites de outro dígito (ou o início / fim do número inteiro).
Um exemplo:
Entrada: 7888885466662716666
a subsequência mais longa de um único dígito seria 88888
( 7[88888]5466662716666
) com um comprimento de 5. No entanto, essa subsequência ocorre apenas uma vez no número inteiro.
Em vez disso, o resultado da entrada 7888885466662716666
deve ser 6666
( 78888854[6666]271[6666]
), pois ocorre (pelo menos) duas vezes.
Regras do desafio:
- O comprimento das subsequências tem prioridade sobre a quantidade de vezes que ocorre. (Ou seja, com entrada
8888858888866656665666
, produzimos88888
([88888]5[88888]66656665666
; comprimento 5, ocorre duas vezes), e não666
(88888588888[666]5[666]5[666]
; comprimento 3, ocorre três vezes). - Se o comprimento de várias subsequências for igual, produziremos a que tiver o maior número de ocorrências. Ou seja, com a entrada
3331113331119111
, produzimos111
(333[111]333[111]9[111]
; comprimento 3, ocorre três vezes), e não333
([333]111[333]1119111
; comprimento 3 também, mas ocorre duas vezes) - Se a contagem de ocorrências e o comprimento de várias subsequências forem iguais, você poderá gerar uma delas ou todas (em qualquer ordem). Ou seja, com a entrada
777333777333
, os eventuais resultados são os seguintes:777
;333
;[777, 333]
; ou[333, 777]
. - A subsequência deve ter limites de outros dígitos (ou o início / fim do número inteiro). Ou seja, com a entrada,
122222233433
o resultado é33
(1222222[33]4[33]
; comprimento 2, ocorre duas vezes) e não222
(1[222][222]33433
comprimento 3, ocorre duas vezes com ambos inválidos).- Isso se aplica a todos os números contados no contador de ocorrências. Ou seja, com a entrada,
811774177781382
o resultado é8
([8]117741777[8]13[8]2
; comprimento 1, ocorre três vezes) e não77
(811[77]41[77]781382
/811[77]417[77]81382
; comprimento 2, ocorre duas vezes com um inválido) nem1
(8[1][1]774[1]7778[1]382
;; comprimento 1, ocorre quatro vezes com dois inválidos).
- Isso se aplica a todos os números contados no contador de ocorrências. Ou seja, com a entrada,
- Você pode assumir que a entrada não conterá nenhum dígito
0
(ela corresponderá[1-9]+
). (Isso evita que seja necessário lidar com casos de teste como10002000
esse000
, onde a maioria dos idiomas seria impressa0
por padrão.) - Você pode assumir que a entrada sempre conterá pelo menos uma saída válida.
- As E / S são flexíveis. Pode ser uma lista / matriz / fluxo de dígitos / bytes / caracteres ou como sequência em vez de um único número inteiro.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
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 limitado por outros números inteiros. Acho que não devemos contar a ocorrência que é uma substring de 1111
. É melhor esperar pelo OP, de fato.
1112221112221111
estes são os subsequ�ncias e suas contagens: 1111 (1)
, 111 (2)
, 222 (2)
. Uma vez que só produz sequências que ocorrem pelo menos duas vezes, a saída pode ser um de: 111
, 222
, [111,222]
, [222,111]
. (Veja a quarta regra para obter mais informações.) Basicamente 1111
, apenas contará como 1111
, e não como 1
e 111
ou 11
e 11
. Vou adicionar seu caso de teste, mas a saída é um ou ambos 111
e 222
.
8888858888866656665666
. Se eu interpretei o desafio corretamente, as soluções Brachylog e 05AB1E falharam.