Este é um reposicionamento de um antigo desafio , a fim de ajustar os requisitos de E / S aos nossos padrões recentes. Isso é feito em um esforço para permitir que mais idiomas participem de um desafio sobre essa sequência popular. Veja este meta post para uma discussão sobre o repost.
A sequência Kolakoski é uma sequência auto-referencial divertida, que tem a honra de ser a sequência OEIS A000002 (e é muito mais fácil de entender e implementar do que A000001). A sequência começa com um , consiste apenas de 1 s e 2 s e o elemento de sequência A (n) descreve o comprimento do n ° de execução de 1 s ou 2 s na sequcia. Isso define exclusivamente a sequência a ser (com uma visualização das execuções abaixo):
1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,1,2,...
= === === = = === = === === = === === = = === = = === === = === =
1, 2, 2, 1,1, 2, 1, 2, 2, 1, 2, 2, 1,1, 2, 1,1, 2, 2, 1, 2, 1,...
Sua tarefa é, é claro, implementar essa sequência. Você pode escolher um dos três formatos para fazer isso:
- Tomar uma entrada n e saída do n ésimo termo da sequência, em que n é iniciado quer a partir de 0 ou 1 .
- Tomar uma entrada n e saída os termos até e incluindo o n ésimo termo da sequência, em que n é iniciado quer a partir de 0 ou 1 (ou seja, quer imprimir a primeira n ou o primeiro n + 1 termos).
- Valores de saída da sequência indefinidamente.
No segundo e terceiro caso, você pode escolher qualquer formato de lista razoável e inequívoco. Tudo bem se não houver separador entre os elementos, pois eles sempre têm um único dígito por definição.
No terceiro caso, se o seu envio for uma função, você também poderá retornar uma lista infinita ou um gerador nos idiomas que os suportam.
Você pode escrever um programa ou uma função e usar qualquer um dos nossos métodos padrão de recebimento de entrada e saída. Observe que essas brechas são proibidas por padrão.
Isso é código-golfe , então a resposta mais curta e válida - medida em bytes - vence.