Python y Google Code Jam

Imagen de https://i.ytimg.com/vi/Gaj54O90Yak/maxresdefault.jpg

Este es el segundo artículo que hablo sobre Python. Si quieres leer el primer artículo está aquí.

Terminé el curso de Python en CodeAcademy:

https://www.codecademy.com/courses/introduction-to-python-6WeG3

Lo recomiendo. Es muy práctico, fácil de seguir y con buen contenido. El único pero que le pongo es que dentro de poco lo van a cerrar. No recuerdo cuando pero leí que en unos meses van a quitar el curso. Una pena.

Durante el curso estuve pensando lo bueno que sería python para el Google Code Jam porque su forma de manejar cadenas, caracteres, números binarios, listas y arrays es muy intuitiva. Estos elementos se utilizan mucho en el code jam.

Google Code Jam es un competición de programación. Todos los ejercicios se basan en generar cierta lógica que cree un fichero de salida a partir de un fichero de entrada.
Llevo años compitiendo utilizando Java y creo que ya era hora de empezar a usar otro lenguaje.

La competición comienza el 7 de Marzo pero como tengo poca experiencia con Python decidí el hacer algunos ejercicios de prácticas.
En CodeAcademy no necesitaba tener configurado nada en mi ordenador porque el código se ejecutaba en el propio navegador. Pero para la competición me iba a ser útil el tener un entorno de trabajo de Python.
Así que me he configurado un entorno que no es el óptimo pero que es mas que suficiente para lo que quiero. Que es el poder crear y ejecutar pequeños programas de python en mi ordenador.
Tengo instalado python 2.7 y Atom en mi portátil. Dentro de Atom tengo cuatro plugins: atom-python-run, linter, linter-pylama y python-tools. El primer plugin es para poder arrancar ficheros de python en Atom, los de linter para el formateo de código (estilo lint en Javascript) y el último para todo lo demás relativo al lenguaje.

Después me puse a resolver problemas de años pasados de la competición y está siendo muy divertido. He terminado cuatro y estoy con el quinto.
Por si a alguien está interesado a continuación aparece una lista de los problemas y mis soluciones:

Ahora estoy con Revenge of the Pancakes que se me está atascando porque aunque tengo una solución esta no coincide con el esperado.

Python: primeras impresiones

Imagen de https://frinkiac.com

Uno de mis objetivos para el 2017 es el desarrollar un pet project y para ello primero hay que elegir el lenguaje de programación porque decidí no utilizar Java ya que quiero aprender más lenguajes. Los lenguajes que quiero utilizar son Python o Ruby.
Llevo varias semanas estudiando python y escribiendo código con la ayuda de code academy y la primera sensación que tengo es que es un lenguaje que rezuma simplicidad.
Simplicidad en el sentido que con pocas líneas de código se pueden conseguir muchas cosas. Por ejemplo, el leer un fichero de texto sería:

 

En 3 líneas de código somos capaces de leer un fichero de texto y mostrar el contenido en pantalla.
La simplicidad es una de las cualidades que más busco cuando estoy desarrollando software porque para complicar el código es fácil y siempre hay tiempo pero simplificar un código no es fácil y necesitas mucha habilidad para hacerlo.

En resumen, mis primeras impresiones con Python son muy buenas pero tengo un largo y divertido camino por recorrer.

Ideas preconcebidas

Imagen de http://lgam.wdfiles.com
Imagen de http://lgam.wdfiles.com

Nunca me han gustado las naranjas, ni las mandarinas. Las veces que de niño intenté comer un gajo no era capaz de tragarlo porque me daba asco las pieles y la textura que tenía. Era incapaz de comer una aunque el zumo de naranja me encantaba.

Hace un par de semanas intenté comerme una mandarina y para mi sorpresa me encantó y fui capaz de tomarme la mandarina entera. La textura de la piel ya no me desagradaba y el sabor de cada gajo era como una explosión de sabores.

Entonces en ese mismo momento, me vino una revelación. Me había tirado muchos años sin tomar naranjas porque asumía que no me iban a gustar ya que en el pasado no me gustaron. Quizas no solo no he hecho esto con las cosas que me gustan sino con las cosas que puedo y no puedo hacer. Con las capacidades o habilidades que tengo.

Entonces me vinieron a la cabeza muchas preguntas: ¿Cuántas cosas he dado por supuesto porque en el pasado no he sido capaz de hacerlas? ¿Qué cosas no he hecho porque asumía que no podía hacerlas sin ni siquiera intentarlas? ¿Qué hubiera pasado si lo hubiera intentado y hubiera sido capaz de hacerlas?

Todos vamos creciendo tanto a nivel físico como mental por lo que las cosas que no pudimos realizar con éxito en el pasado puede que ahora seamos capaces.

Esto me recuerda un cuento que leí sobre un elefante. Un elefante de un circo que está atado por una cadena de metal, y que está sujeta a la tierra por una estaca enterrada a pocos centímetros. Un niño que estaba con su padre en el circo ve el animal y le pregunta a su padre como es posible que no salga corriendo. Porque con la fuerza que tiene el elefante le resultaría muy fácil sacar la estaca de la tierra y ser libre. Su padre le contesta que desde que era un bebé el elefante ha estado atado a la cadena y que intentó escaparse muchas veces pero no tenía suficientes fuerzas como para hacerlo. Y que aunque han pasado los años y el elefante se podría zafar fácilmente de la cadena no lo hace porque recuerda lo que le pasó cuando era un bebé y asume que no podrá ahora.

El elefante no intenta escapar porque se ha rendido y piensa que el es el mismo elefante que hace años no pudo escapar.