您的任务是通过完成给定的模板来生成有效的杂耍模式。但是首先,您可能需要知道如何表示这种模式。

Siteswap简介
Siteswap是杂耍模式的既定符号。通过将模式分成节拍来工作。每次跳动时,您的左手和右手交替扔球。每个掷球(即每个节拍)都用一个数字表示,该数字指示下一次何时掷该球-这直接对应于掷球的高度。
让我们看一些例子。在这里查看所有这些动画。
3球级联
最简单的3球图案。每三拍一掷球(交替动手)。写出节拍,如下所示(ASCII行将两个发出相同球的节拍连接起来):
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.Sitewap模式隐式重复,因此该模式通常表示为333,尽管3也足够了。
441
这是一个sitewap 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
└───┼───┼─┘ │
└───┼─────┘
└───────>
多重杂耍
不过,如果使用香草Siteswap,此问题可能会有点过于简单。输入多重模式!多重玩法意味着您同时用一只手投掷多个球。例如,在上述的三球级联中,如果您两人在每三拍之间又掷出一个球,则模式将变成[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
└┴──┼─┼──┴┘ │ │
└─┼──────┘ │
└────────┘
这是另一个示例,其中多路复用投掷具有两个不同的高度/长度。它可以表示为[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并成为第二个多重掷的一部分。)
帖子开头的动画的sitewap为 [53]15121。
模式有效性
为了使图案在语义上有效,手中的球数必须始终与该拍子指示的掷球次数相对应。这意味着,在以a的拍子处没有球落下,在0任何其他一位数的拍子中只有一个球落下,并且在多重拍子上必须有n个球在落下,其中n是位数在那个多重投掷中。该模式还必须能够无缝重复。
无效模式的示例有543(所有球都将以相同的节拍着地),240(球将以节拍着2地0)或33[24](没有球在多重节拍上着陆,而两个球在另外两个节拍中都着陆)。
挑战
您将采用一个包含通配符的sitewap模式,并输出有效的模式,并填充这些通配符。
以格式的字符串作为输入(通过stdin,命令行参数,文件或函数参数)
n s
其中n是一个整数,指示要使用的滚珠数量,并且s是站点交换模式(无空格)。您可能会认为它在语法上是正确的-所有方括号都匹配并且没有嵌套,并且没有意外的字符。所有引发将是个位数的引发(0- 9)。但是,某些拍子可能只是表示为_,将在输出中用单次或多次抛出来填充。
注意:诸如此类的[_3]内容不会成为输入的一部分。整个节拍丢失或给出了整个节拍。
输出有效的花样,该花样可以处理给定数量的球,并且在所有指定节拍中都与输入花样一致。如果给定输入没有有效的模式,则输出!。输出也将通过stdout输出到文件或作为函数返回值。
注意:输出在复用抛出中不得包含不必要的方括号或零。因此,包含[3]或[03]不接受的输出,必须改为输出3。多重抛出中的数字顺序无关紧要。
注意:您可以忽略在循环排列下重复的模式。例如,输入3 __(请注意两个通配符),42和24都是有效答案(以及其他答案),但实际上它们描述的是同一模式。您既可以输出两个,也可以只输出其中之一,但是必须一致地进行输出。
这是代码高尔夫,最短的代码获胜(取决于问题底部列出的奖金)。
您可以使用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.
奖金
- 如果您的答案最多可以处理35个以字母表示的“数字”(10 = A,11 = B,...),请减去20个字符。您可以决定这些字母是大写,小写还是不区分大小写。(如果您要查看某些疯狂的模式,JugglingLab可以将它们以小写形式处理。)
- 如果您的答案输出了所有有效的解决方案,请减去20个字符。