チャレンジ
課題は、入力として正の整数「n」を取り、その合計がゼロに等しい。加算または減算のみを使用できることに注意してください。
たとえば、入力が3の場合、合計を0にする方法は2つあります。
1+2-3=0
-1-2+3=0
番号は1からn(この場合は3)まで順番に並んでいることに注意してください。例から明らかなように、最初の数値の符号も負になる可能性があるため、注意してください。
さて、3は非常に簡単でした。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
したがって、ここでは、合計8つの可能な方法があります。
入出力
前述のように、入力は正の整数になります。出力には、数値の合計がゼロになるすべての可能な方法が含まれている必要があります。同じことを行う方法がない場合は、好きなものを出力できます。
また、任意の形式で出力を印刷できます。しかし、それは理解できるはずです。たとえば、上記の例のように印刷できます。または、数字の記号を順番に印刷するだけでもかまいません。そうでない場合は、「0」と「1」を順番に印刷することもできます。「0」は負の符号を表示し、「1」は正の符号を表示します(またはその逆)。
たとえば、次を使用して1 + 2-3 = 0を表すことができます。
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
ただし、簡単にするために、最初の3つの形式のいずれかを使用することをお勧めします。すべての入力が有効であると想定できます。
例
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
得点
これはcode-golfなので、最短のコードが優先されます!
+
as N
および-
as を表す-N
ことができますか、それとも行き過ぎていますか?(例3
-> [[-3,-3,3], [3,3,-3]]
)
0
and 1
オプションのような意味ですが、and を使用N
します-N
(上記の編集を参照)