Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

280
Visualizações
Necesito que mis funciones dejen de ejecutarse y se rompan una vez que se cumpla una condición, sin que aparezca un error

Estoy tratando de hacer un solucionador de sudoku. el código funciona, sin embargo, cuando no hay más 0 (ceros) en la tabla, eso significa que mi tabla de sudoku está resuelta. si la tabla de sudoku se ha resuelto, quiero que todo deje de funcionar. El problema es que no he encontrado una buena manera de detener la ejecución del programa cuando se resuelve. Estoy abierto a sugerencias.

el caso que se supone que detiene la ejecución del programa es function find_empty_space(table) , es la primera condición if, sin embargo, en la function sudoku_solver(table) llama a var values = find_empty_space(table); y como no devuelvo nada si ocurre este caso ocurre un error.

Intenté agregar una condición if debajo var values = find_empty_space(table); donde valores == nulo, entonces no pasa nada, por lo que la función puede detenerse, pero eso por alguna razón arruina el funcionamiento del solucionador de sudoku. si alguien tiene otra idea de cómo detener mi programa y todas las demás funciones después de que se cumpla la condición, por favor lmk

 var sudoku_1 = [ [0, 0, 0, 0], [1, 0, 2, 0], [0, 1, 4, 0], [2, 0, 0, 1], ]; var table = sudoku_1; function find_empty_space(table) { if ( table[0].indexOf(0) == -1 && table[1].indexOf(0) == -1 && table[2].indexOf(0) == -1 && table[3].indexOf(0) == -1 ) { console.log("Sudoku Solver has solved your table"); var solved_table = table; } else { for (var r = 0; r < 5; r++) { for (var c = 0; c < 5; c++) { console.log(`row: ${r}`); //!for testing console.log(`column: ${c}`); //!for testing // if object in array is equal to 0 then it means the space is empty if (table[r][c] == 0) { return [r, c]; } } } } } function check_if_number_can_go_in_position(table, n, r, c) { console.log("function check_if_number_can_go_in_position()"); console.log(`row ${table[r]}`); // var below makes a array of tables column that is need to search for n var column_c = table.map((d) => d[c]); console.log(`col ${column_c}`); if (table[r].indexOf(n) != -1) { console.log("backtrack r"); return false; } if (column_c.indexOf(n) != -1) { console.log("backtrack c"); return false; } return true; } // this is the main function function sudoku_solver(table) { var values = find_empty_space(table); console.log(values); var r = values[0]; var c = values[1]; console.log("in one"); for (var n = 1; n < 5; n++) { console.log(`n = ${n}`); if (check_if_number_can_go_in_position(table, n, r, c) == true) { table[r][c] = n; console.table(table); sudoku_solver(table); } } table[r][c] = 0; } sudoku_solver(table);
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Suponiendo que esto es para la variante de Sudoku de 16x16, ya que la entrada en el OP es solo de 4x4; de acuerdo con esta suposición, debe encontrar todos los espacios en blanco (representados como 0 ) en un cuadro . En el siguiente ejemplo, la función blankMap(box) toma una matriz 2D de cualquier tamaño y devuelve una matriz de pares. Una matriz de pares es una matriz 2D de N filas y 2 columnas. En cada par (o subarreglo) está la ubicación de un 0 : la primera columna ( Array[N][0] ) representa el número de índice de una fila, la segunda columna ( Array[N][1] ) representa el número de índice de una columna.

APORTE PRODUCCIÓN
const box9 = [ caja constante9X = [
[0, 12, 0, 9], [0, 0], [0, 2],
[16, 3, 0, 8], [1, 2],
[0, 0, 0, 0], [2, 0], [2, 1], [2, 2], [2, 3],
[10, 5, 2, 0] [3, 3]
]; ];

 /* INPUT A 4 row by 4 colunm table represents 1 of a total of 16 sub-tables. */ const box0 = [ [0, 5, 13, 0], [10, 0, 0, 0], [7, 11, 3, 0], [0, 0, 0, 0] ]; const box13 = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ]; const blankMap = box => box.flatMap((arr, row) => // 1st grab each sub-array (~arr~) arr.flatMap((num, col) => // On each ~arr~,... num === 0 ? [[row, col]] : [])); /* ...if it's a ~0~ ~?~ then return the position in double brackets: ~[[row, col]]~ otherwise ~:~ return an empty array ~[]~.*/ // A utility to verify if a box is completed const isDone = array => array.length < 1; console.log('box0=-=-=-=-=-=-=-=-=-=-=-=-='); let b0 = blankMap(box0); console.log(JSON.stringify(b0)); console.log('box0 is complete: '+isDone(b0)); console.log('box13-=-=-=-=-=-=-=-=-=-=-=-='); let b13 = blankMap(box13); console.log(JSON.stringify(b13)); console.log('box13 is complete: '+isDone(b13));

El método .flatMap() se usó dos veces: una vez para iterar a través de la matriz externa y tomar las sub-matrices, y una vez para iterar a través de cada sub-matriz para encontrar los 0 s. .flatMap() es la combinación de los métodos .map() y .flat() , por lo que si desea obtener la devolución como una matriz 2D, envuélvala entre paréntesis (el doble si otro .flatMap() está trabajando en la misma matriz). A la inversa, si desea ignorar por completo una iteración, devuelva una matriz vacía [] .

about 4 years ago · Juan Pablo Isaza Relatório

0

Marcó el código agregado

 function find_empty_space(table) { // function goes from right to left of table finding every empty space, empty space == 0, //for loops go through 1-4 // var meanings r = row, c = column if ( table[0].indexOf(0) == -1 && table[1].indexOf(0) == -1 && table[2].indexOf(0) == -1 && table[3].indexOf(0) == -1 ) { console.log("Sudoku Solver has solved your table"); var solved_table = table; return true; // ***** added this } else { for (var r = 0; r < 5; r++) { for (var c = 0; c < 5; c++) { console.log(`row: ${r}`); //!for testing console.log(`column: ${c}`); //!for testing // if object in array is equal to 0 then it means the space is empty if (table[r][c] == 0) { return [r, c]; } } } } } // this is the main function function sudoku_solver(table) { // contains all other sub functions this is the main function //r = row, c = column // function goes from right to left of table finding every empty space, empty var values = find_empty_space(table); if (values === true) return true; // ***** added this console.log(values); var r = values[0]; var c = values[1]; console.log("in one"); for (var n = 1; n < 5; n++) { console.log(`n = ${n}`); if (check_if_number_can_go_in_position(table, n, r, c) == true) { table[r][c] = n; console.table(table); if (sudoku_solver(table) === true) // ***** changed this return true; // ***** added this } } table[r][c] = 0; } sudoku_solver(table);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda