The Nonary Game est un jeu fictif joué dans la trilogie de jeux vidéo du même nom. Votre objectif est de savoir combien de joueurs (au mieux) peuvent échapper à un jeu donné, en aussi peu d'octets que possible.
Règles du jeu
- Il y a 9 joueurs, numérotés de 1 à 9.
- Tous les joueurs commencent dans la même pièce.
- Il existe un certain nombre de portes, chacune avec un nombre de 1 à 9. Il peut y avoir des numéros de porte en double ou manquants.
- Les portes sont des connexions à sens unique entre les chambres. Chaque porte ne peut être utilisée qu'une seule fois .
- Seuls les groupes de 3 à 5 joueurs peuvent franchir une porte.
- Un groupe ne peut franchir une porte que si la somme de ses nombres modulo 9 correspond au numéro modulo 9 de la porte.
- Tout joueur qui passe par une porte 9 s'échappe (gagne).
Exemples
┌───┬───┬───┐
│ 6 4 9
│ < │ | |
│ 3 5 9
└───┴───┴───┘
<
représente le point de départ. Tous les joueurs commencent là.
Dans ce cadre, tout le monde peut s'échapper. Il existe différentes façons d'y parvenir, dont l'une est:
- [1, 2, 3, 4, 5] passe par la porte 6 ((1 + 2 + 3 + 4 + 5)% 9 = 6), tandis que [6, 7, 8, 9] passe par la porte 3 ((6 + 7 + 8 + 9)% 9 = 3). Tout le monde se retrouve dans la deuxième salle.
- [1, 2, 3, 7] passent par la porte 4, tandis que [4, 5, 6, 8, 9] passent par la porte 5.
- [1, 2, 3, 4, 8] passez par l'une des 9 portes, [5, 6, 7, 9] passez par l'autre.
┌───┬───┐
│ │ |
│ < 8 9
│ │ |
└───┴───┘
Cette fois, au plus 4 personnes peuvent s'échapper:
- [1, 3, 5, 8, 9] passez la porte 8.
- [1, 3, 5, 9] passez la porte 9.
D'autres listes de survivants sont possibles, comme [2, 3, 4] ou [1, 4, 6, 7], mais il n'y a aucun moyen pour plus de 4 personnes de s'échapper.
Le défi
Étant donné une carte, affichez le nombre maximum de joueurs pouvant s'échapper.
- Ne vous inquiétez pas, vous n'avez pas besoin d'analyser mes horribles diagrammes! L'entrée est un graphe orienté étiqueté, que vous pouvez représenter dans n'importe quel format pratique (ensemble de bords, matrice d'adjacence ...).
- Si votre représentation nécessite des étiquettes pour les pièces, vous pouvez utiliser n'importe quel ensemble de valeurs cohérent. Cependant, les portes doivent être représentées par les entiers 1 à 9.
- L'entrée aura toujours au moins une porte 9. Les 9 portes mènent toujours à la sortie, tandis que les autres portes ne le font jamais.
- Votre soumission peut être une fonction ou un programme complet.
- Les failles standard sont interdites.
Cas de test
Les entrées sont affichées sous forme de listes de triplets [numéro de porte, d'une pièce à l'autre], 0 étant la pièce de départ et -1 la sortie. Si vous choisissez d'utiliser un autre format, vous devrez les convertir de manière appropriée.
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