Questo è un ripubblicare di una vecchia sfida , al fine di adeguare i requisiti I / O ai nostri standard recenti. Questo viene fatto nel tentativo di consentire a più lingue di partecipare a una sfida su questa sequenza popolare. Vedi questo meta post per una discussione sul repost.
La sequenza di Kolakoski è una divertente sequenza autoreferenziale, che ha l'onore di essere la sequenza OEIS A000002 (ed è molto più facile da capire e implementare di A000001). La sequenza inizia con 1 , è composto solo di 1 s e 2 s e l'elemento di sequenza a (n) descrive la lunghezza del n ° corsa di 1 s o 2 s nella sequenza. Questo definisce in modo univoco la sequenza da essere (con una visualizzazione delle piste sottostanti):
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,...
Il tuo compito è, ovviamente, implementare questa sequenza. Puoi scegliere uno dei tre formati per farlo:
- Prendere un input n e uscita n esimo termine della sequenza, dove n inizia sia da 0 o 1 .
- Prendere un input n ed emettere i termini fino al il n esimo termine della sequenza, dove n inizia sia da 0 o 1 (cioè o stampare la prima n o il primo n + 1 termini).
- Valori di output dalla sequenza indefinitamente.
Nel secondo e terzo caso, puoi scegliere qualsiasi formato di elenco ragionevole e inequivocabile. Va bene se non c'è un separatore tra gli elementi, dal momento che sono sempre una singola cifra per definizione.
Nel terzo caso, se l'invio è una funzione, è anche possibile restituire un elenco infinito o un generatore in lingue che li supportano.
È possibile scrivere un programma o una funzione e utilizzare uno qualsiasi dei nostri metodi standard per ricevere input e fornire output. Si noti che queste scappatoie sono vietate per impostazione predefinita.
Questo è code-golf , quindi la risposta valida più breve - misurata in byte - vince.