From b3c9f7851281efdd232f2f1a2b631e3813ab0248 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Sun, 4 Jun 2017 23:27:34 -0300 Subject: [PATCH] =?UTF-8?q?Altera=20cabe=C3=A7alho=20da=20fun=C3=A7=C3=A3o?= =?UTF-8?q?=20calculaBonus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/jogador.c | 26 +++++++++++++------------- libs/jogador.h | 2 +- tests/runTests.sh | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libs/jogador.c b/libs/jogador.c index eb15333..00d83b3 100644 --- a/libs/jogador.c +++ b/libs/jogador.c @@ -11,6 +11,7 @@ Lista Joga(Grafo g, Lista grupo){ //TODO: A Logica toda do jogo vai ficar aqui int counter = 1; while(tamanhoLista(grupo) < tamanhoLista(g->vertices)) { + int altura = calculaAltura(g, grupo); // Pega os filhos do grupo Lista filhos = filhosGrupo(grupo); // Monta a árvore de busca: @@ -18,7 +19,6 @@ Lista Joga(Grafo g, Lista grupo){ // - FILHOS: Cores alcancáveis a partir da raiz // - NETOS: Cores alcançáveis a partir dos filhos que NÃO são alcançáveis a partir da raiz // Só é necessário para calcular o bônus de cada filho - int altura = calculaAltura(g, grupo); // printf("\tJOGADA %d\n", counter); Lista coresFilhos = agrupaCores(filhos, g, altura, tamanhoLista(g->vertices) - tamanhoLista(grupo)); // printf("\tAltura da árvore: %d\n", altura); @@ -65,14 +65,14 @@ Lista Joga(Grafo g, Lista grupo){ calculaAltura(g, grupo); // PARA DEBUG!! Imprime as últimas 10 jogadas em um arquivo - char str[32]; - sprintf(str, "./jogada%d.out", counter ); - FILE* debug = fopen(str, "w+"); - if(debug) { - grafoParaDot(g, grupo, debug); - } - fclose(debug); - ++counter; + // char str[32]; + // sprintf(str, "./jogada%d.out", counter ); + // FILE* debug = fopen(str, "w+"); + // if(debug) { + // grafoParaDot(g, grupo, debug); + // } + // fclose(debug); + ++counter; } return jogadas; @@ -84,7 +84,7 @@ Lista filhosGrupo(Lista grupoPai) { Vertice pai = (Vertice) getConteudo(n); for(No m = primeiroNoLista(pai->filhos); m; m = getSucessorNo(m)) { Vertice filho = (Vertice) getConteudo(m); - if(!filho->grupo) { + if(!filho->grupo && filho->altura > pai->altura) { insereUnicoLista(filho, filhos); } } @@ -146,12 +146,12 @@ Lista agrupaCores(Lista filhos, Grafo g, int altura, int naoConsumidos) { return agrupa; } -int calculaBonus(Vertice v, Lista filhos, int profundidade) { +int calculaBonus(Vertice v, Lista irmaos, int profundidade) { int bonus = 0; for(No n = primeiroNoLista(v->filhos); n; n = getSucessorNo(n)) { Vertice filho = (Vertice) getConteudo(n); - // Se o filho não está na lista filhos e não está no grupo de vértices já consumidos - if(!filho->grupo && !pertenceLista(filho, filhos)) { + // Se o filho não está na lista irmaos e não está no grupo de vértices já consumidos + if(!filho->grupo && !pertenceLista(filho, irmaos)) { bonus += filho->peso + calculaBonusRec(filho, v, profundidade); } } diff --git a/libs/jogador.h b/libs/jogador.h index b3d0b39..5ec0b20 100644 --- a/libs/jogador.h +++ b/libs/jogador.h @@ -15,5 +15,5 @@ Lista filhosGrupo(Lista grupoPai); // Retorna uma lista de vértices com as cores e pesos agrupadas a partir de l Lista agrupaCores(Lista filhos, Grafo g, int altura, int naoConsumidos); -int calculaBonus(Vertice v, Lista filhos, int profundidade); +int calculaBonus(Vertice v, Lista irmaos, int profundidade); #endif diff --git a/tests/runTests.sh b/tests/runTests.sh index 5dbf175..ca61958 100755 --- a/tests/runTests.sh +++ b/tests/runTests.sh @@ -4,7 +4,7 @@ tempo_max=120000 #120s # tamanhos do tabuleiro -tams=(2 3 4 8 16 32) +tams=(3 4 8 16 32) # lista de cores cores=(4 8 10 16) -- GitLab