Mölkky
Mölkky è un gioco di lancio finlandese. I giocatori usano un perno di legno (chiamato anche "mölkky") per provare a rovesciare perni di legno di dimensioni quasi simili con il perno di lancio, contrassegnati con numeri da 1 a 12. La posizione iniziale dei perni è la seguente:
(07)(09)(08)
(05)(11)(12)(06)
(03)(10)(04)
(01)(02)
Questa descrizione e le regole seguenti sono basate su Wikipedia .
Regole Mölkky semplificate
Bussare su un perno segna il numero di punti segnati sul perno.
Bussare 2 o più perni segna il numero di perni rovesciati (ad esempio, bussare per 3 perni ottiene 3 punti).
Lo scopo del gioco è raggiungere esattamente 50 punti. Segnare più di 50 è penalizzato riportando il punteggio a 25 punti.
Ai fini di questa sfida, supponiamo che i pin siano sempre nell'ordine esatto sopra descritto. (In una partita reale, i perni vengono rialzati dopo ogni lancio nella posizione in cui sono atterrati.)
Tutte le altre regole di Mölkky vengono ignorate e viene considerato solo un singolo giocatore.
Ingresso
Un elenco non vuoto di elenchi di 12 booleani. Ogni lista di booleani descrive l'esito di un lancio: 1 se il perno è stato rovesciato e 0 altrimenti. I booleani sono indicati nell'ordine esatto dei pin, dall'alto in basso a in basso a destra: 7 , 9 , 8 , 5 , 11 , 12 , 6 , 3 , 10 , 4 , 1 , 2 .
Produzione
Il punteggio dopo tutti i tiri descritti nell'input, calcolato applicando le regole 1 , 2 e 3 .
Esempio dettagliato
Consideriamo il seguente input:
// 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
L'output previsto è 27 .
Regole della sfida
- È possibile accettare input in qualsiasi formato ragionevole. Invece di elenchi di valori booleani, è possibile utilizzare numeri interi in cui il bit più significativo è il pin # 7 e il bit meno significativo è il pin # 2. In questo formato, l'esempio sopra verrebbe passato come
[ 256, 2304, 127, 64, 64, 128, 2048, 3072 ]
. - L'elenco di input può contenere tiri in cui non viene rovesciato alcun pin, nel qual caso il punteggio viene lasciato invariato.
- Non hai niente di speciale da fare quando il punteggio raggiunge esattamente 50 punti. Ma puoi presumere che nessun altro tiro seguirà quando succede.
- Questo è code-golf , quindi vince la risposta più breve in byte.
Casi test
Utilizzo di elenchi di numeri interi come input:
[ 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
Puoi seguire questo link per ottenere questi casi di test in formato booleano.