Considere la siguiente secuencia:
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, ...
Los dígitos pares comienzan desde 0 y se agrupan en series de longitud creciente. Se organizan cíclicamente, lo que significa que se ordenan en orden ascendente hasta alcanzar 8 y luego se vuelven a poner en ciclo desde 0 . 1 separa las corridas de dígitos pares, y también comienza la secuencia. Visualicemos cómo se forma esta secuencia:
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 y salida aceptables:
Recibe un número entero N como entrada y salida de la N º término de esta secuencia.
Reciba un entero N como entrada y salida de los primeros N términos de esta secuencia.
Imprime la secuencia indefinidamente.
Puede elegir 0 o 1 indexación para los dos primeros métodos.
Puede competir en cualquier lenguaje de programación , mientras usa los métodos estándar de entrada y salida . Las lagunas estándar están prohibidas. Este es el código de golf , por lo que gana el código más corto en cada idioma.
Respuestas:
Haskell ,
5046 bytesPruébalo en línea!
1#cycle[0,2..8]
devuelve la secuencia como lista infinita.-4 bytes gracias a Ørjan Johansen!
fuente
#
solo un número. Pruébalo en línea!Jalea , 10 bytes
Devuelve el primero n elementos de la secuencia.
Pruébalo en línea!
Cómo funciona
fuente
Unhalve
... ¿No es eso justoDouble
?H
es la mitad , por lo queḤ
es unhalve .ÆA
es arcocosina , por lo queÆẠ
es unarccosina .Casco ,
121110 bytesPruébalo en línea!
Imprime la secuencia indefinidamente.
Alternativamente:
Pruébalo en línea!
Explicación
Para la solución alternativa:
También podríamos hacerlo
...ΘCN...
, porqueΘ
"antepone el elemento predeterminado", que antepone un cero para las listas de enteros y una lista vacía para las listas de listas.fuente
Python 3 , 52 bytes
Toma un índice basado en 1 y devuelve True o un flotante integral .
Pruébalo en línea!
fuente
Python 2 , 51 bytes
Imprime toda la secuencia.
Pruébalo en línea!
fuente
APL, 25 bytes
Devuelve el enésimo término.
Explicación
fuente
APL (Dyalog Unicode) ,
525956 bytesPruébalo en línea!
Este es un tradfn ( trad itional f unctio n ) teniendo un argumento
k
y devolver la primerak
elementos de la secuencia.Gracias a @GalenIvanov por señalar un error en la función. Gracias a @ Adám por 3 bytes.
Cómo funciona:
A continuación se presentan
Dfn
( d directo teléfono f unctio n ) y una función tácito de que también a resolver el reto, tanto amablemente proporcionado por @ ADAM.{⍵⍴1,∊1,⍨¨j⍴¨(+\¯1+j←⍳⍵)⌽¨⊂0,2×⍳4}
Pruébalo en línea!⊢⍴1,∘∊1,⍨¨⍳⍴¨(⊂0,2×⍳4)⌽⍨¨(+\¯1+⍳)
Pruébelo en línea!fuente
JavaScript (ES6),
625452 bytesDevuelve el N º término de la secuencia, 0-indexados.
Manifestación
Mostrar fragmento de código
fuente
C (gcc), 84 bytes
Pruébalo en línea!
Una función (
f()
) que imprime la secuencia infinitamente, separada por espacios.i
es la longitud de la ejecución par actual.j
es el índice en el par actual(2*j+++i*i-i)%10
da el número par correcto, dados i y j (e incrementos j), equivalente a ((j + Tr (i))% 5) * 2, donde Tr (x) es el número triangular x (que es el número de pares números que se han impreso antes de la ejecución actual;fuente
Java 8, 96 bytes
Imprime indefinidamente, cada número en una nueva línea.
Explicación:
Pruébalo aquí.
fuente
Lote, 85 bytes.
Emite el enésimo término de la secuencia. Funciona calculando el siguiente número triangular.
fuente
Perl 5 , 44 bytes
Pruébalo en línea!
Salida infinita
fuente
{...;redo}
lugar dedo{...}while 1
J ,
464240 bytes-6 bytes gracias a cole
Emite los primeros N términos de esta secuencia.
Cómo funciona:
10|[:+:i.
- genera una lista de longitud N de 0 2 4 6 8 0 2 4 ... Simplemente toma el mod 10 de los elementos duplicados de una lista de enteros que comienzan en 0.[:;[:#:&.>2^i.
- genera una máscara de bits para cortar la lista anterior.(1 significa inicio): 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 ... Encuentra 2 a la potencia de los enteros consecutivos no negativos, los convierte en binarios, aplana el lista y toma solo los primeros N elementos, de modo que la longitud de ambas listas sea la misma.
;@(1,&.><;.1)
- divide (corta) la lista de los dígitos pares en sublistas según el mapa de unos y ceros, agrega la sublista a 1 y finalmente aplana la lista resultante]{.
- toma solo los primeros N elementos, eliminando los números adicionales en la lista debido a los 1s agregados.Pruébalo en línea!
fuente
{.({.[:;[:#:&.>2^i.);@(1,&.><;.1)(10|2*i.)
. Los cambios que hice fueron usar ganchos y refactorizar el diente derecho de la horquilla para aprovechar el funcionamiento de las horquillas. Me gusta el2^i.
truco Estoy tratando de trabajar en el diente izquierdo del tenedor ahora.(10|2*i.)
->10|2*i.
Lisp común, 74 bytes
Pruébalo en línea!
Imprime la secuencia indefinidamente.
fuente
Perl 5, 35 bytes
pruébalo en línea
fuente
Jalea , 17 bytes
Pruébalo en línea!
fuente
Protón , 55 bytes
Pruébalo en línea!
Imprime la secuencia indefinidamente
fuente
i=0 j=-2while1{
...-2while
es como Python ywhile1
es porque hice identificadores que no pueden ser una palabra clave seguida de un númeroJava (OpenJDK 8) , 107 bytes
Pruébalo en línea!
fuente
Mathematica, 68 bytes
Devuelve el enésimo término
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 61 bytes
Pruébalo en línea!
fuente
JavaScript, 45 bytes
1 indexado:
0 indexado:
Mostrar fragmento de código
fuente
Ruby ,
4846 bytesPruébalo en línea!
Imprime la secuencia indefinidamente
fuente
bash, 42 bytes
o 34 si es válido
pruébalo en línea
fuente