Oglądałem mistrzostwa świata w snookerze i zastanawiałem się ..
Punktacja w Snookerze
W grze w snookera obowiązują również pewne zasady:
- Kiedy na stole są czerwone kulki, podczas swojej tury musisz najpierw wbić czerwoną piłkę
- Po wbiciu każdej czerwonej kuli musisz wbić kolorową (nie czerwoną) kulkę (wbita kulka jest następnie odkładana na stół)
- Po tym, jak wszystkie czerwone kule są w górze (jest ich 15), możesz najpierw wybrać piłkę kolorową, a następnie zacząć od piłki o najniższym wyniku i przejść do piłki o najwyższym wyniku (nie są one zastępowane)
- Brak doniczkowania w żadnym momencie kończy twoją turę.
- Punkty na piłkę
- Czerwona kula: 1 punkt
- Żółta piłka: 2 punkty
- Zielona kula: 3 punkty
- Brązowa kula: 4 punkty
- Niebieska kula: 5 punktów
- Różowa kula: 6 punktów
- Czarna kula: 7 punktów
Pytanie
Zaczynasz od stołu ze wszystkimi kulkami na stole - 15 czerwonych i jedna z każdej innej kolorowej piłki - i dostajesz wynik gracza w snookerze po pierwszej turze, jakie są sposoby, aby to osiągnąć wynik?
Dane wejściowe będą liczbą od 1 do 147. Możesz wybrać, czy jest to liczba całkowita, czy łańcuch. Dane wyjściowe powinny być różnymi kombinacjami liczby trafień każdej piłki.
Przypadki testowe:
Input: 4
Output:
1r 1g
2r 1y
Input: 25
Output:
4r 3b
5r 2b 1br 1y
5r 2b 2g
...
9r 8y
Zasady:
- Możesz wybrać, czy wypisujesz możliwości podzielone przez nowy wiersz, czy separator (/ ,; | \ lub nawet inne, których mi brakuje)
To jest codegolf, więc wygrywa najkrótszy kod.
"5r 3b 2g"
może być wyprowadzony jako[5,0,2,0,3,0,0]
(o ile jest to spójne)?b
koloru brązowego ibl
niebieskiego; więcbk
na czarno? Możemy użyćn
,e
ik
(ostatnie litery) dla tych trzech? Co powieszdleruna
na rozpoznanie wszystkich ośmiu kolorów (trzecia litera każdego)?Odpowiedzi:
Galaretka , 66 bajtów
Cóż, teraz jest zbyt wolny dla TIO!
... oto 2626 sposobów na wyprodukowanie dokładnie 100 w trybie offline.
... a tutaj jest wersja, która będzie działała tylko z SZEŚĆMI czerwonymi (maksymalna przerwa = 75)
Drukuje siatkę liczb, z których każda linia jest oddzieloną spacjami listą wartości kulki (np. Trzy czerwone i dwie zielone byłyby na linii
1 1 1 3 3
).W przypadku wersji zgrupowanej według wartości, która drukuje wiersze zliczeń wraz z pełnymi nazwami kulek, w 102 bajtach:
W jaki sposób?
źródło
JavaScript (ES7),
188180178 bajtówZwraca tablicę tablic (posortowaną od czerwonej do czarnej).
Skomentował
Uwaga : Ta wersja nie zawiera ostatniej optymalizacji
p
(teraz zainicjowanej na 7), co utrudnia zrozumienie logiki.Przykładowe dane wyjściowe
Poniżej przedstawiono wynik dla n = 140:
Próbny
Jest to zbyt wolne dla fragmentu. Zamiast tego możesz spróbować tutaj . (Możesz otrzymać jeden lub dwa niereagujące alerty skryptu , ale w końcu powinno się zakończyć).
źródło