30 for (
int i = 0;
i < 9;
i++)
52 for (
int i = 0;
i < 9;
i++) {
73 static int direcao[] = { -3,3,-1,1 };
75 for (
int i = 0;
i < 4;
i++) {
92 for (
int i = 0;
i < 9;
i++)
103 for (
int i = 1;
i < 9;
i++) {
128 for (
int i = 0;
i < 3;
i++) {
130 for (
int j = 0;
j < 3;
j++)
152 printf(
"\nParte %d, ações:",
parte);
157 for (
int i = 0;
i < 3;
i++) {
159 for (
int j = 0;
j < 3;
j++)
198 for (
int i = 0;
i < 9;
i++)
208 for (
int i = 0, index = 0;
i < 9;
i++, index += 4)
@ ESTADOS_REPETIDOS
Forma de lidar com estados repetidos (ignorá-los, ascendentes, gerados).
@ IGNORADOS
ignorados os estados gerados repetidos
@ ASCENDENTES
estados são comparados com ascendentes, e se forem repetidos são removidos
Representa um estado do puzzle 8.
void Codifica(TBits &estado)
Codifica o estado para um vetor de inteiros de 64 bits.
TString Acao(TProcuraConstrutiva *sucessor)
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
void MostrarSolucao(void)
definir para visualizar a solução
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
bool Distinto(TProcuraConstrutiva *estado)
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
void Debug(bool completo=true) override
Mostra o estado no ecrã, para debug.
void ResetParametros()
Inicializa os parâmetros, indicadores e instâncias.
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
void Copiar(TProcuraConstrutiva *objecto)
void SetBits(uint64_t value, int bitIndex, int bitCount)
Representa um estado no espaço de estados.
void NovaLinha(bool tudo=true)
static void LibertarVector(TVector< TNo > &vector, int excepto=-1, int maiorQue=-1)
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
int Parametro(int id) const
static int resultado
Resultado retornado pelo algoritmo na última execução.
static TString ficheiroInstancia
prefixo do nome ficheiro de uma instância - editado pelo utilizador Caso não seja nulo,...
static TString ficheiroGravar
prefixo do nome do ficheiro para gravar a instância para ficheiro (terá sido gerada)
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().
TString & printf(const char *fmt,...)
TVector< TString > readLines()
TString & writeLines(const TVector< TString > &lines, bool append=false)
virtual void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
void Inicializar(void) override
Coloca o objecto no estado inicial da procura.
void ResetParametros() override
Redefinição. Ver TProcura::ResetParametros().
virtual int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
virtual void Codifica(TBits &estado)
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 TVector< TNo > caminho
Solução retornada pela procura (os estados devem ser libertados).
int valor
valor do parâmetro