Conta i punti segnati su un tavoliere da Go.
Nel gioco del go (noto anche come baduk, igo, cờ vây e wéiqí) si guadagnano punti circondando completamente le intersezioni vuote con le proprie pietre. Le intersezioni circondate di un giocatore sono note come suo territorio.
Calcola il territorio di ciascun giocatore. Puoi dare per scontato che tutte le pietre rimaste bloccate in territorio nemico siano già state rimosse dal tavoliere.
Determina il territorio che include una coordinata specificata.
Più intersezioni vuote possono essere circondate contemporaneamente. Per circondare contano solo i vicini orizzontali e verticali. Nel diagramma seguente le pietre che contano sono contrassegnate con «O» e quelle che non contano con «I» (ignorate). Gli spazi vuoti rappresentano intersezioni vuote.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
Per essere più precisi, un'intersezione vuota fa parte del territorio di un giocatore se tutti i suoi vicini sono pietre di quel giocatore oppure intersezioni vuote che fanno parte del territorio di quel giocatore.
Per maggiori informazioni vedi Wikipedia o Sensei's Library.
A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo che indichi qual è l'origine dell'errore. Questo rende il codice più leggibile e aiuta parecchio nel debug. Nei casi in cui sai che l'origine dell'errore sarà di un certo tipo, puoi scegliere di sollevare uno dei tipi di errore integrati, ma dovresti comunque includere un messaggio significativo.
Questo esercizio in particolare richiede che tu usi l'istruzione raise per «lanciare» un ValueError quando le coordinate non sono valide. I test passeranno solo se usi raise sull'exception e ci alleghi anche un messaggio.
Per sollevare un ValueError con un messaggio, scrivi il messaggio come argomento del tipo exception:
# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.