Introducción
El signo de un número es a +, o a -para cada entero distinto de cero. El cero en sí mismo no tiene signos ( +0es lo mismo que -0). En la siguiente secuencia, vamos a alternar entre el signo positivo , el cero y el signo negativo . La secuencia comienza con 1, así que escribimos 1con un signo positivo, con cero (este es extraño, pero simplemente multiplicamos el número por 0) y el signo negativo:
1, 0, -1
El siguiente número es 2, y hacemos lo mismo otra vez:
2, 0, -2
La secuencia finalmente es:
1, 0, -1, 2, 0, -2, 3, 0, -3, 4, 0, -4, 5, 0, -5, 6, 0, -6, 7, 0, -7, ...
O una forma más legible:
a(0) = 1
a(1) = 0
a(2) = -1
a(3) = 2
a(4) = 0
a(5) = -2
a(6) = 3
a(7) = 0
a(8) = -3
a(9) = 4
...
La tarea
Dado un número entero no negativo n , salida de la n º término de la secuencia anterior. Puede elegir si utiliza la versión indexada a cero o indexada a una .
Casos de prueba:
Indexado a cero:
a(0) = 1
a(11) = -4
a(76) = 0
a(134) = -45
a(296) = -99
O si prefiere un índice:
a(1) = 1
a(12) = -4
a(77) = 0
a(135) = -45
a(297) = -99
Este es el código de golf , por lo que gana el envío con el menor número de bytes.

