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

440
Views
JavaScript: ¿Posiblemente asíncrono vs síncrono para un problema de bucle? ¿O algún otro error?

Realización de una tarea de JavaScript: necesito crear un juego en el que el usuario intente adivinar correctamente 4 números aleatorios del 1 al 6. Ex. 1 3 2 4 o 1 6 5 3 o etc. La computadora debe analizarlo y decirle al jugador (a) cuántos de los dígitos adivinados eran correctos, pero en el lugar equivocado, y (b) cuántos de los dígitos adivinados los dígitos eran correctos y estaban en el lugar correcto.

Ejemplo a continuación ( negrita = entradas del usuario ):

Bienvenido a Mastermind

Ingrese sus cuatro conjeturas numéricas (separadas por espacios): 2 4 3 1

Tiene 2 números correctos y 1 ubicación correcta.

Ingrese sus cuatro conjeturas numéricas (separadas por espacios): 4 5 3 2

¡Correcto!

¡Eres una mente maestra!

Sin embargo, en mi código, donde cuento la cantidad de números correctos en posiciones incorrectas y posiciones correctas, la consola genera números incorrectos. Hago copias de correctAnswerList y userGuessList. Entonces, si la suposición del usuario coincide con la respuesta correcta, cambio los números en estas copias (fuera del rango 1-6) para que no se vuelvan a contar. Traté de buscar en Google cuál podría ser mi problema ya que soy nuevo en JavaScript. Lea algunas cosas sobre asíncrono para bucles, pero realmente no lo entiendo. El código está abajo, ¡gracias de antemano!

 function checkingCorrect(userGuessList, correctAnswerList){ var correctLocation = 0; var correctNumber = 0; var copyUserGuessList = userGuessList; var copyCorrectAnswerList = correctAnswerList for(var i = 0; i < 4; i++){ if(userGuessList[i] == correctAnswerList[i]){ correctNumber++ } for(var x = 0; x < 4; x++){ if(copyUserGuessList[i] == copyCorrectAnswerList[x]){ copyUserGuessList[i] = -1; copyCorrectAnswerList[x] = 0; } } if(copyUserGuessList[i] == -1){ correctNumber++; } } correctNumber = correctNumber - correctLocation; return([correctNumber, correctLocation]); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

  1. Para crear copias de arreglos, no puede simplemente reasignar su referencia ( var copyUserGuessList = userGuessList; ) y, en su lugar, debe crear nuevos arreglos que se pueden hacer fácilmente usando la sintaxis extendida entre paréntesis de arreglos ( var copyUserGuessList = [...userGuessList]; ).

  2. El incremento de correctNumber en if(userGuessList[i] == correctAnswerList[i]){ correctNumber++ } debe reemplazarse con el incremento de correctLocation y dar como resultado if(userGuessList[i] == correctAnswerList[i]){ correctLocation++ } .

Su código resultante debería tener el siguiente aspecto:

 function checkingCorrect(userGuessList, correctAnswerList){ var correctLocation = 0; var correctNumber = 0; var copyUserGuessList = [...userGuessList]; var copyCorrectAnswerList = [...correctAnswerList]; for(var i = 0; i < 4; i++){ if(userGuessList[i] == correctAnswerList[i]){ correctLocation++ } for(var x = 0; x < 4; x++){ if(copyUserGuessList[i] == copyCorrectAnswerList[x]){ copyUserGuessList[i] = -1; copyCorrectAnswerList[x] = 0; } } if(copyUserGuessList[i] == -1){ correctNumber++; } } correctNumber = correctNumber - correctLocation; return([correctNumber, correctLocation]); }
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!