Ya en la ronda 1A Google Code Jam de este año, me encontré con este problema:
https://code.google.com/codejam/contest/2418487/dashboard
El llamado Bulleyes. María tiene que pintar una serie de círculos concéntricos, dado un radio y una cantidad de pintura inicial. El problema es, dado r y t (el radio y la cantidad de pintura) ¿cuántos círculos de 1cm de “ancho” puede pintar?
Al participar, he desarrollado los primeros test con TDD, y pueden ver la solución en:
https://github.com/ajlopez/TddOnTheRocks/tree/master/Bulleyes
Siempre pueden pueden consultar la historia del desarrollo en:
https://github.com/ajlopez/TddOnTheRocks/commits/master/Bulleyes
Al principio, tenía un algoritmo que dependía de una función que daba cuánta pintura se necesitaba para pintar alrededor de un radio r. Pero luego, la reemplacé por otro algoritmo, que da directamente la cantidad de círculos que María puede pintar, dado el radio y la cantidad de pintura. Y todo siguió andando.
Como en otros ejemplos de Google Code Jam, no hice con TDD al programa de consola. Me concentré en tener el algoritmo correcto, luego de tener algunos tests en verde. En este caso, bastó con encontrar una fórmula que resuelve el caso en general.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez