The Nonary Game es un juego ficticio que se juega en la trilogía de videojuegos del mismo nombre. Tu objetivo es encontrar cuántos jugadores (en el mejor de los casos) pueden escapar de un juego determinado, en el menor número de bytes posible.
Reglas del juego
- Hay 9 jugadores, numerados del 1 al 9.
- Todos los jugadores comienzan en la misma habitación.
- Hay cualquier número de puertas, cada una con un número de 1 a 9. Puede haber números de puerta duplicados o faltantes.
- Las puertas son conexiones unidireccionales entre habitaciones. Cada puerta solo se puede usar una vez .
- Solo grupos de 3 a 5 jugadores pueden pasar por una puerta.
- Un grupo solo puede pasar por una puerta si la suma de sus números módulo 9 coincide con el número de puerta módulo 9.
- Cualquier jugador que atraviese 9 puertas escapa (gana).
Ejemplos
┌───┬───┬───┐
│ 6 4 9
│ < │ | |
│ 3 5 9
└───┴───┴───┘
<
representa el punto de partida. Todos los jugadores comienzan allí.
En este entorno, todos pueden escapar. Hay varias formas de lograr esto, una de las cuales es:
- [1, 2, 3, 4, 5] pasa por la puerta 6 ((1 + 2 + 3 + 4 + 5)% 9 = 6), mientras que [6, 7, 8, 9] pasa por la puerta 3 ((6 + 7 + 8 + 9)% 9 = 3). Todos se encuentran en la segunda sala.
- [1, 2, 3, 7] pasan por la puerta 4, mientras que [4, 5, 6, 8, 9] pasan por la puerta 5.
- [1, 2, 3, 4, 8] pasa por una de las 9 puertas, [5, 6, 7, 9] pasa por la otra.
┌───┬───┐
│ │ |
│ < 8 9
│ │ |
└───┴───┘
Esta vez, como máximo 4 personas pueden escapar:
- [1, 3, 5, 8, 9] pasa por la puerta 8.
- [1, 3, 5, 9] pasa por la puerta 9.
Son posibles otras listas de sobrevivientes, como [2, 3, 4] o [1, 4, 6, 7], pero no hay forma de que escapen más de 4 personas.
El reto
Dado un mapa, muestra el número máximo de jugadores que pueden escapar.
- ¡No te preocupes, no necesitas analizar mis horribles diagramas! La entrada es un gráfico dirigido etiquetado, que puede representar en cualquier formato conveniente (conjunto de bordes, matriz de adyacencia ...).
- Si su representación requiere etiquetas para habitaciones, puede usar cualquier conjunto de valores coherente. Sin embargo, las puertas deben estar representadas por los enteros 1 a 9.
- La entrada siempre tendrá al menos una puerta 9. Las 9 puertas siempre conducen a la salida, mientras que otras puertas nunca lo hacen.
- Su envío puede ser una función o un programa completo.
- Las lagunas estándar están prohibidas.
Casos de prueba
Las entradas se muestran como listas de tripletes [número de puerta, de sala a sala], siendo 0 la sala de inicio y -1 la salida. Si elige usar otro formato, tendrá que convertirlos adecuadamente.
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