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 7888885466662716666deve 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,
122222233433o resultado é33(1222222[33]4[33]; comprimento 2, ocorre duas vezes) e não222(1[222][222]33433comprimento 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,
811774177781382o 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 como10002000esse000, onde a maioria dos idiomas seria impressa0por 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]
222quando 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.
1112221112221111estes 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 1e 111ou 11e 11. Vou adicionar seu caso de teste, mas a saída é um ou ambos 111e 222.
8888858888866656665666. Se eu interpretei o desafio corretamente, as soluções Brachylog e 05AB1E falharam.