Introdução
A sequência de Gijswijt ( A090822 ) é famosa, MUITO REALMENTE lenta. Ilustrar:
- Os três primeiros aparecem no nono termo (certo).
- Os quatro primeiros aparecem no 220º termo (muito longe, mas viável).
- Os 5 primeiros aparecem (aproximadamente) no 10º (10 ^ 23) termo (apenas não).
- Ninguém sabe mesmo onde estão os 6 primeiros ... suspeita-se que esteja no ...
2 ^ (2 ^ (3 ^ (4 ^ 5))) th termo.
Você pode assumir que não precisará lidar com um número de dois dígitos.
A sequência é gerada da seguinte maneira:
- O primeiro termo é 1.
- Cada termo depois disso é a quantidade de "blocos" repetidos anteriores a ele (se houver vários "blocos" repetidos, a maior quantidade de blocos repetidos será usada).
Para esclarecer, aqui estão os primeiros termos.
1 -> 1, 1
(um bloco de repetição ( 1
), portanto, o dígito gravado é 1
)
1, 1 -> 1, 1, 2
(dois blocos repetidos ( 1
), então o dígito registrado é 2
)
1, 1, 2 -> 1, 1, 2, 1
(um bloco de repetição ( 2
ou 1, 1, 2
), portanto, o dígito gravado é 1
)
1, 1, 2, 1 -> 1, 1, 2, 1, 1
(Você entendeu a ideia)
1, 1, 2, 1, 1 -> 1, 1, 2, 1, 1, 2
1, 1, 2, 1, 1, 2 -> 1, 1, 2, 1, 1, 2, 2
(dois blocos repetidos ( 1, 1, 2
), então o dígito registrado é 2
)
Tarefa
Sua tarefa é, como indicado na pergunta, gerar n dígitos da sequência Gijswijt.
Instruções
- A entrada será um número inteiro
n
. - Seu código pode gerar os dígitos de qualquer forma (uma lista, várias saídas etc.).
Este é o código golf, pelo que o código mais curto em bytes vence.
._
função e outras funções úteis no Pyth.