The Nonary Game è un gioco immaginario giocato nella trilogia di videogiochi con lo stesso nome. Il tuo obiettivo è scoprire quanti giocatori (nella migliore delle ipotesi) possono sfuggire a un determinato gioco, nel minor numero di byte possibile di codice.
Le regole del gioco
- Ci sono 9 giocatori, numerati da 1 a 9.
- Tutti i giocatori iniziano nella stessa stanza.
- Ci sono un numero qualsiasi di porte, ognuna con un numero da 1 a 9. Potrebbero esserci numeri di porta duplicati o mancanti.
- Le porte sono connessioni unidirezionali tra le stanze. Ogni porta può essere utilizzata una sola volta .
- Solo gruppi da 3 a 5 giocatori possono varcare una porta.
- Un gruppo può attraversare una porta solo se la somma dei loro numeri modulo 9 corrisponde al numero della porta modulo 9.
- Ogni giocatore che passa attraverso una porta 9 fugge (vince).
Esempi
┌───┬───┬───┐
│ 6 4 9
│ < │ | |
│ 3 5 9
└───┴───┴───┘
<
rappresenta il punto di partenza. Tutti i giocatori iniziano lì.
In questa impostazione, tutti possono scappare. Esistono vari modi per raggiungere questo obiettivo, uno dei quali è:
- [1, 2, 3, 4, 5] attraversano la porta 6 ((1 + 2 + 3 + 4 + 5)% 9 = 6), mentre [6, 7, 8, 9] attraversano la porta 3 ((6 + 7 + 8 + 9)% 9 = 3). Tutti si incontrano nella seconda stanza.
- [1, 2, 3, 7] attraversano la porta 4, mentre [4, 5, 6, 8, 9] attraversano la porta 5.
- [1, 2, 3, 4, 8] attraversano una delle 9 porte, [5, 6, 7, 9] attraversano l'altra.
┌───┬───┐
│ │ |
│ < 8 9
│ │ |
└───┴───┘
Questa volta, al massimo 4 persone possono scappare:
- [1, 3, 5, 8, 9] attraversano la porta 8.
- [1, 3, 5, 9] attraversa la porta 9.
Sono possibili altri elenchi di sopravvissuti, come [2, 3, 4] o [1, 4, 6, 7], ma non c'è modo per più di 4 persone di fuggire.
La sfida
Data una mappa, genera il numero massimo di giocatori che possono scappare.
- Non ti preoccupare, non è necessario analizzare i miei terribili diagrammi! L'input è un grafico diretto etichettato, che è possibile rappresentare in qualsiasi formato conveniente (edge set, matrice di adiacenza ...).
- Se la tua rappresentazione richiede etichette per le stanze, puoi utilizzare qualsiasi set coerente di valori. Tuttavia, le porte devono essere rappresentate dagli interi da 1 a 9.
- L'ingresso avrà sempre almeno una 9 porte. Tutte e 9 le porte portano sempre all'uscita, mentre le altre porte non lo fanno mai.
- Il tuo invio può essere una funzione o un programma completo.
- Le scappatoie standard sono vietate.
Casi test
Gli ingressi sono mostrati come elenchi di terzine [numero porta, da stanza a stanza], con 0 come stanza iniziale e -1 come uscita. Se scegli di utilizzare un altro formato, dovrai convertirli in modo appropriato.
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