Conte os pontos pontuados em um tabuleiro de go.
No jogo de go (também conhecido como baduk, igo, cờ vây e wéiqí), ganham-se pontos ao cercar completamente interseções vazias com suas pedras. As interseções cercadas de um jogador são conhecidas como seu território.
Calcule o território de cada jogador. Você pode assumir que quaisquer pedras que tenham ficado presas em território inimigo já foram retiradas do tabuleiro.
Determine o território que inclui uma coordenada especificada.
Várias interseções vazias podem ser cercadas de uma só vez e, para cercar, contam apenas os vizinhos horizontais e verticais. No diagrama a seguir, as pedras que importam estão marcadas com "O" e as que não importam estão marcadas com "I" (ignoradas). Espaços vazios representam interseções vazias.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
Para ser mais preciso, uma interseção vazia faz parte do território de um jogador se todos os seus vizinhos forem pedras desse jogador ou interseções vazias que fazem parte do território desse jogador.
Para mais informações, veja a Wikipedia ou a Sensei's Library.
Às vezes, é necessário lançar uma exceção. Quando você faz isso, deve sempre incluir uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda muito na depuração. Em situações em que você sabe que a origem do erro será de um determinado tipo, você pode optar por lançar um dos tipos de erro internos, mas ainda deve incluir uma mensagem significativa.
Este exercício em particular exige que você use a instrução raise para "lançar" um ValueError quando as coordenadas forem inválidas. Os testes só vão passar se você lançar a exception com raise e incluir uma mensagem junto.
Para lançar um ValueError com uma mensagem, escreva a mensagem como argumento para o tipo exception:
# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.