Mölkky
Mölkky es un juego de lanzamiento finlandés. Los jugadores usan un alfiler de madera (también llamado "mölkky") para intentar derribar alfileres de madera de dimensiones casi similares con el alfiler, marcado con números del 1 al 12. La posición inicial de los alfileres es la siguiente:
(07)(09)(08)
(05)(11)(12)(06)
(03)(10)(04)
(01)(02)
Esta descripción y las siguientes reglas se basan en Wikipedia .
Reglas simplificadas de Mölkky
Derribar un pin puntúa el número de puntos marcados en el pin.
Golpear 2 o más pines puntúa el número de pines derribados (por ejemplo, derribar 3 pines obtiene 3 puntos).
El objetivo del juego es alcanzar exactamente 50 puntos. Anotar más de 50 se penaliza al volver a marcar 25 puntos.
Para el propósito de este desafío, asumiremos que los pines siempre están en el orden exacto descrito anteriormente. (En un juego real, los pines se ponen de pie nuevamente después de cada lanzamiento en el lugar donde aterrizaron).
Todas las demás reglas de Mölkky se ignoran y solo se considera un jugador.
Entrada
Una lista no vacía de listas de 12 booleanos. Cada lista de booleanos describe el resultado de un lanzamiento: 1 si el pin fue derribado y 0 en caso contrario. Los booleanos se dan en el orden exacto de los pines, de arriba a la izquierda a la derecha: 7 , 9 , 8 , 5 , 11 , 12 , 6 , 3 , 10 , 4 , 1 , 2 .
Salida
El puntaje después de todos los lanzamientos descritos en la entrada, calculado aplicando las reglas 1 , 2 y 3 .
Ejemplo detallado
Consideremos la siguiente entrada:
// 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
La salida esperada es 27 .
Reglas de desafío
- Puede tomar información en cualquier formato razonable. En lugar de listas de booleanos, puede usar números enteros donde el bit más significativo es el pin # 7 y el bit menos significativo es el pin # 2. En este formato, el ejemplo anterior se pasaría como
[ 256, 2304, 127, 64, 64, 128, 2048, 3072 ]
. - La lista de entrada puede contener tiros en los que no se derriba ningún pin, en cuyo caso el puntaje no se modifica.
- No tiene nada especial que hacer cuando el puntaje alcanza exactamente 50 puntos. Pero puede suponer que no seguirá otro lanzamiento cuando suceda.
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.
Casos de prueba
Usando listas de enteros como entrada:
[ 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
Puede seguir este enlace para obtener estos casos de prueba en formato booleano.