受此挑战启发。
目标:
给定一个预先配置的总机和一个索引列表,将给定索引处的交换机反转。
配电盘由包裹在中的一定数量的开关(v
或^
)组成,-
并排列成不同长度的行。这是总机示例:
-v-^-v-
-^-v-
-v-^-v-
反转/翻转开关装置从它改变v
到^
,或从^
到v
。
开关从左到右,从上到下索引。例如,在上面的示例v
中,第一行中的最后一个将位于位置3,^
中间行中的将位于4(使用1索引)。
输入:
- 代表配电盘的字符串(或字符串列表)。保证匹配正则表达式
((-[v^])+-)(\n(-[v^])+-)*
。 - 可能为空的表示索引的数字列表,可能是0或1(或者,如果需要,可以是任意数字)被索引。这些是需要翻转的开关。
输出:
- 与输入形状相同的配电盘,其中指定的开关反转。任何未指定的开关应保持其初始状态。
规则:
- 输入将始终正确格式化,并且任何给定的索引都不会超出范围。
- 索引列表将被排序,并且没有重复项。
- 在您的答案中说明您使用的索引是0、1或任意索引。
- 只要输出看起来像输入,尾随空格就可以了。
- 这是代码高尔夫球,因此最短的代码获胜。
例子:
#Using 1-indexing
input: #Empty Case
[],
-v-^-v-
output:
-v-^-v-
input: #Single switch
[1],
-v-
output:
-^-
input: #Skip a line
[3,5],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-v-
-v-^-
input: #Flip one in each line + number wrap
[3,4,6],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-^-
-^-v-
input: #Flip 'em all
[1,2,3,4,5,6],
-^-v-v-
-v-
-^-^-
output:
-v-^-^-
-^-
-v-v-
>"-"
:由于保证输入字符串以开头-
,因此您可以检查所使用的参数/参数/变量名称。