Actualmente estoy resolviendo un problema en CoderByte. Aquí está el escenario.
Haga que la función SerialNumber(str) tome el parámetro str que se pasa y determine si es un número de serie válido con las siguientes restricciones:
Si todas las restricciones anteriores se cumplen dentro de la cadena, su programa debería devolver la cadena verdadera; de lo contrario, su programa debería devolver la cadena falsa. Por ejemplo: si str es "224.315.218", su programa debería devolver "verdadero".
Examples Input: "11.124.667" Output: false Input: "114.568.112" Output: trueAquí está mi código JS para este problema.
function SerialNumber(str) { // code goes here if(str.length < 11) { return "false"; } for (let x = 0; x < str.length; x++) { if(str[x] === '0') { return "false"; } } first = str[0] + str[1] + str[2]; second = str[4] + str[5]+ str[6]; if (first % 2 !== 0 || second % 2 === 0) { return "false"; } if (str[2] < str[1] || str[2] < str[0] || str[6] < str[5] || str[6] < str[4] || str[10] < str[8] || str[10] < str[9]) { return "false"; } else { return "true"; } } Cuando ingreso "11.124.667" , volverá a ser false (lo cual es correcto). Y cuando ingreso "114.568.112" , también volverá a ser false (lo cual no es correcto). ¿Algún consejo sobre cómo puedo obtener esto? Gracias por la respuesta.
Probé su código y el problema proviene del tercer return false para el segundo ejemplo, cuando configura el second , concatena cadenas en lugar de agregar números, por lo tanto, %2 siempre es igual a 0 ya que
console.log antes de cada return false para ver qué condición falló.
Aquí está el código fijo en el que agregué parseInt para el first y el second
function SerialNumber(str) { if (str.length < 11) { console.log("first") return "false"; } for (let x = 0; x < str.length; x++) { if (str[x] === '0') { console.log("second") return "false"; } } const first = parseInt(str[0]) + parseInt(str[1]) + parseInt(str[2]); const second = parseInt(str[4]) + parseInt(str[5]) + parseInt(str[6]); if (first % 2 !== 0 || second % 2 === 0) { console.log("third") return "false"; } if (str[2] < str[1] || str[2] < str[0] || str[6] < str[5] || str[6] < str[4] || str[10] < str[8] || str[10] < str[9]) { console.log("fourth") return "false"; } else { return "true"; } } console.log("11.124.667 : " + SerialNumber("11.124.667")); console.log("114.568.112 : " + SerialNumber("114.568.112"))