Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

283
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!