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

551
Vistas
Problema CoderByte del número de serie de Javascript

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:

  1. Debe contener tres conjuntos, cada uno con tres dígitos (del 1 al 9) separados por un punto.
  2. El primer conjunto de dígitos debe sumar un número par.
  3. El segundo conjunto de dígitos debe sumar un número impar.
  4. El último dígito de cada conjunto debe ser mayor que los dos dígitos anteriores del mismo conjunto.

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

Aquí 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.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

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

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