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

carloskick

Algoritmo

8 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 |

^^^^^^^^^

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

Onde é que arranjaste o "7*1" para os grupos de 2 'o'?

Eu vejo "6*1" ou "8*1" consoante o grupo de 3 'o' conte como 2 grupos de 2 'o' ou não.

Considera que o tabuleiro está numerado:

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

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

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

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

A | o x x o o x |

  ^^^^^^^^^^^^^^^

    1 2 3 4 5 6

Grupos de 2 'o': A4A5; B1B2; A5B5; B2C2; A1B1; A1B2 (B1C2; C2D3) ==> 6 ou 8 grupos

O que é que me está a faltar?

Nota: Não sei Haskell, mas para o algoritmo em si, não é preciso nenhuma linguagem ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde é que arranjaste o "7*1" para os grupos de 2 'o'?

Penso que te falta o A4B5.

Quanto ao algoritmo, percorres cada posição do tabuleiro, e vês se existe alguma sequência com início nessa posição.

Por exemplo, para descobrir as horizontais, quando chegas à posição A4, verificas se o A3 é diferente (para que não esteja no meio de uma sequência já considerada), e como é diferente, verificas se tens iguais nas posições seguinte (vais encontrar mais uma peça igual).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que te falta o A4B5.

LOL, pois falta.

Eu já devia ter aprendido a verificar no papel as contas que faço de cabeça. Sempre que contei grupos no exemplo, deu-me 6 ... e contei várias vezes, em diferentes alturas do dia ;)

Obrigado, Rui Carlos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas eu keria saber era um algoritmo para kualker tipo de tabuleiro, desde vazio a xeio, passando por todas as hipoteses de preenchimento...akilo foi  so um exemplo

peço desculpa pelo mal entendido, mas fico agradecido!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em relaçao aos algoritmos dos segmentos horizontais e verticais ja consegui fazer, está a funconar correctament...agr bloqueei no algoritmo para os segmentos na diagonal, agradecia mais uma vez a vossa ajuda.

obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A única coisa que muda é a forma como procuras elementos adjacentes. E provavelmente vais ter que dividir o algoritmo em dois, pois na diagonal tens duas direcções possíveis.

Mas tudo depende do método que estás a usar.

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