Aquí los primeros 100 números de una secuencia fácil:
0,1,0,2,1,4,3,7,6,11,10,16,15,22,21,29,28,37,36,46,45,56,55,67,66,79,78,92,91,106,105,121,120,137,136,154,153,172,171,191,190,211,210,232,231,254,253,277,276,301,300,326,325,352,351,379,378,407,406,436,435,466,465,497,496,529,528,562,561,596,595,631,630,667,666,704,703,742,741,781,780,821,820,862,861,904,903,947,946,991,990,1036,1035,1082,1081,1129,1128,1177,1176,1226
¿Cómo funciona esta secuencia?
n: 0 1 2 3 4 5 6 7 8 9 10 11 12
0, 1-1=0, 2-1=1, 4-1=3, 7-1=6, 11-1=10, 16-1=15,
0+1=1, 0+2=2, 1+3=4, 3+4=7, 6+5=11, 10+6=16, 15+7=22
a(0) = 0
- Por cada impar
n
(0 indexado), esa(n-1) + X
(dondeX=1
y aumenta en 1 cada vez que se accede) - Por cada par
n
(0 indexado), esa(n-1) - 1
Reto:
Uno de:
- Dado un entero de entrada
n
, genera eln
'número número en la secuencia. - Dado un entero de entrada
n
, genera los primerosn
números de la secuencia. - Emite la secuencia indefinidamente sin tomar una entrada ( o tomar una entrada vacía sin usar ).
Reglas de desafío:
- La entrada
n
puede ser tanto 0 como 1 indexada. - Si genera (parte de) la secuencia, puede usar una lista / matriz, imprimir en STDOUT con cualquier delimitador (espacio, coma, nueva línea, etc.). Tu llamada.
- Indique cuál de las tres opciones ha utilizado en su respuesta.
- Deberá admitir al menos los primeros 10,000 números (el número 10,000 es
12,497,501
).
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es posible.
Casos de prueba:
Pastebin con los primeros 10,001 números en la secuencia. Siéntase libre de elegir cualquiera que desee.
Algunos números más altos:
n (0-indexed) Output:
68,690 589,772,340
100,000 1,249,975,000
162,207 3,288,888,857
453,271 25,681,824,931
888,888 98,765,012,346
1,000,000 124,999,750,000
ÎGDN+D<
genera la secuencia, pero agarrar el enésimo elemento parece ... difícil en 3 bytes.Octava , 32 bytes
Pruébalo en línea!
Emite el n-ésimo número, indexado a 0. Utiliza la misma fórmula que varias otras respuestas.
fuente
APL (Dyalog Unicode) ,
1612 bytes SBCSFunción de prefijo tácito anónimo. 0 indexado.
Pruébalo en línea!
+/
la suma de⊢↑
los primerosn
elementos∘∊
de la ε nlisted (aplanada)¯1,¨⍨
negativo-uno-añadido-a-cada⍳
primerosn
ɩ ndices (0 an
–1fuente
Jalea , 6 bytes
Un enlace monádico que acepta (1 indexado)
n
que devuelvea(n)
.Pruébalo en línea! O ver el conjunto de pruebas
¿Cómo?
fuente
PHP ,
7364555147 bytesPrimer metodo
Primer código de respuesta de golf!
Estoy seguro de que hay trucos PHP para hacerlo más corto y las matemáticas probablemente puedan mejorarse.
Toma n como primer argumento y genera el enésimo número en la secuencia.
Menos 9 bytes eliminando "$ x = 0;" y "$ i = 0".
Menos 9 bytes gracias a @Kevin Cruijssen que mejora el bucle for y la pérdida de la etiqueta final.
Menos 1 byte usando bitwise o "|" en lugar de "(int)"
Menos 3 bytes gracias a @Dennis, ya que puede eliminar las etiquetas ejecutándolas desde la línea de comandos con "php -r 'code here'"
Pruébalo en línea!
Segundo método
¡Emparejé mi respuesta anterior con un método completamente nuevo!
Usando XOR y el operador de tenary para cambiar entre sumas en el bucle.
Editar: Esto no funciona para n = 0 y no tengo idea de por qué. $ i no está asignado, por lo tanto, debería ser 0, por lo tanto, el bucle
($i<$argv[1])
debería fallar como(0<0==false)
, por lo tanto, un $ x no asignado debería salir como 0 y no 1.Pruébalo en línea!
Tercer método
La conversión de la fórmula de Excel @Wernisch creada a PHP proporciona una solución de 47 bytes
Pruébalo en línea!
fuente
?>
. Eliminar$x=0
y, de$i=0
hecho, está permitido (si no,$x=$i=0
también habría sido más corto). Además, el ciclo se puede acortar afor(;$i<$y+1;)$x+=$i++;
. Que es -15 bytes en total. ¡Disfruta tu estancia! :)R , 35 bytes
Pruébalo en línea!
Pensé que esta era una alternativa interesante a la respuesta de @ JayCe, ya que no se adapta muy bien a los idiomas sin soporte incorporado para las matrices, y resulta ser igual de interesante.
1 indexado, devuelve los primeros
n
elementos de la secuencia.Cómo funciona:
rbind(n<-1:scan(),-1)
construye la siguiente matriz:Debido a que R contiene matrices en el orden de columna mayor, si tuviéramos que convertir esto en a
vector
, obtendríamos un vectorque si tomamos una suma acumulativa de, obtendríamos
cuál es la secuencia, solo que sin la guía
0
.diffinv
afortunadamente agrega el cero inicial, por lo que tomamos los primerosn-1
valores de la matriz ydiffinv
los obtenemos, obteniendo los primerosn
valores de la secuencia.fuente
diffinv
!R ,
3534 bytesPruébalo en línea!
Primera opción de salida. La misma fórmula que muchas otras respuestas (me gustaría señalar la primera respuesta que proporciona la fórmula, no puedo entender cuál es).
Segunda y tercera opciones de salida a continuación:
R , 43 bytes
Pruébalo en línea!
R , 51 bytes
Pruébalo en línea!
fuente
Matlab / Octave,
3126 bytes¡5 bytes guardados gracias a Luis Mendo!
fuente
fix
lugar defloor
, y enn/2+.5
lugar deceil(n/2)
fix()
y no esperaba1:n/2+.5
trabajar, tantas cosas que podrían salir mal, pero en realidad no lo hacen :)Java (JDK 10) , 20 bytes
Pruébalo en línea!
Respuesta del puerto de TFeld Python 2 , ¡así que ve a darles un voto positivo ! ;)
fuente
QBasic 1.1 , 49 bytes
1 indexado.
fuente
QBasic 1.1 , 30 bytes
Utiliza el algoritmo de TFeld. 0 indexado.
fuente
QBasic, 31 bytes
La solución solo implementar la especificación viene un poco más larga que la solución de Erik .
Esto sale indefinidamente. Con el fin de ejecutarlo, recomiendo cambiar la última línea a algo así
LOOP WHILE INPUT$(1) <> "q"
, que esperará una pulsación de tecla después de cada segunda secuencia de entrada y saldrá si se pulsa la teclaq
.fuente
C # (.NET Core) , 56 bytes
-2 bytes gracias a Kevin Crujssen
Pruébalo en línea!
1 indexado. Devoluciones
a(n)
Ungolf'd:
fuente
i=1;for(;i<n;i++)
puede seri=0;for(;++i<n;)
yi%2==0
puede seri%2<1
.do-while
verificará después de completar la primera iteración. :)if
con unfor
bucle. Por ejemplo:if(t>0)for(i=0;i<l;i++)
afor(i=0;t>0&i<l;i++)
. Sin embargo, casi nunca he podido usar esto en mis respuestas.Casco ,
1198 bytesGuardado un byte gracias a H.PWiz.
Salidas como una lista infinita.
Pruébalo en línea!
Explicación
fuente
Dodos , 69 bytes
Pruébalo en línea!
De alguna manera esta es la respuesta más larga.
Explicación.
fuente
Carbón de leña , 15 bytes
Pruébalo en línea! 0 indexado. El enlace es a la versión detallada del código. La fórmula probablemente sería más corta, pero ¿cuál es la diversión en eso? Explicación:
fuente
JavaScript,
494845 bytesPruébalo en línea!
No es tan bonito como @tsh answer, pero el mío funciona para números más grandes.
Y ahora gracias @tsh, ¡por la
eval
solución!fuente
<=x+1
puede ser<x+2
x=>eval('for(i=0,r=1;++i<x+2;)r+=i%2?-1:i/2')
debería ser más cortoeval
Devuelve el último valor modificado? Todavía no entiendo completamente lo que puede hacer.do
declaración en una versión posterior).Befunge 93, 26 bytes
Se ejecuta indefinidamente
Pruébelo en línea , aunque la salida se vuelve un poco inestable y vuelve a bajar después de x = 256, presumiblemente TIO no puede manejar caracteres por encima de U + 256. Funciona bien en https://www.bedroomlan.org/tools/befunge-playground (Chrome solo, desafortunadamente. Con Firefox, las líneas finales se eliminan en tiempo de ejecución, por alguna razón ...)
fuente
J , 17 bytes
Un puerto de la solución APL de Adám.
Pruébalo en línea!
fuente
Pyth , 8 bytes
Devuelve el
n
número th en la secuencia, indexado a 0. Pruébalo en líneaExplicación, con ejemplo para
n=5
:fuente
Perl 6 ,
3826 bytesIntentalo
Basado en la ingeniería inversa de la respuesta Python de TFeld .
Intentalo
Expandido
38 bytes (generador de secuencia):
Tenga en cuenta que esto tiene el beneficio que puede pasar
*
para obtener la secuencia completa, o pasar un Rango para generar de manera más eficiente múltiples valores.26 bytes (cálculo directo):
fuente
05AB1E , 8 bytes
Pruébalo en línea!
Basado en el enfoque Jelly de Jonathan Allan (que probablemente se basó en la edición de OP de la pregunta con otra definición de la secuencia), por lo que se indizó en 1.
fuente
I
en lugar de¹
), pero el enfoque general y el byte-count es exactamente el mismo:;<LO>IÉ-
Convexo ,
109 bytesPruébalo en línea!
Basado en el enfoque Jelly de Jonathan Allan (que probablemente se basó en la edición de OP de la pregunta con otra definición de la secuencia). 1 indexado.
Explicación:
fuente
Jalea , 6 bytes
Devuelve los primeros
n
números.Pruébalo en línea!
fuente