Considere a seguinte sequência:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ...
Os dígitos pares começam em 0 e são agrupados em execuções de comprimento crescente. Eles são organizados ciclicamente, o que significa que são classificados em ordem crescente até que 8 seja alcançado e depois retornados de 0 . 1 separa as execuções de dígitos pares e também inicia a sequência. Vamos visualizar como essa sequência é formada:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, ...
- ---- ------- ---------- -------------
run length: 1 2 3 4 5 ...
position of 1: X X X X X X ...
even sequence: 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8 ...
Métodos de entrada e saída aceitáveis:
Receber um número inteiro N como entrada e saída da N th termo desta sequência.
Receba um inteiro N como entrada e faça a saída do primeiro N termos dessa sequência.
Imprima a sequência indefinidamente.
Você pode escolher a indexação 0 ou 1 para os dois primeiros métodos.
Você pode competir em qualquer linguagem de programação enquanto usa os métodos padrão de entrada e saída . As brechas padrão são proibidas. Isso é código-golfe , então o código mais curto em cada idioma vence.
Respostas:
Haskell ,
5046 bytesExperimente online!
1#cycle[0,2..8]
retorna a sequência como lista infinita.-4 bytes graças a Ørjan Johansen!
fonte
#
apenas um número. Experimente online!Gelatina , 10 bytes
Retorna os primeiros n itens da sequência.
Experimente online!
Como funciona
fonte
Unhalve
... Isso não é justoDouble
?H
é dividido pela metade , eḤ
também pela inalação .ÆA
é arccosina , assimÆẠ
como unarccosina .Casco ,
121110 bytesExperimente online!
Imprime a sequência indefinidamente.
Alternativamente:
Experimente online!
Explicação
Para a solução alternativa:
Também podemos fazer isso
...ΘCN...
, porqueΘ
"precede o elemento padrão", que precede zero para listas de números inteiros e uma lista vazia para listas de listas.fonte
Python 3 , 52 bytes
Pega um índice baseado em 1 e retorna True ou um float integral .
Experimente online!
fonte
Python 2 , 51 bytes
Imprime a sequência inteira.
Experimente online!
fonte
APL, 25 bytes
Retorna o enésimo termo.
Explicação
fonte
APL (Dyalog Unicode) ,
525956 bytesExperimente online!
Esta é uma tradfn ( trad itional f unctio n ) recebendo um argumento
k
e retornando o primeirok
itens da sequência.Agradecemos a @GalenIvanov por apontar um erro na função. Obrigado a @ Adám por 3 bytes.
Como funciona:
Abaixo estão
Dfn
( d espirre f unctio n ) e uma função tácita de que também resolver o desafio, tanto gentilmente cedido por @ Adão.{⍵⍴1,∊1,⍨¨j⍴¨(+\¯1+j←⍳⍵)⌽¨⊂0,2×⍳4}
Experimente online!⊢⍴1,∘∊1,⍨¨⍳⍴¨(⊂0,2×⍳4)⌽⍨¨(+\¯1+⍳)
Experimente online!fonte
JavaScript (ES6),
625452 bytesRetorna o N ° termo de sequência, 0-indexado.
Demo
Mostrar snippet de código
fonte
C (gcc), 84 bytes
Experimente online!
Uma função (
f()
) que imprime a sequência infinitamente, separada por espaços.i
é o comprimento da atual execução uniforme.j
é o índice na atual execução uniforme(2*j+++i*i-i)%10
fornece o número par correto, dados iej (e incrementos j), equivalente a ((j + Tr (i))% 5) * 2, onde Tr (x) é o décimo número triangular (que é o número de pares) números que foram impressos antes da execução atual;fonte
Java 8, 96 bytes
Imprime indefinidamente, cada número em uma nova linha.
Explicação:
Experimente aqui.
fonte
Lote, 85 bytes
Gera o enésimo termo da sequência. Funciona calculando o próximo número triangular.
fonte
Perl 5 , 44 bytes
Experimente online!
Saída infinita
fonte
{...;redo}
vez dedo{...}while 1
J ,
464240 bytes-6 bytes graças a cole
Emite os primeiros N termos desta sequência.
Como funciona:
10|[:+:i.
- gera uma lista de comprimento N de 0 2 4 6 8 0 2 4 ... Simplesmente usa o mod 10 dos itens duplicados de uma lista de números inteiros começando em 0.[:;[:#:&.>2^i.
- gera uma máscara de bits para cortar a lista acima.(1 significa início): 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 ... Encontra 2 à potência dos números inteiros não negativos consecutivos, converte-os em binário, nivela o lista e leva apenas os primeiros N itens, para que o comprimento das duas listas seja o mesmo.
;@(1,&.><;.1)
- divide (corta) a lista dos dígitos pares em sublistas, de acordo com o mapa de um e zeros, anexa a sub-lista a 1 e, por fim, nivela a lista resultante]{.
- pega apenas os primeiros N itens, eliminando os números adicionais na lista devido aos 1s adicionados.Experimente online!
fonte
{.({.[:;[:#:&.>2^i.);@(1,&.><;.1)(10|2*i.)
. As alterações que fiz foram usar ganchos e refatorar o dente certo do garfo para tirar proveito de como os garfos funcionam. Eu gosto do2^i.
truque. Agora estou tentando trabalhar com o dente esquerdo do garfo.(10|2*i.)
->10|2*i.
Lisp comum, 74 bytes
Experimente online!
Imprime a sequência indefinidamente.
fonte
Perl 5, 35 bytes
experimente online
fonte
Gelatina , 17 bytes
Experimente online!
fonte
Próton , 55 bytes
Experimente online!
Imprime a sequência indefinidamente
fonte
i=0 j=-2while1{
...-2while
é como Python ewhile1
é porque eu fiz identificadores não é capaz de ser uma palavra-chave seguida de um númeroJava (OpenJDK 8) , 107 bytes
Experimente online!
fonte
Mathematica, 68 bytes
Retorna o enésimo termo
Experimente online!
fonte
Wolfram Language (Mathematica) , 61 bytes
Experimente online!
fonte
JavaScript, 45 bytes
1 indexado:
0 indexado:
Mostrar snippet de código
fonte
Ruby ,
4846 bytesExperimente online!
Imprimir a sequência indefinidamente
fonte
bash, 42 bytes
ou 34, se válido
experimente online
fonte