Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
8 Puzzle in Java Using Bredth-First Search

Ok so I understand the Bredth First Search Iterates nodes and goes to the next one that is the largest. I also have no idea how exactly that relates to the 8 Puzzle Game. Here is my code:

public static void breadthFirstSearch(int[] num, int m, Vector solution) {
    Queue t = new PriorityQueue();
    ArrayList Visited = new ArrayList();
    blankNode = 0;
    int temp;
    printArray(num);
    for (int i : num) {
        if (num[i] == m) {
            blankNode = i;
            System.out.println(blankNode);
        }
    }


    System.out.println(blankNode);
    printArray(num);

}

private static void printArray(int[] num) {
    for (int i : num) {
        System.out.print(num[i] + ",");
    }
    System.out.println();
}

private static int[] moveUp(int[] num, int blankSpace) {
    int temp = 0;
    if (blankSpace != 6 && blankSpace != 1 && blankSpace != 2) {
        blankNode = blankSpace - 3;
        temp = num[blankSpace - 3];
        num[blankSpace - 3] = num[blankSpace];
        num[blankSpace] = temp;
    }

    return num;
}

private static int[] moveLeft(int[] num, int blankSpace) {
    int temp;
    if (blankSpace != 0 && blankSpace != 3 && blankSpace != 6) {
        blankNode = blankSpace - 1;
        temp = num[blankSpace - 1];
        num[blankSpace - 1] = num[blankSpace];
        num[blankSpace] = temp;
    }
    return num;
}

private static int[] moveDown(int[] num, int blankSpace) {
    int temp;
    if (blankSpace != 6 && blankSpace != 7 && blankSpace != 8) {
        blankNode = blankSpace + 3;
        temp = num[blankSpace + 3];
        num[blankSpace + 3] = num[blankSpace];
        num[blankSpace] = temp;
    }
    return num;
}

private static int[] moveRight(int[] num, int blankSpace) {
    int temp;
    if (blankSpace != 2 && blankSpace != 5 && blankSpace != 8) {
        blankNode = blankSpace + 1;
        temp = num[blankSpace + 1];
        num[blankSpace + 1] = num[blankSpace];
        num[blankSpace] = temp;
    }
    return num;
}

Now, in the method breadthFirstSearch I need to play tiles with the num array. So imagine the num array as

045
789
312

and the blank node is 7, I need to get it down to the bottom right corner by only swapping it with numbers above below to the right or left of it. m gives me the number that is blank. How can breath first search be used here to do this? Do I just need to check every possible combination and choose the correct one? Please help.

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda