Su desafío hoy es generar un término dado de una secuencia que enumere todos los enteros. La secuencia es la siguiente: si tenemos una función indexada en 0 que genera la secuencia f(n)
y ceil(x)
es la función de techo, entonces f(0) = 0
; abs(f(n)) = ceil(n/2)
; sign(f(n))
es positivo cuando n
y ceil(n/2)
son pares o impares.
Para ayudar a comprender esta secuencia, los primeros términos son los siguientes: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7...
Su tarea es escribir un programa que tome un número entero n
y genere el n
término de la secuencia. La entrada puede ser solo 0 o 1 indexada.
Casos de prueba (indexados a 0):
0 => 0
1 => 1
2 => -1
3 => -2
4 => 2
5 => 3
Este es el código de golf , ¡la menor cantidad de bytes gana!
Respuestas:
SOGL V0.12 ,
86 bytesPruébalo aquí! o pruebe los primeros dos números (cambiado un poco para que funcione)
indexado en 0.
Explicación:
O más simple:
fuente
».»
estoy en el teléfonoI».»⌡±
.Python 2 ,
2624 bytesPruébalo en línea!
fuente
-~-(x&2)
para el denominador final.JavaScript (ES6), 18 bytes
1 indexado.
Manifestación
Mostrar fragmento de código
fuente
C, 25 bytes
fuente
f(n){n=~n/2*~-(n&2);}
gcc -O0
para x86-64 compila la versión de @ cleblanc con instrucciones que dejan el resultado de multiplicación eneax
( godbolt.org/g/dztKPV ), pero entonces sería unax86-64 gcc -O0
respuesta, no una respuesta de C. No voto a favor las respuestas de C que rompen con la optimización habilitada, especialmente no esa estúpida última expresión como basura de valor de retorno. Incluso si así es como funciona gcc, no es así como funciona C.Haskell , 26 bytes
Pruébalo en línea!
Las otras respuestas de Haskell parecen ser demasiado complicadas ... ^^
fuente
Pyke , 6 bytes
Pruébalo aquí!
Utiliza el enfoque de dzaima ...
BeatsTies Jelly!Explicación
Los bytes hexadecimales codificados equivalentes serían:
68 65 51 65 56 5F
.fuente
Jalea , 6 bytes
Pruébalo en línea!
Utiliza el algoritmo de dzaima.
-1 gracias a Jonathan Allan .
fuente
Python 2 , 21 bytes
Pruébalo en línea!
fuente
Mathematica, 24 bytes
-14 bytes de @Misha Lavrov
fuente
Boole
yOddQ
tiene el efecto de convertir números impares a 1 y números pares a 0, pero no necesita eso aquí: las potencias de -1 le dan la respuesta correcta para todos los números impares de todos modos. Entonces puede reducir ese paso(-1)^Tr@{#,s}
o simplemente(-1)^(#+s)
.Haskell ,
254342 bytesPruébalo en línea! 1 indexado.
Editar: La versión anterior tenía los signos en un orden incorrecto, gracias a @ Potato44 por señalarlo. Corregido por 18 bytes ...
Edición 2: ¡ Gracias a BMO por -1 byte!
fuente
Python 3 , 29 bytes
Pruébalo en línea!
fuente
(-1)**(n%4>1)
es una forma de escribir bastante complicada(1-(n&2))
;)Pyth , 9 bytes
Pruébalo aquí!
Utiliza el enfoque de dzaima .
fuente
Haskell, 36 bytes
Pruébalo en línea!
fuente
05AB1E , 6 bytes
Pruébalo en línea!
Utiliza el algoritmo de dzaima.
fuente
Lote, 29 bytes
fuente
JavaScript (ES6), 18 bytes
0 indexado.
fuente
Javascript, 17 bytes
Mostrar fragmento de código
Este es 0 indexado. Es un truco totalmente bit a bit.
fuente
Cúbicamente , 23 bytes
(1 indexado)
Pruébalo en línea!
La principal dificultad al escribir código en Cubically son:
Entonces, esta solución calcula
donde
/
denota división entera. Eso solo necesita 1 variable temporal, y las constantes 1 y 2.Explicación:
fuente
TI-Basic (TI-84 Plus CE), 20 bytes
Un programa completo que se llama like
5:prgmNAME
.TI-Basic es un idioma tokenizado , todos los tokens utilizados aquí son de un byte, excepto el
remainder(
que es dos.‾
representa el token regativo, que se escribe con la (-)clave.Ejemplos:
Explicación:
Misma fórmula que una función Y-var:
fuente
dc , 16 bytes
Estoy seguro de que hay una manera de hacer 0..1 a -1..1 en CC más corto, pero no tengo ideas por ahora.
Pruébalo en línea!
fuente
Java 8, 15 bytes
EDITAR: ¿Es Java realmente el más corto de los lenguajes que no son de golf? o.Ô
Explicación:
Pruébalo aquí.
Usaré la tabla a continuación como referencia de lo que está sucediendo.
~n
es igual a-n-1
.~n/2
dará como resultado la secuencia0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,...
n&2
resultará en cualquiera0
o2
, en la secuencia0,0,2,2,0,0,2,2,0,0,2,...
~-x
es igual a(x-1)
, entonces~-(n&2)
(((n&2)-1)
) resulta en la secuencia-1,-1,1,1,-1,-1,1,1,-1,-1,1,...
~n/2
y~-(n&2)
give es la secuencia correcta que se pide en el desafío:0,1,-1,-2,2,3,-3,-4,4,5,-5,...
Tabla de resumen:
fuente
Brain-Flak ,
86747270 bytesPruébalo en línea!
Explicación
Hay dos partes en este código. La primera parte
hace la fuerza de la computación. Determina
ceil(n/2)
y si se niega o no la salida.Para explicar cómo funciona, primero explicaré cómo se calcularía
ceil(n/2)
. Esto podría hacerse con el siguiente códigoEsto cuenta hacia atrás desde n cada vez que realiza un not (
([{}]())
) en un contador y agrega el contador a un resultado. Dado que el contador es cero la mitad del tiempo, solo incrementamos cada dos carreras comenzando con la primera.Ahora quiero calcular también el signo de nuestros resultados. Para hacer esto comenzamos otro contador. Este contador solo cambia de estado si el primer contador está apagado. De esa manera obtenemos el patrón deseado. Ponemos estos dos contadores en la pila de fichas para facilitar el movimiento cuando llegue el momento.
Ahora, una vez que hemos terminado ese cálculo, nuestra pila se ve así
Por lo tanto, tenemos que trabajar un poco para obtener el resultado deseado en esta segunda parte.
fuente
Perl 5 , 32 + 1 (
-p
) = 33 bytesPruébalo en línea!
fuente
Protón , 23 bytes
Pruébalo en línea!
La solución del puerto de Halvard .
Protón , 23 bytes
Pruébalo en línea!
Solución del puerto de Leaky .
Un poco más Protonic, 24 bytes:
fuente
QBIC ,
2726 bytesExplicación
fuente
Clojure 122 bytes
Detallado, incluso cuando se juega al golf. Voy por el voto de simpatía aquí ... :-)
Golfizado:
Sin golf:
fuente
Excel VBA de 32 bits,
3937 bytesFunción de ventana inmediata anónima de VBE que toma la entrada de la celda
A1
y las salidas a la ventana inmediata de VBERestringido a 32 bits, ya
A^B
que no es válido en 64 bits (A ^B
está lo más cerca posible)fuente
(-1)
y^[Int
necesario?Julia 0.6 , 16 bytes
Es solo la solución de Java, excepto que necesito
÷
una división entera.Pruébalo en línea!
fuente