Definições
- Uma subsequência pode não ser contígua, por exemplo,
[1, 1, 1]
é uma subsequência de[1, 2, 1, 2, 1]
. - Uma subsequência igual é uma subsequência na qual cada elemento é igual.
- A subsequência igual mais longa pode não ser única, por exemplo,
[1, 1]
e[2, 2]
são as duas subsequências iguais mais longas de[2, 1, 1, 2]
.
Entrada
Uma lista não vazia de números inteiros positivos em um dos formatos abaixo:
- como a implementação nativa de uma matriz de números inteiros positivos no seu idioma
- como uma sequência de números inteiros separados por nova linha em decimal
- como uma sequência de números inteiros separados por nova linha em
- quaisquer outros formatos razoáveis
Resultado
Todas as subsequências iguais mais longas em qualquer ordem em um dos formatos abaixo:
- como uma matriz aninhada 2D no seu idioma (se a entrada for uma matriz)
- como uma matriz achatada com os elementos iguais sendo contíguos
- qualquer outro formato razoável
Pontuação
Embora estejamos procurando algo longo, o código usado deve ser o mais curto possível em termos de número de bytes, já que este é um código-golfe
Casos de teste
Entradas:
[1, 2, 3]
[1, 2, 2, 1]
[1, 2, 3, 2, 1]
[1, 2, 1, 2, 3, 4, 1]
Saídas:
[[1], [2], [3]]
[[1, 1], [2, 2]]
[[1, 1], [2, 2]]
[[1, 1, 1]]
Observe que, para as saídas acima, qualquer pedido é válido.
Uma matriz nivelada também é válida, desde que os elementos iguais sejam contíguos.
code-golf
array-manipulation
Freira Furada
fonte
fonte
1 2 3
,1 1 2 2
,1 1 2 2
,1 1 1
?Respostas:
Gelatina , 5 bytes
Experimente online!
Como funciona
fonte
Braquilog , 7 bytes
Experimente online!
Explicação
⊇
A ordem natural da primeira gera as subsequências mais longas primeiro, então essas são as que terminam no primeiro grupo.fonte
Pitão, 5 bytes
Suíte de teste
Explicação:
Isso é implicitamente
S.M/QZQ
..M
é a função máxima, portanto,.M/QZQ
seleciona todos os elementos em que o valor de/QZ
, conte o número de ocorrências do elemento na entrada, é máximo.S
em seguida, classifica a lista para que elementos idênticos sejam contíguos.fonte
bash, 66 bytes
Parece que deve ser bem mais curto, mas não consigo descobrir como.
Experimente online!
Obrigado a Leaky Nun por 3 bytes!
fonte
Python 2 ,
6863 bytesExperimente online!
fonte
print
porreturn
.map
.Mathematica,
423125 bytesObrigado @GregMartin por 5 bytes e @MartinEnder por outro byte!
Explicação
fonte
Gather@#~MaximalBy~Length&
.MaximalBy[Length]@*Gather
.Empilhados ,
555243 bytesExperimente online!
Funciona codificando a entrada no comprimento da execução, classificando por ocorrências, mantendo ocorrências para as quais o número de ocorrências é máximo e decodificando a duração da execução. Resultados através de uma lista simples, como é aceitável pelo desafio.
fonte
Na verdade , 23 bytes
Experimente online ou execute todos os casos de teste !
Obrigado a Leaky Nun por apontar uma melhoria de um byte que realmente deveria ter sido óbvia para mim
-3 bytes do formato de saída relaxado
Explicação:
fonte
Python 2, 138 bytes
fonte
itertools
Nunca é o mais curto: pMATL , 10 bytes
Experimente online!
Explicação
Semelhante à minha resposta do Oitava. Considere a entrada
[10, 20, 30, 20, 10]
como um exemplo.fonte
Oitava , 47 bytes
Experimente online!
Explicação
A segunda e terceira saídas de
mode
(obtidas como[~,b,c]=mode(...)
), respectivamente, fornecem o número de repetições (b
) e uma matriz de células da coluna (c
) dos elementos mais repetidos na entrada (input(0)
). A matriz de célulasc
é repetida horizontalmenteb
vezes (repmat(c,1,b)
), convertida em uma lista separada por vírgulas ({:}
) e contatada horizontalmente ([...]
) para fornecer uma matriz numérica, que é exibida (disp(...)
).fonte
05AB1E ,
85 bytesProduz uma lista simples em ordem
Usa a codificação 05AB1E . Experimente online!
fonte
CJam , 22 bytes
Este é um bloco (função) anônimo que pega a entrada da parte superior da pilha e a substitui pela saída. A saída é uma matriz nivelada com os elementos iguais sendo contíguos.
Experimente online!
Explicação
Considere a entrada
[10 20 30 20 10 ]
como um exemplo.fonte
Perl 5, 58 bytes
fonte
APL (Dyalog) , 22 bytes
Requer
⎕ML←3
qual é o padrão em muitos sistemas.Programa:
s/⍨(⌈/=⊢)≢¨s←⊂⍨(⍋⊃¨⊂)⎕
⎕
obter entrada numérica (avaliada)(
…)
Função tácita⍋
os índices de itens ascendentes,⊃¨
cada um dos itens selecionados de⊂
toda a matriz⊂⍨
partição cortando seus aumentoss←
armazenar como s≢¨
registro cada(
…)
Função tácita,⌈/
o máximo (registro)=
é igual⊢
ao argumento (os registros)s/⍨
filtro s com issoFunção:
{s/⍨(⌈/=⊢)≢¨s←⊂⍨⍵[⍋⍵]}
{
...}
função anônima em que argumento é⍵
⍵[⍋⍵]
ordenar (lit. índice com índices de itens ascendentes)⊂⍨
partição cortando seus aumentoss←
armazenar como s≢¨
registro cada(
…)
Função tácita,⌈/
o máximo (registro)=
é igual⊢
ao argumento (os registros)s/⍨
filter s with that Experimente online!fonte
PHP, 69 bytes
Versão Online
Formato de saída
chave = valor, valor = contagem
PHP, 96 bytes
Versão Online
Formato de saída
Chave 1D = valor
Tecla 2D = posição na matriz de entrada para cada valor
PHP, 97 bytes
fonte
JavaScript (ES6),
8483 bytesRetorna uma matriz nivelada classificada.
Casos de teste
Mostrar snippet de código
fonte
CJam, 24 bytes
Eu queria fazer isso em 05ab1e, mas desisti: P
Isto é um bloco. Entrada e saída são matrizes na pilha.
Experimente online!
Explicação:
fonte
$W=
vez do primeiro0=
.Clojure, 65 bytes
Ungolfed:
fonte
C #, 145 bytes
Isso deve ser possível melhor também, no entanto, eu estou meio que preso.
Explicação
Provavelmente, uma abordagem totalmente diferente seria muito mais curta, então o desafio do C # ainda está aberto :)
fonte
Ruby , 57 bytes
Experimente online!
fonte