Do you want to switch to Platzi in English?
4

Algoritmos y HackerRank

Lucas
lantog
5159

Entre las cosas que une a todas las áreas de la tecnología esta indudablemente la necesidad de resolver problemas, una serie de pasos para resolver el problema que se nos plantea.
Ricardo muestra su forma que plantear los problemas, que me parece genial, ya que plantear bien un problema antes de empezar a teclear como un demente puede ahorrarte 60% del tiempo que tardas en hacer el programa (irónicamente mis compañeros siempre dicen que plantear un problema en papel o un diagrama de flujo es perder el tiempo), por lo que quiero compartirles mi forma de entrenar para mejorar en el desarrollo de algoritmos.

El sitio web se llama HackerRank (no es para hackear y tampoco es requisito tener una capucha puesta cada vez que se entra al sitio) , el link es -> https://www.hackerrank.com/ , registrarse es algo trivial, como en cualquier sitio eliges tu nick, correo y password, nada más.

Es un sitio web donde tienen muchisimos problemas, para casi todos los lenguajes, y con distintos niveles para que cada quien pueda hacerlo en la dificultad que le siente comodo, y de muchos temas (sorting, arrays, grafos, recursión) pero planteados de una forma amigable que se puede entender facilmente.

La forma de solucionar los problemas es también simple, se te plantea el problema con sus detalles, te muestran un ejemplo de cual sería el output que debería de tener tu programa con un cierto input y luego de ahí tienes un espacio para poner tú código, donde puedes elegir el lenguaje con el que quieres resolver el problema. Cuando terminas de escribir tu programa eliges la opción de Run Code, donde pruebas los resultados de tu programa con cierto input (casi siempre son 2 o 3 pruebas, para que compruebes el output de tu programa y veas si tienes algo mal hecho), si todo esta bien entonces puedes enviar tu programa para que ahora se testea con muchas más pruebas. Si pasa todas las pruebas entonces pasas el ejercicio y te dan puntos (hackos) que se suman a tu record (que es identico a los puntos de platzi) y mientras más puntos tienes más subes en el ranking global que tiene HackerRank (de ahí el nombre je).

La razón principal por la que recomiendo este sitio no es tanto por que tienen miles de problemas para hacer, muchos sitios tienen eso, la principal razón es por que cuando terminas de completar un problema puedes ir a una pestaña en la misma página donde esta planteado el problema y puedes acceder a ‘Leaderboard’, esto si es lo chevere. En esta sección estan TODOS los programas de todas las personas que hayan resuelto el ejercicio previamente, y puedes filtrarlo por lenguajes y país.

Y por qué digo que esto es lo que me hace hacer este tutorial? Como dijó el señor John Freddier Vega (creo) se aprende a programar escribiendo código y LEYENDO código, y si bien recuerdo dijo que 20% era escribir y 80% leer código.

Después de que resuelves tu problema en HackerRank puedes ir al Leaderboard y ver como otros cientos y cientos de programadores resolvieron el mismo problema, ver que hicieron mejor que tú y por que lo hicieron, y claramente aprender de ellos, y hasta ver como lo resolvieron otras personas en otros lenguajes. Supongamos que estas aprendiendo Python en Platzi y resolviste tu programa en Java por que no sabias como plantearlo en Python, cuando terminas de realizar tu problema con Java, puedes ir a ver como otros resolvieron el problema en Python

La cantidad de trucos o habilidades que puedes adquirir leyendo el código de otros es algo increible, les recomiendo realizar de 2 a 3 ejercicios en fáciles cuando puedan y empezar con los del nivel medio cuando se sientan preparados.

Y mi última recomendación es que los hagan en C, o C++, o JAVA. Pero, por qué? Pueden hacer el experimentos ustedes mismos cuando resuelvan problemas en HackerRank, vean como se plantea el programa en C o Java y vean como se plantea en Python, la diferencia es graciosa, Python tiene TANTAS funciones hechas que para resolver estos problemas se necesitan menos de 10 LÍNEAS DE CÓDIGO, y a veces los Pythonistas se las arreglan para que quede en una sola línea (contra lo cual no tengo nada, me parece perfecto ya que es un lenguaje que tiene mucha utilidad cuando se quieren hacer grandes cosas en poco tiempo), pero el objetivo de estos ejercicios (al menos desde mi perspectiva) es realizar algoritmos optimos y bien planteados, no saber que función de libreria puedo usar para resolver el problema en una sola línea. Francamente no creo que se aprenda tanto resolviendo un problema de esa forma, por eso recomiendo que realizen los problemas en algún lenguaje de más “bajo” nivel.

Espero que les ayude para mejorar skills en resolver problemas, saludos

Escribe tu comentario
+ 2
Ordenar por:
2
360Puntos

Hey amigo muchas gracias por tu aporte, lo voy a tener muy en cuenta.

1
4805Puntos

Muchas gracias por la recomendación! Escuchando algunos podcast de la tecnologería, estaba buscando páginas en las cuáles prácticar en como resolver problemas, y casualmente vi tu aporte! Genial!

0
5159Puntos
7 meses

De nada, espero que te sea de ayuda!

1
1408Puntos

Muchas gracias por tu aporte. Personalmente he utilizado uva online y otra web llamada codeforces pero tal como dices (y como ha dicho Freddier) se aprende a programar leyendo código y las dos páginas que mencioné no tienen esa funcionalidad (Si la tienen, aún no la he descubierto). La verdad, me hubiese gustado ver como otros resolvieron los problemas que yo resolví. Estaré probando esta página que dices, realmente espero mejorar mi habilidad para resolver problemas

1
10726Puntos

Buena recomendacion, le he estado probando y me gusto.