Défi
Le défi consiste à écrire un code qui prend un entier positif 'n' comme entrée et affiche toutes les façons possibles d'écrire les nombres de 1 à n, avec un signe positif ou négatif entre les deux, de sorte que leur somme soit égal à zéro. N'oubliez pas que vous ne pouvez utiliser que l'addition ou la soustraction.
Par exemple, si l'entrée est 3, il y a 2 façons de faire la somme 0:
1+2-3=0
-1-2+3=0
Notez que les nombres sont en ordre, à partir de 1 jusqu'à n (ce qui est 3 dans ce cas). Comme il ressort de l'exemple, le signe du premier nombre peut également être négatif, alors soyez prudent.
Maintenant, 3 était à peu près simple. Énumérons toutes les façons lorsque nous considérons le nombre 7.
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
Donc, ici, nous avons un total de 8 façons possibles.
Entrée et sortie
Comme indiqué précédemment, l' entrée serait un entier positif . Votre sortie doit contenir toutes les manières possibles dont les nombres donnent une somme de zéro. Dans le cas où il n'y a aucun moyen de faire la même chose, vous pouvez sortir tout ce que vous voulez.
En outre, vous pouvez imprimer la sortie dans un format que vous souhaitez . Mais cela devrait être compréhensible . Par exemple, vous pouvez l'imprimer comme dans l'exemple ci-dessus. Ou, vous pouvez simplement imprimer les signes des nombres dans l'ordre. Sinon, vous pouvez également imprimer les «0» et les «1» dans l'ordre, où «0» afficherait un signe négatif et «1» afficherait un signe positif (ou vice versa).
Par exemple, vous pouvez représenter 1 + 2-3 = 0 en utilisant:
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
Cependant, je recommanderais d'utiliser l'un des trois premiers formats pour plus de simplicité. Vous pouvez supposer que toutes les entrées sont valides.
Exemples
7 ->
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
4 ->
1-2-3+4=0
-1+2+3-4=0
2 -> -
8 ->
1+2+3+4-5-6-7+8=0
1+2+3-4+5-6+7-8=0
1+2-3+4+5+6-7-8=0
1+2-3-4-5-6+7+8=0
1-2+3-4-5+6-7+8=0
1-2-3+4+5-6-7+8=0
1-2-3+4-5+6+7-8=0
-1+2+3-4+5-6-7+8=0
-1+2+3-4-5+6+7-8=0
-1+2-3+4+5-6+7-8=0
-1-2+3+4+5+6-7-8=0
-1-2+3-4-5-6+7+8=0
-1-2-3+4-5+6-7+8=0
-1-2-3-4+5+6+7-8=0
Notation
C'est le code-golf , donc le code le plus court gagne!
+
fur N
et à -
mesure -N
, ou est-ce que cela va trop loin? (par exemple 3
-> [[-3,-3,3], [3,3,-3]]
)
0
et 1
mais en utilisant N
et -N
(voir ma modification ci-dessus)