[0, 0, 0, -1, 0, 1...1.Respuestas:
Jalea, 7 bytes
Indexado a cero. Prueba casos aquí.
Explicación:
fuente
JavaScript ES6, 18 bytes
Resultó muy similar a la respuesta de @ LeakyNun, pero no vi la suya hasta que publiqué la mía.
Explicación y Ungolfed
-~es la abreviatura deMath.ceil, o redondeando:Mostrar fragmento de código
fuente
Math.ceily-~son diferentesMath.ceil(1) == 1mientras que-~1 == 2n=>~(n/3)*~-(n%3)MarioLANG,
9381 bytesun índice
Pruébalo en línea
Explicacion:
comenzamos tomando la entrada
que nos dan
luego disminuimos el byte izquierdo e incrementamos el byte derecho con
terminamos con
luego configuramos el bucle
el bucle irá hasta que la memoria parezca
entonces solo necesitamos dar salida al resultado
fuente
;(y>:(. Aunque, dos veces[<:podría considerarse un poco feliz. ; PPython 2, 24 bytes
Programa completo:
fuente
MATL,
1512 bytesEsto utiliza una indexación basada.
Pruébalo en línea! o verificar casos de prueba
Explicación:
fuente
Q3/Xk-1:1G_)*puede funcionar mejor. Probablemente se pueda modificar aún más para la indexación basada en 1.Haskell, 27 bytes
Solución un poco más interesante de 28 bytes:
(Ambos están
0indexados)fuente
MATL , 8 bytes
El resultado está basado en 1.
Pruébalo en línea!
Explicación
Esto construye la matriz 2D
y luego usa indexación lineal para extraer el término deseado. Linear medios de indexación índice hacia abajo, a continuación, a través de (por lo que en la matriz por encima de las primeras entradas de orden lineal son
1,0,-1,2,0, ...)fuente
Perl 5, 22 bytes
21 más uno para
-p:Utiliza indexación basada en 1.
Explicación:
-pestablece la variable$_igual a la entrada. El código luego lo establece igual al$_%3elemento th, dividido por 3, de la lista basada en 0(-$_,$_+2)(donde%es módulo). Tenga en cuenta que si$_%3es dos, entonces no existe tal elemento, y la división posterior por 3 numera lo indefinido a 0.-pluego imprime$_.fuente
Bash,
2825 bytesfuente
Perl 6 ,
2623 bytes(El más corto fue traducido de otras respuestas)
Explicación (de la primera):
Prueba:
fuente
J,
1915 bytesProbablemente necesites jugar más golf ...
1 indexado.
Sin golf:
Donde
>>significa entrada (STDIN) y<<salida (STDOUT).fuente
Pyke,
87 bytes (versión anterior)Pruébalo aquí! - Tenga en cuenta que el enlace probablemente no durará mucho
Versión más nueva
Pruébalo aquí!
fuente
J, 27 bytes
Aunque no es el más golfista, me gusta más, ya que utiliza una agenda.
Aquí está la descomposición del árbol:
Esto es muy similar a la respuesta J de Kenny, ya que elige la magnitud y el signo, pero es diferente porque uso una agenda para elegir el signo.
fuente
MATL, 8 bytes
Esta solución utiliza indexación basada en 1 en la secuencia.
Pruébalo en línea
Versión modificada que muestra todos los casos de prueba.
Explicación
fuente
Pyth, 10 bytes
Pruébalo en línea!
Explicación:
Nota: He asumido la secuencia de índice cero.
fuente
*@(1ZtZ)%Q3h/Q3(1ZtZ)=-L1 2En realidad, 10 bytes
Pruébalo en línea!
Explicación:
fuente
05AB1E, 7 bytes
Código:
Explicado:
fuente
GeoGebra, 44 bytes
dónde
nestá indexadoExplicación:
No es necesario generar todos los tripletes
{n, 0, -n}, pero es más corto que escribirceil(n/3)o algo así. Tenga en cuenta quendebe definirse para crear este objeto (si no está definido en el momento en que se ejecuta, GeoGebra le pedirá que cree un control deslizante paran).fuente
n, ingrese algo comon=297(esto le dará un control deslizante que está bien configurado). Luego pegue la fórmula en el cuadro Entrada, que ahora debería estar debajo den. (Asegúrese de presionar retorno;) La fórmula debe evaluar elntérmino de la secuencia y debe cambiar cuando mueve el control deslizante.Laberinto ,
171514 bytesGuardado 3 bytes usando la idea de Sok de usar en
1-(n%3)lugar de~(n%3-2).El programa termina con un error (división por cero), pero el mensaje de error va a STDERR.
Pruébalo en línea!
Explicación
El programa es completamente lineal, aunque algunos códigos se ejecutan a la inversa al final.
El puntero de instrucciones ahora llega a un callejón sin salida y gira, por lo que comienza a ejecutar el código desde el final:
fuente
Erlang, 40 bytes
Lamentablemente, Erlang no tiene un operador de módulo '%' y 'rem' requiere espacios, incluso antes del 3.
fuente
Hexagonía , 25 bytes.
O, en formato no minificado:
Pruébalo en línea!
Mi primera incursión en Hexagony, así que estoy seguro de que no he hecho esto de manera tan eficiente como podría hacerse ...
Calcula
-(n%3 - 1)en un borde de memoria,n/3 + 1en uno adyacente, luego los multiplica.fuente
R, 28 bytes
Parece que esta es una variación de la mayoría de las respuestas aquí. Basado en cero.
Lo bueno de esto es que maneja múltiples entradas
Originalmente quería hacer lo siguiente, pero no pude recortar los bytes adicionales.
Utiliza
rbindpara agregar 0 y negativos a un rango de 1 paranluego devolver elntérmino 'th (basado en uno).fuente
Lote (Windows), 86 bytes
Alternate.bat
Este programa se ejecuta como
Alternate.bat ndóndenestá el número al que desea llamar la función.fuente
APL, 12 caracteres
0 3⊤es de APLdivmod 3.fuente
Java 7,
383736 bytesMi primer golf, se gentil
Pruébalo aquí! (casos de prueba incluidos)
Editar: conté mal y también eliminé un personaje más al reemplazarlo
(-i%3+1)por(1-i%3).fuente
returny usar un Java 8 lambda.Retina, 45 bytes
Pruébalo en línea!
Banco de pruebas.
Toma entrada / salida en base diez. 1 indexado.
Entrada unaria, salida de base diez, indexada 1: 40 bytes
Pruébalo en línea!
Banco de pruebas.
fuente
MATLAB / Octava, 27 bytes
Esto crea una función anónima que se puede llamar usando
ans(n). Esta solución utiliza indexación basada en 1.Todos los casos de prueba
fuente
Mathematica 26 bytes
Con 4 bytes guardados gracias a Martin Ender.
Utiliza el mismo enfoque que Suever.
fuente
Octava, 23 bytes
Sin contras mod ...
Utiliza magia de indexación basada en 1.
Explicación
Crea una función anónima que:
Después del paso de multiplicación tendremos una matriz 3xn como esta (para n = 12):
Hacer
ncolumnas es excesivo, pero es un número conveniente que se garantiza que es lo suficientemente grande. La indexación lineal cuenta hacia atrás cada columna de izquierda a derecha, por lo que el elemento en el índice lineal4sería2.Todos los casos de prueba en ideona .
fuente
dc, 10
Utiliza indexación basada en 1.
fuente