El código es simple, soy muy nuevo en la programación. Pones los puntos que necesitas y el resultado del juego y la salida son los minutos de juego necesarios para los puntos.
Funciona, mi pregunta es ¿cómo debo convertir la salida para que esté en formato HH: MM? Probé los ciclos if/else, pero es mucho trabajo, sin mencionar que es muy primitivo y codificado. ¿Son los ciclos la respuesta? ¿Debo empezar desde el principio por completo?
¡Gracias de antemano!
function passPoints(input) { let gameResult = String(input[0]); let pointsNeeded = Number(input[1]); let pointsPerMinute = 0; if (gameResult == 'w') { pointsPerMinute = 6; } else if (gameResult == 'l') { pointsPerMinute = 4; } let minutesOfGameplayNeeded = pointsNeeded / pointsPerMinute; console.log(minutesOfGameplayNeeded) }Así es como lo abordaría. Usando módulo y dividiendo por 60 para obtener h:m
// as a helper function const getTimeReadout = m => { let a = [Math.floor(m / 60), Math.floor(m % 60)] return a.map(t => ('0' + t).slice(-2)).join(':') }Aquí está integrado en su código:
function passPoints(input) { let gameResult = String(input[0]); let pointsNeeded = Number(input[1]); let pointsPerMinute = 0; if (gameResult == 'w') { pointsPerMinute = 6; } else if (gameResult == 'l') { pointsPerMinute = 4; } let m = pointsNeeded / pointsPerMinute let minutesOfGameplayNeeded = [Math.floor(m / 60), Math.floor(m % 60)]; // now it's in an array so we can iterate it below (adding the zero if needed) minutesOfGameplayNeeded = minutesOfGameplayNeeded.map(t => ('0' + t).slice(-2)).join(':') console.log(minutesOfGameplayNeeded) } passPoints(['w', 427]);Lo mismo, pero optimicé un poco tu código:
function passPoints(input) { [gameResult, pointsNeeded] = input let pointsPerMinute = gameResult == 'w' ? 6 : gameResult == 'l' ? 4 : 0; let m = pointsNeeded / +pointsPerMinute; return [Math.floor(m / 60), Math.floor(m % 60)].map(t => ('0' + t).slice(-2)).join(':') } console.log(passPoints(['w', 427]));