Mölkky
Mölkky to fińska gra w rzucanie. Gracze używają drewnianej szpilki (zwanej również „mölkky”), aby spróbować przewrócić drewniane szpilki o prawie podobnych wymiarach za pomocą szpilki do rzucania, oznaczonej cyframi od 1 do 12. Początkowa pozycja szpilek jest następująca:
(07)(09)(08)
(05)(11)(12)(06)
(03)(10)(04)
(01)(02)
Ten opis i poniższe zasady oparte są na Wikipedii .
Uproszczone zasady Mölkky
Przewrócenie jednego kołka powoduje zdobycie liczby punktów zaznaczonych na kołku.
Pukanie 2 lub więcej szpilek oznacza liczbę przewróconych szpilek (np. Przewrócenie 3 szpilek daje 3 punkty).
Celem gry jest osiągnięcie dokładnie 50 punktów. Punktowanie powyżej 50 jest karane poprzez przywrócenie wyniku do 25 punktów.
Na potrzeby tego wyzwania przyjmiemy, że piny są zawsze w dokładnie opisanej powyżej kolejności. (W prawdziwej grze szpilki są podnoszone ponownie po każdym rzucie w miejscu, w którym wylądowały.)
Wszystkie pozostałe zasady Mölkky są ignorowane i brany jest pod uwagę tylko jeden gracz.
Wkład
Niepusta lista list 12 booleanów. Każda lista booleanów opisuje wynik rzutu: 1, jeśli szpilka została przewrócona, a 0 w przeciwnym razie. Wartości logiczne są podane w dokładnej kolejności pinów, od lewego górnego do prawego dolnego rogu: 7 , 9 , 8 , 5 , 11 , 12 , 6 , 3 , 10 , 4 , 1 , 2 .
Wydajność
Wynik po wszystkich rzutach opisanych na wejściu, obliczany przy zastosowaniu reguł 1 , 2 i 3 .
Szczegółowy przykład
Rozważmy następujące dane wejściowe:
// 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
Oczekiwany wynik to 27 .
Zasady wyzwania
- Możesz przyjmować dane wejściowe w dowolnym rozsądnym formacie. Zamiast list wartości logicznych można użyć liczb całkowitych, w których najbardziej znaczącym bitem jest pin # 7, a najmniej znaczącym bitem jest pin # 2. W tym formacie powyższy przykład zostałby przekazany jako
[ 256, 2304, 127, 64, 64, 128, 2048, 3072 ]
. - Lista wejściowa może zawierać rzuty, w których nie zostanie przewrócony żaden pin, w którym to przypadku wynik zostaje pozostawiony bez zmian.
- Nie masz nic specjalnego do roboty, gdy wynik osiągnie dokładnie 50 punktów. Możesz jednak założyć, że kiedy to nastąpi, nie nastąpi żaden inny rzut.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Przypadki testowe
Korzystanie z list liczb całkowitych jako danych wejściowych:
[ 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
Możesz użyć tego linku, aby uzyskać te przypadki testowe w formacie boolowskim.