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

443
Vistas
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 Respuestas
Responde la pregunta

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