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 ( +0
es 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 1
con 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.ceil
y-~
son diferentesMath.ceil(1) == 1
mientras que-~1 == 2
n=>~(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
0
indexados)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:
-p
establece la variable$_
igual a la entrada. El código luego lo establece igual al$_%3
elemento th, dividido por 3, de la lista basada en 0(-$_,$_+2)
(donde%
es módulo). Tenga en cuenta que si$_%3
es dos, entonces no existe tal elemento, y la división posterior por 3 numera lo indefinido a 0.-p
luego 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 2
En realidad, 10 bytes
Pruébalo en línea!
Explicación:
fuente
05AB1E, 7 bytes
Código:
Explicado:
fuente
GeoGebra, 44 bytes
dónde
n
está 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 quen
debe 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 eln
té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 + 1
en 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
rbind
para agregar 0 y negativos a un rango de 1 paran
luego devolver eln
término 'th (basado en uno).fuente
Lote (Windows), 86 bytes
Alternate.bat
Este programa se ejecuta como
Alternate.bat n
dónden
está 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
return
y 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
n
columnas 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 lineal4
sería2
.Todos los casos de prueba en ideona .
fuente
dc, 10
Utiliza indexación basada en 1.
fuente