Écrivez un programme ou une fonction qui, pour n ≥ 1, renvoie le nombre de solutions à ± 1 ± 2 ± 3 ± ... ± n = 0.
Pour n = 6 il n'y a pas de solution, donc la réponse est 0. Pour n = 4 il y a deux solutions, donc la réponse est 2 (les deux solutions sont 1 - 2 - 3 + 4 = -1 + 2 + 3 - 4 = 0).
Il s'agit de la séquence OEIS A063865 . Voici quelques exemples d'entrées / sorties:
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
Le code le plus court en octets gagne.
code-golf
math
arithmetic
orlp
la source
la source
Réponses:
JavaScript (ES6), 35 octets
1 octet enregistré grâce à @tsh
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 33 octets
n
Compte les -tuples de 1 et -1 dont le produit scalaire avecRange[n]
est 0.Essayez-le en ligne!
la source
Haskell , 42 octets
Essayez-le en ligne!
C'est
21 octet plus court que n'importe quelle fonction récursive que je pourrais écrire.la source
05AB1E , 10 octets
Essayez-le en ligne!
Explication
la source
O_O
...C (gcc),
45625250 octetsPort de la réponse Java 8 de Kevin Cruijssen .
Essayez-le en ligne ici .
Notez qu'en raison des améliorations suggérées dans les commentaires, le code produit un comportement non défini au point de ne pas fonctionner lorsqu'il est compilé avec clang.
Merci à etene pour avoir joué au golf 3 octets. Merci à Kevin Cruijssen d' avoir joué au golf 10 octets de plus. Merci à Christoph d' avoir joué encore 2 octets.
Version non golfée:
la source
r?0:1
par!r
. 42 octetsr
, ce qui n'est pas autorisé.n=
n'est pas nécessaire soit:f(n,r){n=n?f(n-1,r+n)+f(n-1,r-n):!r;}F(n){f(n,0);}
.-x = ~x+1
et donc~x = -x-1
.05AB1E ,
98 octetsMerci à Emigna d' avoir enregistré un octet!
Code:
Utilise l' encodage 05AB1E . Essayez-le en ligne!
Explication
la source
MATL ,
1413 octetsMerci à @Giuseppe d' avoir économisé 1 octet!
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Considérez
n = 3
comme exemple. La pile est affichée à l'envers, c'est-à-dire que le plus récent apparaît ci-dessous.la source
Gelée , 8 octets
Essayez-le en ligne!
Comment ça marche
la source
Python 2, 74 octets
Plus d'une soumission amusante, calcul de fonction de génération directe.
la source
Octave (avec module de communication), 39 octets
Essayez-le en ligne!
Explication:
Prenez une plage de 0 ... n ^ 2-1 et convertissez-la en binaire. Cela donne une matrice avec toutes les combinaisons de 0 et 1 . Multipliez par 2 et soustrayez 1 pour obtenir une matrice avec toutes les combinaisons de -1 et +1 .
Prenez le produit scalaire avec une plage de 1 ... n pour obtenir toutes les combinaisons de ± 1 ± 2 ... ± n . Comptez combien sont nuls.
Fondamentalement, la même chose, même nombre d'octets:
la source
APL (Dyalog) ,
3122 octets9 octets enregistrés grâce à @ H.PWiz
Essayez-le en ligne!
la source
Python 2 et 3, 50 octets
Approche récursive comme la plupart des réponses:
Essayez-le en ligne
Le double appel récursif prend trop d'octets ... Il y a probablement un moyen de le simplifier.
la source
Java 8,
727170 octetsPort de la réponse JavaScript (ES6) de @Arnauld .
-2 octets grâce à @ OlivierGrégoire .
Essayez-le en ligne.
Explication:
la source
Haskell , 55 octets
Une approche simple pour calculer toutes ces sommes et vérifier combien sont nulles.
Essayez-le en ligne!
EDIT: @ H.PWiz a une solution plus courte et beaucoup plus élégante en utilisant
mapM
!la source
Utilitaires Bash + GNU, 63 octets
Bash peut probablement faire mieux que cela avec des fonctions récursives, mais je ne peux pas résister à ce genre de
eval
monstruosité / escape / expansion:Essayez-le en ligne!
Mise à jour: je ne pense pas que bash puisse faire mieux avec les fonctions récursives. C'est le mieux que j'ai pu faire pour un score de 90 .
eval
l'enfer c'est alors.la source
Brachylog , 12 octets
Essayez-le en ligne!
Explication
la source
Octave , 42 octets
Essayez-le en ligne!
la source
J , 32 octets
Essayez-le en ligne!
Il y a certainement beaucoup de place pour le golf. Une explication suivra.
la source
Haskell , 41 octets
Essayez-le en ligne!
la source
0^abs k
.Gelée , 10 octets
Essayez-le en ligne!
la source
Perl 5 ,
-p
35 octetsEssayez-le en ligne!
la source
Pari / GP , 30 octets
Essayez-le en ligne!
la source
Prolog (SWI) , 99 octets
Essayez-le en ligne!
la source
Pyth,
1413 octetsEssayez-le ici
Explication
la source
CJam , 25 octets
Essayez-le en ligne!
Il s'agit d'une traduction assez directe de la solution 05AB1E de @ emigna. C'est certainement golfable.
la source
Stax , 9 octets
Exécuter et déboguer
Une des réponses les plus courtes jusqu'à présentvaincue par Jelly.Je pense que vérifier explicitement quels signes somme à zéro n'est pas très golfique, donc je prends le jeu de puissance et vérifie combien de jeux dans le jeu de puissance ont la somme de la moitié du nième nombre triangulaire. Il n'est pas surprenant que cette méthode ait la même complexité temporelle que la vérification des signes dont la somme est nulle.
Équivalent ASCII:
la source
Pyth , 10 octets
Essayez-le en ligne. Vous pouvez également vérifier tous les cas de test à la fois .
Explication:
la source
J , 28 octets
Utilise l'autre définition d'OEIS où
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
.Essayez-le en ligne!
Explication
la source
Coque , 9 octets
Essayez-le en ligne!
Explication
la source
Gol> <> , 26 octets
Essayez-le en ligne! ou Exécutez des cas de test de 1 à 16!
Comment ça marche
la source