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

Sign in to follow this  
carloskick

Algoritmo

Recommended Posts

carloskick

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

Share this post


Link to post
Share on other sites
TheDark

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.


Desaparecido.

Share this post


Link to post
Share on other sites
kalew

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.