Desafío
El desafío es escribir un código que tome un entero positivo 'n' como entrada y muestre todas las formas posibles en que se pueden escribir los números del 1 - n, con signo positivo o negativo en el medio, de modo que su suma sea igual a cero Recuerde que solo puede usar sumas o restas.
Por ejemplo, si la entrada es 3, entonces hay 2 formas de hacer que la suma sea 0:
1+2-3=0
-1-2+3=0
Tenga en cuenta que los números están en orden, comenzando desde 1 hasta n (que es 3 en este caso). Como es evidente en el ejemplo, el signo del primer número también puede ser negativo, así que tenga cuidado.
Ahora, 3 era bastante simple. Hagamos una lista de todas las formas cuando consideramos el número 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
Entonces, aquí tenemos un total de 8 formas posibles.
Entrada y salida
Como se indicó anteriormente, la entrada sería un número entero positivo . Su salida debe contener todas las formas posibles en que los números dan una suma de cero. En caso de que no haya una manera posible de hacer lo mismo, puede generar lo que desee.
Además, puede imprimir la salida en cualquier formato que desee . Pero, debería ser comprensible . Por ejemplo, puede imprimirlo como en el ejemplo anterior. O bien, puede imprimir los signos de los números en orden. De lo contrario, también puede imprimir '0' y '1' en orden, donde '0' mostrará un signo negativo y '1' mostrará un signo positivo (o viceversa).
Por ejemplo, puede representar 1 + 2-3 = 0 usando:
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
Sin embargo, recomendaría usar cualquiera de los primeros tres formatos por simplicidad. Puede asumir que todas las entradas son válidas.
Ejemplos
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
Puntuación
Este es el código de golf , por lo que gana el código más corto.
+
as N
y -
as -N
, o eso es llevarlo demasiado lejos? (por ejemplo, 3
-> [[-3,-3,3], [3,3,-3]]
)
0
y 1
, pero usando N
y -N
(ver mi edición anterior)