次の出力を正しい順序で生成するプログラムまたは関数を記述します。
編集:シンボルは数学ではありません!番号は一意のデータを表し、+および-は任意の2つの任意の記号にすることができます。
負でない整数の入力nを取ります。-n = 0の場合でも、最初の行は常にです。
- 現在の行がの
-場合、次の行は1+2+ ... (n-1)+n-- n = 4:
-=>1+2+3+4-
- n = 4:
- 最後の整数がnに等しい場合は、最後にaが続く整数をすべて削除し、最後の整数をa
-に変更+します。-- n = 4:
1-2+3-4-=>1-2- - EDIT:文字列がいっぱいです(1からすべての整数nに含まれている)、続いている端からすべての整数を削除する
-あなたが続く整数に到達するまで、+。その整数を残します+が、その次をaに変更- - 上記と同じ例を使用します(これには従いません
-)、削除4-、削除3-、に変更2+し2-ます。1-で止まるので変化しません2。結果:1-2-
- n = 4:
- 最後の整数がn未満の場合は、最後の整数
+を除いて、残りの整数をそれぞれの後に-追加します- n = 4:
1+2-=>1+2-3+4- - 編集:現在の文字列がいっぱいでない場合(1からnまでのすべての整数が含まれていない場合)、昇順で含まれていない各整数をn-1
+まで追加し、その後に最後の整数nを追加しますによって- - 現在の行がの場合は
1-、を追加2+します3+。n= 4の場合は、n-1を追加します。次に追加します4-。結果:1-2+3+4-
- n = 4:
- 現在の行にすべての整数が含まれ、各整数の直後にが続いている
-場合、コードを終了します- n = 4:
1-2-3-4-=>終了
- n = 4:
行の先頭または末尾にスペースがあってはなりません。各行の間には改行が必要です。最終行に改行がある場合とない場合があります。
編集:あなたはコードを少なくともn = 10までテストする必要があります(1000行以上の出力なので、ここに含めることはできません)。コードがリソースを使い果たすことのない数であれば、(最終的には!)正しい出力が生成されますが、ユニバースが終了するのを待つ必要はありません。
これはcode-golfなので、バイト単位の最短コードが優先されます。
入力n = 0:
-
入力n = 1:
-
1-
入力n = 2:
-
1+2-
1-
1-2-
入力n = 4:
-
1+2+3+4-
1+2+3-
1+2+3-4-
1+2-
1+2-3+4-
1+2-3-
1+2-3-4-
1-
1-2+3+4-
1-2+3-
1-2+3-4-
1-2-
1-2-3+4-
1-2-3-
1-2-3-4-
s*=<condition>