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

371
Views
¿Cómo obtener el carácter del medio de una cadena con la respuesta correcta?

Después de algunos intentos, solo una de estas funciones me dio el resultado correcto en CodeWars. ¿Alguien me puede explicar el motivo por favor?

 { //1. solution => wrong var middle = Math.round(s.length / 2); s.length % 2 == 0 ? console.log(s[middle-1] + s[middle]) : console.log(s[middle-1]); //2. solution => correct return (s.length%2 == 0 ? s.substr((s.length/2-1),2) : s.substr((s.length/2),1)); }

y el resultado de la solución 1 es: ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La primera solución maneja incorrectamente las cadenas con una longitud impar; está devolviendo el carácter antes del medio s[middle-1] en lugar del carácter en el medio s[middle] .

La segunda solución lo soluciona colocando el carácter en la posición (s.length/2) , que corresponde al valor de medio en la primera solución.

Actualización con problema adicional de @evolutionxbox:

Como señaló @evolutionxbox, si su solución original usaba console.log en lugar de regresar para generar los resultados, eso también es un problema. Supuse que agregaste eso para ver los resultados uno al lado del otro.

about 4 years ago · Juan Pablo Isaza Report

0

Los mensajes de las pruebas fallidas le indican que el valor devuelto (el valor recibido por el código de prueba) siempre fue undefined , ya que indican que se expected undefined to equal 'es' .

El problema con su primera solución es que imprime los resultados en la consola (llamando a console.log ) en lugar de devolver el resultado con una declaración de return .

Si se deshace de las llamadas de console.log y agrega una declaración de return , entonces la primera solución es casi idéntica a la segunda solución y pasará la mayoría de las pruebas.

Sin embargo, todavía hay una ligera diferencia, la primera solución devuelve NaN si la entrada es una cadena vacía, mientras que la segunda solución devuelve una cadena vacía. Entonces, dependiendo del conjunto de pruebas, es posible que la primera solución aún no pase todas las pruebas.

Ejecute el siguiente código para comparar los resultados.

 solution1 = (s) => { var middle = Math.round(s.length / 2); return s.length % 2 == 0 ? s[middle-1]+s[middle] : s[middle-1]; }; solution2 = (s) => { return (s.length%2 == 0 ? s.substr((s.length/2-1),2) : s.substr((s.length/2),1)); }; ["", "x", "oz", "eye", "test", "--z--", "---uv---"].forEach(it => console.log("solution1: '%s' solution2: '%s' for input '%s'", solution1(it), solution2(it), it) );

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!