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

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

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 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!