• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

carloskick

Algoritmo

3 mensagens neste tópico

ja perdi muito tempo a tentar descobrir qual o algoritmo que devo usar para usar num sistema de pontuação, ou seja:

| _ _ _ _ _ _ |    2 peças = 1 ponto

| _ _ o _ o _ |    3 peças = 3 pontos

| _ o x _ x _  |    4 peças = 6 pontos

| o o x x o x  |    5 peças = 10 pontos

| o x x o o x  |    6 peças = 15 pontos

^^^^^^^^^  7 peças = 21 pontos

isto é um tabuleiro de um jogo em que ganha quem tiver mais peças seguidas(segmentos), ou seja, neste caso a pontuação das peças 'o' seria 7*1 + 1*3 = 10 pontos e das 'x' seria 6*1 + 2*3 = 12 pontos

os segmentos sao feitos em todos os sentidos, incluindo diagonais....e no codigo em si estou a utiliazar uma lista de listas, em k cada lista da lista principal é uma COLUNA do tabuleiro

a minha duvida pressiste mesmo em arranjar um algoritmo para este sistema de pontuação.

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não seria melhor utilizar um array bidimensional?

Depois era só comparar cada casa com as adjacentes. Se não tivesse uma peça igual acima, à esquerda ou na diagonal cima-esquerda, contar todas as iguais abaixo, à direita, ou na diagonal baixo direita, respectivamente. Isto para todas as posições ocupadas, excepto a coluna mais à direita e a linha do fundo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo. pois é muito mais fácil você trabalhar com arrays bidimensionais do que com listas, especialmente se você trabalhar com listas encadeadas por vetores. mas, neste caso, é fácil contar os pontos feitos em colunas. Para contar os pontos feitos nas linhas e diagonais, recomendo criar um array de apontadores que corre as listas verticalmente contabilizando os pontos. O mesmo pode ser elaborado para as diagonais, mas eu teria bastante dificuldades em implementar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora