Estas últimas semanas he estado resolviendo algunos retos de HackerRank, comenzando con lo básico, en teoría no necesito resolverlos porque son básicos y no representan una dificultad significativa y tengo razón, pero tengo razon por las razones equivocadas.
No se trata solo de solucionar el problema y que pase las pruebas, también importa el cómo lo solucionas. Algunos de estos sencillos ejercicios, podrían tener una complejidad oculta dependiendo de la solución que pienses.
Por ejemplo el reto de Find Digits, si te interesa tomate unos minutos en revisarlo e intenta resolverlo, estoy aseguro que no te tomara más de 10 minutos, básicamente son puntos gratis en la plataforma.
Si intentaste resolverlo y tu solución fue convertir el número en algún tipo de objeto iterable, para después iterarlo y evaluar cada uno de los dígitos, es correcto, es una solución viable e incluso optima en la mayoría de los casos.
Pero seguramente es la solución más común que te vas a encontrar, otra solución menos común o ligeramente más complicada, es la que tiene un acercamiento matemático, por ejemplo:
function findDigits(n) {
let result = 0;
const copyN = n;
while(n != 0) {
if(n%10 != 0 && (copyN%(n%10) === 0)) result++
n = parseInt(n/10);
}
return result;
}
Soluciona el mismo problema, con algunas ventajas extras como mayor portabilidad entre lenguajes y mejor rendimiento.
A esto me refería al inicio cuando dije 'tengo razón por las razones equivocadas', existen muchas manera de solucionar un problema y todas pueden funcionar, pero hay mejores soluciones y en ocasiones ni siquiera las buscamos porque no sabemos que existen.
Como desarrollador de software considero importante el incomodarme a mí mismo cuando algo funciona y creo dominarlo, debería de intentar mejorarlo, al menos por hobby.
Si llevas un par de años como desarrollador y no pudiste resolver el reto, deberías de comenzar inmediatamente con algunos más sencillos, esto es bueno para mejorar la lógica y muy común en entrevistas laborales, puede marcar una diferencia en obtener ese puesto que deseas o poder negociar tu salario.
Top comments (0)