Dúvidas sobre o EP2

Dúvidas sobre o EP2

por Marcelo Queiroz -
Número de respostas: 0

Pessoal, recebi algumas dúvidas sobre o EP2 por e-mail, e respondo aqui no fórum pois podem ajudar a mais gente:

1) Se há duas cadeias que compartilham um elemento, como na forma de uma cruz ou L, conta-se duas vezes o ponto compartilhado, um por conta da cadeia horizontal e outro por conta da cadeia vertical ou é necessário implementar um meio de não contar duas vezes a mesma gema destruída? Um exemplo para deixar claro o que quero dizer:

+-----------+
| D D D C D |
| D C D C B |
| D C B A C |
| B C A A C |
| D A C D C |
+-----------+

O item 'D' na posição 0,0 pertence a duas cadeias e pela implementação normal, se contariam 2 pontos, um pela horizontal e outro pela vertical. Como os jogos do gênero tendem a bonificar a formação desses "clusters" ou "combos", não saberia dizer qual implementação é a mais adequada.

Conforme a especificação da função eliminar_cadeia, o número de gemas eliminadas que é devolvido pela função não conta duas vezes gemas que estão em mais de uma cadeia (do enunciado: "note que se uma gema estiver em mais de uma cadeia, ela só deve ser eliminada uma única vez"), refletindo corretamente o que está definido no início do enunciado ("gerando pontos para o jogador, dados pelo total de gemas destruídas").

2) Se houver mais de uma dica disponível, deve-se implementar um meio para levantar todas elas e printar para o usuário uma aleatória ou deve-se printar a primeira obtida?

Conforme a especificação do enunciado, a função obter_dica devolve apenas uma dica, que poderia ser qualquer gema que faça parte de uma permutação válida. No primeiro exemplo com o tabuleiro de 8x8, a função devolve a posição (3,6) como dica, mas existem diversas outras possibilidades de permutação no mesmo tabuleira (qualquer uma serviria).

3) a função "eliminar" deve retornar o número de pontos totais da jogada (número de gemas destruídas) ou o novo tabuleiro?

Conforme a especificação do enunciado, a função eliminar modifica o tabuleiro passado como parâmetro e devolve através do return o número de gemas destruídas. Vejam o exemplo que aparece logo abaixo da descrição da função.

Marcelo