33 for (
int i = 0; i < 9; i++)
42 for (
int i = 0; i < 9; i++)
57 for (
int i = 0; i < 3; i++)
62 for (
int i = 0; i < 3; i++)
77 for (
int i = 0; i < 9; i++)
88 for (
int i = 0; i < 9; i++)
95 sprintf(str,
"%c%d",
'a' + diferenca % 3, 1 + diferenca / 3);
103 for (
int i = 0; i < 3; i++)
104 printf(
" %c",
'A' + i);
105 for (
int i = 0; i < 3; i++) {
108 for (
int j = 0; j < 3; j++)
110 printf(
" %d ", i + 1);
114 for (
int i = 0; i < 3; i++)
115 printf(
" %c",
'A' + i);
133 for (
int i = 0; i < 3; i++)
138 for (
int i = 0; i < 3; i++)
159 for (
int i = 0, index = 0; i < 9; i++, index += 2)
160 estado[index >> 6] |= ((uint64_t)Codigo(
tabuleiro[i])) << (index & 63);
173 for (
int i = 0; i < 3; i++) {
190 for (
int i = 0; i < 3; i++)
191 for (
int j = 0; j < 3; j++)
193 peso += Indice(i, j);
195 peso += Indice(i, j) * 100;
200void CJogoDoGalo::Simetria(
TVector<char>& tabuleiro,
int eixo) {
202 for (
int i = 0; i < 3; i++)
203 for (
int j = 0; j < 1; j++)
206 else if (eixo == 1) {
207 for (
int i = 0; i < 1; i++)
208 for (
int j = 0; j < 3; j++)
212 for (
int i = 0; i < 3; i++)
213 for (
int j = i + 1; j < 3; j++)
218void CJogoDoGalo::Troca(
char& a,
char& b) {
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
void Debug(void)
Mostra o estado no ecrã, para debug.
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
TVector< char > tabuleiro
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
void SolucaoVazia(void)
Coloca o objecto no estado inicial da procura.
const char * Acao(TProcuraConstrutiva *sucessor)
void Copiar(TProcuraConstrutiva *objecto)
bool minimizar
o jogador actual deve minimizar o custo (ou maximizar caso tenha o valor falso)
int Heuristica(void)
chamar após calcular a heurística (grava o valor, dependendo da parametrização)
bool ExisteHeuritica(void)
static int infinito
valor de infinito (vitoria/derrota), omissao 1000
Representa um estado no espaço de estados.
void NovaLinha(bool tudo=true)
virtual void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
virtual void SolucaoVazia(void)
Coloca o objecto no estado inicial da procura.
virtual void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
virtual void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
int heuristica
Estimativa para o custo até um estado objetivo, se disponível.
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
static int tamanhoCodificado
Número de inteiros de 64 bits utilizados para codificar um objeto (≤ OBJETO_HASHTABLE).
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().