Inicio > Español > Hackwell in Haskell: hackathon sobre Haskell en StackBuilders

Hackwell in Haskell: hackathon sobre Haskell en StackBuilders

29 marzo, 2014
Presentando una solución a la kata snail.

Presentando una solución a la kata snail.

Hoy se ha celebrado en las oficinas de StackBuilders en Quito el que parece ser el primer Hackathon en un lenguaje funcional del Ecuador. Para la ocasión, hemos utilizado Haskell.

Haskell es un lenguaje de programación funcional aparecido en 1990, que toma su nombre de Haskell Curry, matemático estadounidense en cuyos trabajos en lógica se basan parcialmente los actuales lenguajes funcionales. Haskell es un lenguaje fuertemente tipado, que sin embargo difiere de otros lenguajes funcionales como Clojure en no forzar la inmutabilidad de las estructuras de datos.

Durante el día de hoy, se nos propuso resolver en Haskell la kata snail. La kata snail consiste en, dada una matriz cuadrada, obtener un array con sus elementos ordenados recorriendo la matriz según se indica en el diagrama:

 

Recorremos la matriz siguiendo una espiral

Recorremos la matriz siguiendo una espiral

 

Es decir, para la siguiente matriz:

array = [[1,2,3],
[4,5,6],
[7,8,9]]

el resultado de snail sobre la misma debería ser:

snail(array) #=> [1,2,3,6,9,8,7,4,5]

 

Sobre el desarrollo del Hackathon, hay que decir que ha sido muy divertido, que he aprendido muchísimo, y que estoy muy satisfecho con la solución que mi pair y yo hemos desarrollado, teniendo en cuenta que era nuestro primer código en Haskell. Ha habido cervezas, pizza y momentos divertidos🙂

Sobre la solución, hemos desarrollado un primer algoritmo que:

  • Extrae la fila superior.
  • Extrae la columna derecha sin el primer elemento (que ya está incluido en la fila superior).
  • Concatena lo anterior con el resultado de volver a llamar a la función con la submatriz inferior izquierda rotada 180 grados.

Posteriormente, hemos refinado el algoritmo a:

  • Extraemos todo el perímetro de la matriz, concatenado en el orden correcto.
  • Concatenamos lo anterior con el resultado de volver a llamar a la función con la submatriz interna (sin el perímetro).

La solución está disponible en mi cuenta en Github.

Como tareas pendientes, queda aprender cómo testear en Haskell. Ha sido toda una experiencia programar sin tests tras tanto tiempo aplicando TDD al 100%, y ha sido como conducir sin cinturón de seguridad. Además, he vuelto a confirmar el tremendo tiempo que se pierde cuando no se cuenta con tests automatizados.

 

Categorías:Español Etiquetas: , ,
A %d blogueros les gusta esto: