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

201
Vistas
Completa el algoritmo para generar rompecabezas de Sudoku

Tengo un código a continuación, pero hay un problema con la implementación actual en la función entryToDel. No siempre producirá n coordenadas distintas para dejarlas en blanco en un rompecabezas. Siempre debe producir una matriz con n elementos que consisten en matrices de dos elementos que almacenan las coordenadas de un elemento y cada elemento de la salida debe producir coordenadas distintas, pero no estoy seguro de cómo hacerlo, ya que estoy bastante nuevo en esto

 // a function to randomly select n (row,column) entries of a 2d array function entriesToDel(n) { var array = []; for (var i = 0; i < n; i++) { var row = Math.round(3*Math.random()); var col = Math.round(3*Math.random()); array.push([row,col]); } return array; }

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una solución simple sería usar un conjunto en lugar de una matriz y agregar números aleatorios hasta que tenga suficientes entradas únicas.

En caso de que no sepa qué es un conjunto: un conjunto funciona de manera similar a una matriz, pero no permite duplicados (se ignorarán los duplicados). (Tampoco le da a los elementos una posición fija; no puede acceder a una entrada de un conjunto con set[i] )

 const size = 3 // define size of grid in variable function entriesToDel(n) { // create set of positions const positions = new Set() // create set while(positions.size < n) { // repeat until set has enough entries positions.add(Math.floor((size ** 2) * Math.random())) // add random position (duplicates will be ignored by the set) } // convert set of positions to array of coordinates const cords = [] for(const position of positions) { // iterate through positions // convert position to column and row and add to array const row = Math.floor(position / size) const column = position % size cords.push([row, column]) } return cords }

Esta solución es agradable y simple. Un problema es que, si tiene mucha mala suerte, el generador de números aleatorios seguirá generando el mismo número, lo que resultará en un tiempo de cálculo posiblemente muy largo. Si desea excluir esta posibilidad (muy improbable), sería razonable utilizar la solución más compleja proporcionada por James.

about 4 years ago · Juan Pablo Isaza Denunciar
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