Definição
A partir da descrição no OEIS A006345 :
Para encontrar
a(n)
, considere a1
ou a2
. Para cada um, encontre o sufixo repetido mais longo, ou seja, para cada uma(n)=1,2
, encontre a sequência mais longas
com a propriedade com a qual a sequênciaa(1),...,a(n)
terminass
. Use o dígito que resulta no menor sufixo desse tipo.a(1) = 1
.
Exemplo elaborado
a(1)=1
.
Se a(2)=1
, teremos a sequência em 1 1
que está a substring duplicada mais longa do final 1
. Se a(2)=2
, em vez disso, seria a substring vazia. Portanto a(2)=2
.
Quando n=6
, escolhemos entre 1 2 1 1 2 1
e 1 2 1 1 2 2
. Na primeira escolha, 1 2 1
é duplicado consecutivamente a partir do final. Na segunda opção, é 2
sim. Portanto a(6)=2
,.
Quando n=9
, escolhemos entre 1 2 1 1 2 2 1 2 1
e 1 2 1 1 2 2 1 2 2
. Na primeira opção, a substring consecutiva duplicada mais longa é 2 1
, enquanto na segunda opção 1 2 2
é duplicada consecutivamente no final. Portanto a(9)=1
.
Tarefa
Dado n
, volte a(n)
.
Especificações
n
será positivo.- Você pode usar indexado em 0 em vez de indexado em 1. Nesse caso, indique-o na sua resposta. Além disso, nesse caso, também
n
pode ser0
.
Casos de teste
Os casos de teste são indexados em 1. No entanto, você pode usar o índice 0.
n a(n)
1 1
2 2
3 1
4 1
5 2
6 2
7 1
8 2
9 1
10 1
11 2
12 1
13 2
14 2
15 1
16 1
17 2
18 1
19 1
20 1
Referências
- WolframMathWorld
- OEIS obrigatório A006345
fonte
n=9
, a primeira opção1 2 1 1 2 2 1 2 1
tem a substring dobrada2 1
no final.Respostas:
Haskell,
146140137133118 118 bytesfonte
(\x->(\s->...
? Caso contrário, você poderia escrever(\x s->...
.div ...
, você pode usar o menorn
. As comparações extras retornarão falsas e não alterarão o resultado.Python, 137 bytes
Esta solução está usando a indexação baseada em 0.
fonte
Gelatina ,
25242220 bytes2 bytes graças a Dennis.
Experimente online!
Um porto da minha resposta em Pyth .
fonte
Mathematica, 84 bytes
fonte
Geléia ,
3029282724 bytesExperimente online! ou verifique todos os casos de teste .
fonte
MATL , 34 bytes
Experimente online! ou verifique todos os casos de teste .
Explicação
fonte
Python 2, 94 bytes
Usa indexação baseada em 0. Teste em Ideone .
fonte
Pitão , 26 bytes
Suíte de teste.
Explicação
Quando
n = 6
, escolhemos entre1 2 1 1 2 1
e1 2 1 1 2 2
.Geramos essas duas possibilidades e depois analisamos seus sufixos.
Para o primeiro, os sufixos são:
1
,2 1
,1 2 1
,1 1 2 1
,2 1 1 2 1
,1 2 1 1 2 1
.Filtramos os sufixos duplicados, verificando se eles são os mesmos após a rotação do comprimento dividido por 2 (verifica-se que essa verificação não é perfeita, porque confirma
1
e2
também).Pegamos o último sufixo dobrado e depois o comprimento.
Em seguida, escolhemos a possibilidade que corresponde ao comprimento mínimo gerado acima.
Em seguida, prosseguimos para o próximo valor de
n
.Para os fins deste programa, era mais golfista gerar a matriz invertida.
fonte
Pitão,
4629 bytesInspirou-se na excelente resposta Pyth de @Leaky Nun. Tentei ver se havia uma maneira mais curta usando seqüências de caracteres. Ainda 3 bytes curtos!
Você pode experimentá-lo aqui .
fonte
u
ce vez de explícito para loop poupa 4 bytesRetina ,
5142 bytes9 bytes graças a Martin Ender.
Experimente online!
Uma porta desta resposta .
fonte
Perl, 40 bytes
O código tem 39 bytes e requer a
-p
opção ( +1 byte).O loop é inspirado na solução Perl na página OEIS relevante , embora eu tenha inventado independentemente a expressão regular.
Teste em Ideone .
fonte
JavaScript (ES6), 84
Base de índice 0
Menos golfe
Teste
fonte