Nonary Game to fikcyjna gra rozgrywana w trylogii gier wideo o tej samej nazwie. Twoim celem jest ustalenie, ilu graczy (w najlepszym wypadku) może uciec z danej gry, przy jak najmniejszej liczbie bajtów kodu.
Zasady gry
- Jest 9 graczy, ponumerowanych od 1 do 9.
- Wszyscy gracze zaczynają w tym samym pokoju.
- Istnieje dowolna liczba drzwi, każda z liczbą od 1 do 9. Mogą istnieć duplikaty lub brakujące numery drzwi.
- Drzwi stanowią jednokierunkowe połączenia między pokojami. Każdych drzwi można użyć tylko raz .
- Tylko grupy od 3 do 5 graczy mogą przejść przez drzwi.
- Grupa może przejść przez drzwi tylko wtedy, gdy suma ich liczb modulo 9 odpowiada liczbie drzwi modulo 9.
- Każdy gracz, który przejdzie przez 9 drzwi, ucieka (wygrywa).
Przykłady
┌───┬───┬───┐
│ 6 4 9
│ < │ | |
│ 3 5 9
└───┴───┴───┘
<
reprezentuje punkt początkowy. Wszyscy gracze zaczynają od tego miejsca.
W tym otoczeniu każdy może uciec. Istnieją różne sposoby osiągnięcia tego celu, z których jeden to:
- [1, 2, 3, 4, 5] przechodzą przez drzwi 6 ((1 + 2 + 3 + 4 + 5)% 9 = 6), podczas gdy [6, 7, 8, 9] przechodzą przez drzwi 3 ((6 + 7 + 8 + 9)% 9 = 3). Wszyscy spotykają się w drugim pokoju.
- [1, 2, 3, 7] przechodzą przez drzwi 4, a [4, 5, 6, 8, 9] przechodzą przez drzwi 5.
- [1, 2, 3, 4, 8] przejdź przez jedne z 9 drzwi, [5, 6, 7, 9] przejdź przez drugie.
┌───┬───┐
│ │ |
│ < 8 9
│ │ |
└───┴───┘
Tym razem maksymalnie 4 osoby mogą uciec:
- [1, 3, 5, 8, 9] przejdź przez drzwi 8.
- [1, 3, 5, 9] przejdź przez drzwi 9.
Możliwe są inne listy ocalałych, takie jak [2, 3, 4] lub [1, 4, 6, 7], ale nie ma możliwości ucieczki więcej niż 4 osób.
Wyzwanie
Podając mapę, wypisz maksymalną liczbę graczy, którzy mogą uciec.
- Nie martw się, nie musisz analizować moich okropnych diagramów! Dane wejściowe to nakierowany wykres, który można przedstawić w dowolnym dogodnym formacie (zestaw krawędzi, macierz przylegania ...).
- Jeśli Twoja reprezentacja wymaga etykiet dla pomieszczeń, możesz użyć dowolnego spójnego zestawu wartości. Jednak drzwi muszą być reprezentowane przez liczby całkowite od 1 do 9.
- Wejście zawsze będzie miało co najmniej jedne 9 drzwi. Wszystkie 9 drzwi zawsze prowadzą do wyjścia, podczas gdy inne drzwi nigdy nie.
- Twoje zgłoszenie może być funkcją lub pełnym programem.
- Standardowe luki są zabronione.
Przypadki testowe
Wejścia są pokazane jako listy trojetów [numer drzwi, z pokoju do pokoju], przy czym 0 oznacza pokój początkowy, a -1 wyjście. Jeśli zdecydujesz się użyć innego formatu, będziesz musiał odpowiednio je przekonwertować.
Input Output
[[6, 0, 1], [3, 0, 1], [4, 1, 2], [5, 1, 2], [9, 2, -1], [9, 2, -1]] 9
[[8, 0, 1], [9, 1, -1]] 4
[[9, 0, -1]] 5
[[2, 0, 1], [1, 1, 2], [9, 2, -1]] 0
[[2, 0, 1], [3, 1, 2], [9, 2, -1]] 3
[[1, 0, 1], [9, 1, -1], [1, 0, 2], [9, 2, -1]] 4
[[2, 0, 1], [3, 0, 1], [5, 1, 2], [4, 0, 2], [9, 2, -1], [9, 2, -1]] 8
[[3, 0, 1], [4, 0, 1], [5, 0, 1], [9, 1, -1], [7, 1, 2], [9, 2, -1]] 7
[[1, 0, 1], [2, 0, 1], [4, 0, 1], [9, 1, -1], [8, 1, 2], [9, 2, -1]] 6
[[6, 0, 1], [7, 0, 1], [9, 1, -1], [9, 1, -1]] 7