Escribir un programa o función que dado n ≥ 1 devuelve el número de soluciones a ± 1 ± 2 ± 3 ± ... ± n = 0.
Para n = 6 no hay soluciones, entonces la respuesta es 0. Para n = 4 hay dos soluciones, entonces la respuesta es 2 (las dos soluciones son 1 - 2 - 3 + 4 = -1 + 2 + 3 - 4 = 0).
Esta es la secuencia OEIS A063865 . Algunos ejemplos de entrada / salida son:
n a(n)
1 0
2 0
3 2
4 2
5 0
6 0
7 8
8 14
9 0
10 0
11 70
12 124
13 0
14 0
15 722
16 1314
El código más corto en bytes gana.
code-golf
math
arithmetic
orlp
fuente
fuente
Respuestas:
JavaScript (ES6), 35 bytes
Guardado 1 byte gracias a @tsh
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 33 bytes
Cuenta las
n
tuplas de 1 y -1 cuyo producto de puntoRange[n]
es 0.Pruébalo en línea!
fuente
Haskell , 42 bytes
Pruébalo en línea!
Esto es
21 byte más corto que cualquier función recursiva que podría escribir.fuente
05AB1E , 10 bytes
Pruébalo en línea!
Explicación
fuente
O_O
...C (gcc),
45625250 bytesPuerto de la respuesta Java 8 de Kevin Cruijssen .
Pruébelo en línea aquí .
Tenga en cuenta que debido a las mejoras sugeridas en los comentarios, el código produce un comportamiento indefinido hasta el punto de no funcionar cuando se compila con clang.
Gracias a etene por jugar al golf 3 bytes. Gracias a Kevin Cruijssen por jugar 10 bytes más. Gracias a Christoph por jugar al golf otros 2 bytes.
Versión sin golf:
fuente
r?0:1
con!r
. 42 bytesr
, que no está permitido.n=
tampoco es necesario:f(n,r){n=n?f(n-1,r+n)+f(n-1,r-n):!r;}F(n){f(n,0);}
.-x = ~x+1
y por lo tanto~x = -x-1
.05AB1E ,
98 bytes¡Gracias a Emigna por guardar un byte!
Código:
Utiliza el codificación 05AB1E . Pruébalo en línea!
Explicación
fuente
MATL ,
1413 bytes¡Gracias a @Giuseppe por guardar 1 byte!
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere
n = 3
como un ejemplo. La pila se muestra al revés, es decir, la más nueva aparece a continuación.fuente
Jalea , 8 bytes
Pruébalo en línea!
Cómo funciona
fuente
Python 2, 74 bytes
Más de una presentación divertida, cálculo de la función de generación directa.
fuente
Octava (con paquete de comunicaciones), 39 bytes
Pruébalo en línea!
Explicación:
Tome un rango 0 ... n ^ 2-1 y conviértalo a binario. Esto proporciona una matriz con todas las combinaciones de 0 y 1 . Multiplique por 2 y reste 1 para obtener una matriz con todas las combinaciones de -1 y +1 .
Tome el producto punto con un rango de 1 ... n para obtener todas las combinaciones de ± 1 ± 2 ... ± n . Cuenta cuántos son cero.
Básicamente lo mismo, el mismo número de bytes:
fuente
APL (Dyalog) ,
3122 bytes9 bytes guardados gracias a @ H.PWiz
Pruébalo en línea!
fuente
Python 2 y 3, 50 bytes
Enfoque recursivo como la mayoría de las respuestas:
Pruébalo en línea
La llamada recursiva doble toma demasiados bytes ... Probablemente haya una manera de simplificarla.
fuente
Java 8,
727170 bytesPuerto de la respuesta de JavaScript de @Arnauld (ES6) .
-2 bytes gracias a @ OlivierGrégoire .
Pruébalo en línea.
Explicación:
fuente
Haskell , 55 bytes
Un enfoque directo de calcular todas esas sumas y verificar cuántas son cero.
Pruébalo en línea!
EDITAR: @ H.PWiz tiene una solución más corta y mucho más elegante usando
mapM
!fuente
Bash + utilidades GNU, 63 bytes
Bash probablemente puede hacerlo mejor que esto con funciones recursivas, pero no puedo resistir este tipo de
eval
monstruosidad / escape / expansión:Pruébalo en línea!
Actualización: no creo que bash pueda funcionar mejor con funciones recursivas. Esto es lo mejor que puedo hacer por un puntaje de 90 .
eval
diablos es entonces.fuente
Brachylog , 12 bytes
Pruébalo en línea!
Explicación
fuente
Octava , 42 bytes
Pruébalo en línea!
fuente
J , 32 bytes
Pruébalo en línea!
Ciertamente hay mucho espacio para jugar al golf. La expansión seguirá.
fuente
Haskell , 41 bytes
Pruébalo en línea!
fuente
0^abs k
.Jalea , 10 bytes
Pruébalo en línea!
fuente
Perl 5 ,
-p
35 bytesPruébalo en línea!
fuente
Pari / GP , 30 bytes
Pruébalo en línea!
fuente
Prólogo (SWI) , 99 bytes
Pruébalo en línea!
fuente
Pyth,
1413 bytesPruébalo aquí
Explicación
fuente
CJam , 25 bytes
Pruébalo en línea!
Esta es una traducción bastante directa de la solución 05AB1E de @emigna. Ciertamente es golfable.
fuente
Stax , 9 bytes
Ejecutar y depurarlo
Una de las respuestas más cortas hasta ahora.derrotada por Jelly.Siento que verificar explícitamente qué signos suman cero no es muy complejo, por lo que tomo el conjunto de potencia y compruebo cuántos conjuntos del conjunto de potencia tienen la suma de la mitad del enésimo número triangular. Este método es, no sorprendentemente, de la misma complejidad de tiempo que verificar qué signos suman cero.
ASCII equivalente:
fuente
Pyth , 10 bytes
Pruébalo en línea. Alternativamente, verifique todos los casos de prueba a la vez .
Explicación:
fuente
J , 28 bytes
Utiliza la otra definición de OEIS where
a(n) = coefficient of x^(n(n+1)/4) in Product_{k=1..n} (1+x^k) if n = 0 or 3 mod 4 else a(n) = 0
.Pruébalo en línea!
Explicación
fuente
Casco , 9 bytes
Pruébalo en línea!
Explicación
fuente
Gol> <> , 26 bytes
Pruébalo en línea! o ¡ Ejecute casos de prueba del 1 al 16!
Cómo funciona
fuente