莫尔基
莫尔基(Mölkky)是芬兰的投掷游戏。玩家使用木销(也称为“mölkky”)尝试敲打尺寸几乎与投掷销类似的木销,标有从1到12的数字。销的初始位置如下:
(07)(09)(08)
(05)(11)(12)(06)
(03)(10)(04)
(01)(02)
本说明和以下规则基于Wikipedia。
简化的Mölkky规则
敲击一个图钉会得分该图钉上标记的点数。
敲2个或更多的针可计分被打倒的针数(例如,敲3个针可计3分)。
游戏的目的是精确达到50分。将得分重新设置为25分,得分超过50 分。
出于这一挑战的目的,我们将假设引脚始终处于上述确切顺序。(在真实的游戏中,每次掷球后,将其重新放置在降落位置上。)
所有其他Mölkky规则都将被忽略,仅考虑一个玩家。
输入项
包含12个布尔值的列表的非空列表。每个布尔值列表都描述了抛出的结果:如果销被撞倒则为1,否则为0。的布尔值在销的确切顺序给出,从左上到右下:7,9,8,5,11,12,6,3,10,4,1,2。
输出量
后,所有的分数由抛出应用规则在输入所描述的,计算出的1,2和3。
详细的例子
让我们考虑以下输入:
// 07 09 08 05 11 12 06 03 10 04 01 02
[ [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], // scores 5 (rule #1)
[ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], // scores 2 (rule #2), total: 7
[ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 ], // scores 7, total: 14
[ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], // scores 12, total: 26
[ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], // scores 12, total: 38
[ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], // scores 11, total: 49
[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], // scores 7, total: 56 -> 25 (rule #3)
[ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ] // scores 2, total: 27
预期输出为27。
挑战规则
- 您可以采用任何合理的格式输入。除了布尔值列表,您还可以使用整数,其中最高有效位是引脚#7,最低有效位是引脚#2。以这种格式,上面的示例将作为传递
[ 256, 2304, 127, 64, 64, 128, 2048, 3072 ]
。 - 输入列表中可能包含没有任何引脚被打倒的抛出,在这种情况下,分数保持不变。
- 当分数刚好达到50分时,您无需执行任何特殊操作。但是您可以假设发生这种情况时不会再发生其他抛出。
- 这是代码高尔夫球,因此最短的答案以字节为单位。
测试用例
使用整数列表作为输入:
[ 0 ] --> 0
[ 528 ] --> 2
[ 4095 ] --> 12
[ 64, 0, 3208 ] --> 16
[ 16, 1907, 2048 ] --> 18
[ 2023, 2010, 1, 8 ] --> 29
[ 1726, 128, 35, 3136, 1024 ] --> 34
[ 32, 32, 2924, 2, 256, 16 ] --> 28
[ 64, 64, 2434, 1904, 3251, 32, 256 ] --> 25
[ 3659, 2777, 2211, 3957, 64, 2208, 492, 2815 ] --> 25
[ 2047, 1402, 2, 2599, 4, 1024, 2048, 3266 ] --> 50
[ 256, 2304, 127, 64, 64, 128, 2048, 3072 ] --> 27
[ 16, 8, 128, 1, 2048, 1, 2048, 513, 8, 3206 ] --> 30
您可以单击此链接以布尔格式获取这些测试用例。