DartEn las últimas semanas he estado trabajando en escribir una solución en Dart para cada uno de los retos propuestos en http://www.codingame.com. Una web que organiza competiciones de programación cada mes, en las que se plantea una serie de problemas y se da un tiempo para resolverlos en el lenguaje que se quiera entre los disponibles (unos 16 a día de hoy).

La web está bien diseñada, y los problemas se resuelven a través de la propia interface de la misma. Aunque lo que más llama la atención creo que son los problemas en sí, bastante imaginativos algunos y utilizando personajes de la cultura popular en muchos casos: Terminator, Indiana Jones, Thor, Doctor Who, Bender, …

Una vez terminada cada competición se hacen públicos los problemas planteados, todas las soluciones entregadas, y el resultado de las pruebas ejecutadas para comprobar la corrección de las mismas. Adicionalmente cada problema se añade a una página en la que puede intentar solucionarlo cada cual por su cuenta, sin límite de tiempo, y sólo por pura satisfacción.

Los problemas están divididos en niveles de dificultad, siendo 1 el correspondiente a los problemas más sencillos y 4 a los más difíciles. Por ahora sólo he resuelto los de de nivel 1 y 2, y uno de nivel 3 que fue con el que realmente empecé a plantearme resolver todos los demás. Para que las soluciones que he ido escribiendo no se pierdan en el fondo de mi disco duro he creado el proyecto dart-challenges donde estoy subiendo todo el código generado. Aunque ahora que es público creo que debería intentar añadirle más comentarios para que resulte realmente útil para los demás.

Mi idea es intentar resolver ahora todos los problemas de nivel 3, aunque ya he tenido alguna que otra dificultad con los de nivel 2, así que no prometo nada. Para que me resulte de verdad un reto no estoy mirando las soluciones. Bueno, al menos no hasta que escribo mi propia solución, entonces si he mirado alguna que otra para comparar, e incluso escribir una nueva solución si he visto alguna más simple que la mía o que me ha parecido los suficientemente interesante como para portarla a Dart.

La verdad es que me estoy entreteniendo bastante con estos pequeños retos de programación, en vez de estar trabajando en una librería o aplicación más grande.