Percursos
/
Haskell
Haskell
/
Exercícios
/
Contagem de Go
Contagem de Go

Contagem de Go

Difícil

Instruções

Conta os pontos marcados num tabuleiro de Go.

No jogo de Go (também conhecido como baduk, igo, cờ vây e wéiqí), ganham-se pontos ao rodear completamente interseções vazias com as tuas pedras. As interseções rodeadas de um jogador são conhecidas como o seu território.

Calcula o território de cada jogador. Podes assumir que quaisquer pedras que tenham ficado presas em território inimigo já foram retiradas do tabuleiro.

Determina o território que inclui uma coordenada especificada.

É possível rodear várias interseções vazias ao mesmo tempo e, para rodear, só contam os vizinhos horizontais e verticais. No diagrama seguinte, as pedras que importam estão marcadas com "O" e as que não importam estão marcadas com "I" (ignoradas). Os 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, consulta a Wikipedia ou a Sensei's Library.

Dicas

Para completares este exercício, precisas de implementar as seguintes funções:

  • territories devolve as coordenadas (a começar em 1; o canto superior esquerdo é (1,1)) dos pontos de cada território, juntamente com quem é o «dono» do território.

  • territoriesFor devolve o território que contém a coordenada, juntamente com o dono do território. Se a coordenada não apontar para um local vazio, devolve Nothing.

Um território pertence a um dos jogadores se as pedras desse jogador forem as únicas pedras adjacentes ao território.

Vais encontrar as assinaturas de tipo já no sítio, mas cabe-te a ti definir as funções.

Editar via GitHub A ligação abre numa nova janela ou separador
Haskell Exercism

Estás pronto para começar Contagem de Go?

Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.