Sfida
La sfida è scrivere un codice che prenda un input positivo 'n' come input e mostri tutti i modi possibili in cui i numeri da 1 - n possono essere scritti, con un segno positivo o negativo tra loro, in modo tale che la loro somma sia uguale a zero. Ricorda che puoi utilizzare solo addizioni o sottrazioni.
Ad esempio, se l'input è 3, allora ci sono 2 modi per rendere la somma 0:
1+2-3=0
-1-2+3=0
Si noti che, i numeri sono in ordine, a partire da 1 a n (che in questo caso è 3). Come risulta evidente dall'esempio, anche il segno del primo numero può essere negativo, quindi fai attenzione.
Ora, 3 era praticamente semplice. Elenchiamo tutti i modi quando consideriamo il numero 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
Quindi qui abbiamo un totale di 8 possibili modi.
Ingresso e uscita
Come affermato in precedenza, l' input sarebbe un numero intero positivo . Il tuo output dovrebbe contenere tutti i modi possibili in cui i numeri danno una somma di zero. Nel caso in cui non ci sia modo di fare lo stesso, puoi produrre tutto quello che vuoi.
Inoltre, è possibile stampare l'output in qualsiasi formato desiderato . Ma dovrebbe essere comprensibile . Ad esempio, è possibile stamparlo come nell'esempio sopra. Oppure, puoi semplicemente stampare i segni dei numeri in ordine. Altrimenti, puoi anche stampare '0' e '1' in ordine, dove '0' mostrerebbe un segno negativo e '1' mostrerebbe un segno positivo (o viceversa).
Ad esempio, puoi rappresentare 1 + 2-3 = 0 usando:
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
Tuttavia, consiglierei di utilizzare uno dei primi tre formati per semplicità. Puoi presumere che tutti gli input siano validi.
Esempi
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
punteggio
Questo è code-golf , quindi vince il codice più corto!
+
come N
e -
come -N
, o sta andando troppo lontano? (es. 3
-> [[-3,-3,3], [3,3,-3]]
)
0
e 1
ma usando N
e -N
(vedi la mia modifica sopra)