2 de Diciembre, 2020

Advent of Code 2020

Un calendario de Adviento (osea Advent Calendar), es un calendario de cuenta atrás desde el 1 de diciembre hasta el 24 de diciembre.

El origen de esta tradición viene de la Alemania protestante del siglo XIX, y en la actualidad se ha convertido es una forma de contar los días que faltan hasta Navidad (por ejemplo, con una caja de chocolates :D).

El tema es que también hay un Advent of Code, que se trata un juego en el que hay que resolver un puzzle de programación al día, y ya hay dos puzzles (porque estamos a 2 de diciembre, claro), y anoche hice el primero.

Es muy entretenido, pero hace falta tiempo para dedicarle cada día (aunque imagino que siempre es posible acabar los puzzles en cualquier otro momento, incluso pasada la Navidad), y los puzzles se van a complicar más adelante.

Estos ejercicios suelen ser ideales para practicar un lenguaje que no conoces muy bien, aunque no sé si lo recomiendo si estás aprendiendo y no tienes soltura, porque entonces te tienes que enfrentar a dos problemas: el puzzle y ¿cómo lo hago en este lenguaje?

Por curiosidad, esta es mi solución en Scala para la segunda parte:

// in es Seq[Int] con la entrada del problema
(for {
  a <- in
  b <- in
  c <- in
  if a != b && a != c && b != c && a + b + c == 2020
} yield a * b * c).headOption.map(println)

También se pueden ver los puzzles de años anteriores, como por ejemplo los ejercicios del 2019.

Actualización: estoy subiendo mis soluciones a este repositorio. Estoy usando Scala, con un estilo funcional. No sé hasta donde llegaré, todo depende de las ganas :D.

Anotación por Juan J. Martínez, clasificada en: programming, scala.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: