あなたの仕事は、与えられたテンプレートを完成させることにより、有効なジャグリングパターンを生成することです。しかし、最初に、おそらくそのようなパターンがどのように示されるかを知る必要があります。

Siteswapの概要
Siteswapは、ジャグリングパターンの確立された表記法です。パターンをビートに分割することで機能します。打つたびに、ボールを投げるときにあなたの左手と右手が交互になります。各スロー(つまり、各ビート)は、そのボールが次にスローされるタイミングを示す数字で示されます-これは、スローの高さに直接対応します。
いくつかの例を見てみましょう。これらすべてのアニメーションはこちらでご覧ください。
3ボールカスケード
最も単純な3ボールパターン。各ボールは3拍ごとに投げられます(交互の手)。これは次のようにビートを書き出します(ASCIIラインは、同じボールが投げられる2つのビートを接続します)。
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 3 3 3 3 3 3 3 3 3
└─┼─┼─┘ │ │
└─┼───┘ │
└─────┘
で投げ、すべてのボールに注意してくださいLビートは、次回にスローされますR。このパターンは、通常と表記されるようにbeat.Siteswapパターンは、暗黙のうちに繰り返し333単にものの、3また十分であろう。
441
次に、siteswap 441を使用したもう少し複雑な例を示します。
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 4 1 4 4 1 4 4 1
│ │ └─┘ │ │
└─┼─────┘ │
└───────┘
偶数番号のスローは、スローされたのと同じ手に行き、奇数番号のスローは、もう一方の手に行くことに注意してください。
423
ボールを投げるのではなく、ビートを通してボールを保持したい場合があります。つまり、このボールは、次にこのハンドが回ったとき、つまり2ビート後に投げられます。したがって、ボールを保持することは2、パターン内のaと同等です。
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 2 3 4 2 3 4 2 3
│ └─┼─┘ │ │
│ └───┼─┘
└───────┘
50505
A 0は、このパターンが示すように、現在のハンドがそのビートで空であることを意味します。
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 5 0 5 0 5 5 0 5 0
└───┼───┼─┘ │
└───┼─────┘
└───────>
マルチプレックスジャグリング
しかし、この問題はバニラサイトスワップでは少し単純すぎます。多重パターンを入力してください!マルチプレックスジャグリングとは、片手で複数のボールを同時に投げることを意味します。たとえば、上記の3ボールカスケードでは、3ビートごとに2つのボールを追加で投げると、パターンは次のように[33]33なります。
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [33] 3 3 [33] 3 3 [33] 3 3
└┴──┼─┼──┴┘ │ │
└─┼──────┘ │
└────────┘
次に、マルチプレックススローに2つの異なる高さ/長さがある別の例を示します。[34]11またはのいずれかで示されます[43]11。
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [43] 1 1 [43] 1 1 [43] 1 1
││ └─┴──┘│ │
│└────────┘ │
└────────────┘
(1ビートで投げられたものは、ビートで2着地し3、すぐに(別の1)として再び投げられて、ビートで着地し4、2番目のマルチプレックススローの一部になることに注意してください。)
この投稿の冒頭のアニメーションのサイトスワップはでした [53]15121。
パターンの有効性
パターンが意味的に有効であるためには、ハンドのボールの数は常にそのビートで示されるスローの数に対応していなければなりません。ビートに着陸ないボールがあってはならないこの手段、0他の任意の単一の数字とビート1つだけのボール着地がなければならない、とが存在しなければならないN多重ビート、で着陸ボールnは桁数でありますその多重スローで。また、パターンはシームレスに繰り返せる必要があります。
無効なパターンの例は543、(すべてのボールが同じビートに着陸う)240(2に着陸ないでしょう0ビート)または33[24](多重ビートで何のボールランドが、2個のボールは、他の2拍の両方に着陸します)。
チャレンジ
ワイルドカードを含むサイトスワップパターンを取得し、ワイルドカードを埋めた有効なパターンを出力します。
入力として(標準入力、コマンドライン引数、ファイル、または関数パラメーターを介して)形式の文字列を受け取ります
n s
where nは使用するボールの数を示す整数sで、siteswapパターン(空白なし)です。あなたはそれが構文的に正しいと仮定するかもしれません-すべての角括弧は一致し、入れ子にならず、予期しない文字はありません。すべてのスローは1桁のスロー(0- 9)です。ただし、一部のビートは単にとして示される場合_があります。これは、出力の単一または多重スローで埋められます。
注:のようなものは入力の一部で[_3]はありません。ビート全体が欠落しているか、ビート全体が与えられています。
有効なパターンを出力します。これは、指定された数のボールでジャグリングでき、指定されたすべてのビートの入力パターンと一致します。指定された入力で有効なパターンが使用できない場合は、output !。出力は、stdout経由、ファイルへ、または関数の戻り値としても行われます。
注:出力には、不要な角括弧または多重スローのゼロが含まれていてはなりません。そのため、出力を含む[3]または[03]受け入れられない出力は、3代わりに出力する必要があります。マルチプレックススローの数字の順序は関係ありません。
注:あなたがかもしれ巡回置換の下で重複しているパターンを省略します。入力用など3 __(2つのワイルドカードを注意してください)、両方42と24(特に)有効な答えですが、彼らは実際には同じパターンを記述しています。両方または1つだけを出力できますが、一貫して出力する必要があります。
これはコードゴルフで、最短のコードが勝ちます(質問の下部に記載されているボーナスの対象です)。
JugglingLabを使用して、パターンをいじって、パターンが有効かどうか、どのように見えるかを確認できます。
例
Input Possible Outputs Comments
3 _ 3
[21]
[111]
3 4_3 423
4 4_2 4[51]2
4[42]2
4[321]2
3 _23_ 6231
4233
323[31]
2235
223[41]
0237
023[43]
[42]231
[32]23[11]
4 5_3 ! 5 and 3 will both land at the third beat, but
there is only a single throw at that beat. This
cannot be fixed with any throw in the blank.
2 5_4 ! Any possible throw in the wildcard (including a
0) will make a pattern for at least 3 balls.
3 54_ ! The only solution that would correspond to a
3-ball pattern is 540, which is not semantically
valid because the 5 and 4 both land at beat 3.
There are valid solutions, but they require at
least 4 balls.
ボーナス
- 回答が文字(10 = A、11 = B、...)で示される最大35桁の「数字」を処理できる場合、20文字を減算します。これらの文字を大文字にするか、小文字にするか、大文字と小文字を区別しないかを決定できます。(JugglingLabは、非常識なパターンを見たい場合は小文字で処理できます。)
- 答えがすべての有効な解を出力する場合、20文字を減算します。