Resolver problemas complejos. Fitness Mental.

Avatar

En ocasiones es necesario practicar un poco, sobre todo para desempolvarse después de un periodo vacacional o simplemente por que es divertido. En mi caso suelo resolver algunos ejercicios en https://codesignal.com/ o https://www.hackerrank.com .

De esos momentos, he aprendido un par de cosas que me gustaría compartir, ya que en nuestro día a día podemos llegar a encontrarnos con algún proceso o tarea que no es tan trivial resolver y requiere de un poco de algoritmia y creatividad de nuestra parte.

Este es un ejercicio que sirve de ejemplo: Dado un arreglo de n elementos, encontrar la suma mayor de sus k elementos consecutivos.

Ej. a = 2, 3, 5, 1, 6 y k = 2

2 + 3 = 5;

3 + 5 = 8;

5 + 1 = 6;

1 + 6 = 7;

La respuesta seria 8 ya que es la suma mayor.

Ahora para resolver este problema yo hago los siguiente:

1.- Empiezo por el caso mas sencillo. Por ejemplo un arreglo de longitud n y con k = 1. En este caso la respuesta se obtiene simplemente buscando el elemento mayor del arreglo. Imagen 1 2.- Comenzar a formular una solución general, pero aun pueda llegar a no incluir todos los casos. Para este ejercicio es ver como podemos obtener la suma de los k elementos consecutivos Imagen 2 y tener una forma de tenerlos "a la mano" . En eso nos podemos enfocar. Imagen 2

3.- Es posible no considerar algunas excepciones y que el código falle para algunos casos. Imagen 3 . Resolver aquellos casos particulares para los que nuestra solución falla.

4.- Una vez que tenemos una solución, el siguiente paso es optimizar nuestra solución para que sea lo más rápida y eficaz (memoria) posible.

Esta forma de programar me ha ayudado a ser mas organizado, y a no frustrarme cuando encuentro algún problema que de principio encuentro difícil. Claro que siempre hay que buscar ser los mas perfectos posible y que nuestros programas den la menor lata, pero de esta forma poco a poco vamos cubriendo más casos y es mejor tener un 80% de casos cubiertos que 0%.

Avatar

Escribe una respuesta