Cuando quiero aprender un nuevo lenguaje desarrollo un juego de series, es decir aparece una serie con un valor faltante y el jugador debe completarlo.
Uno de los requerimientos no funcionales es que se pueda agregar una serie nueva fácilmente.
Vamos a desarrollar este juego en Clojure:
Empecemos desarrollo de la serie, la serie tiene como responsabilidad generarse y si lo hacemos de esta manera podemos utilizar la potencia del polimorfismo, para que no quede acoplado la generación de la serie con el desarrollo del juego:
(ns secuencia-clojure.core
(:gen-class))
(import '(java.util Scanner))
(def scan (Scanner. *in*))
(defn generateSecEven []
(def seed (rand-int 30))
(for [x (range seed (+ seed 4))] (* x 2))
)
(defn generateSecOdd []
(def seed (rand-int 30))
(for [x (range seed (+ seed 4))] (+ (* x 2) 1))
)
(defn generateSecFibo []
(def seed (rand-int 30))
(def seed2 (* seed 2))
(def seed3 (* seed 3))
(list seed seed seed2 seed3)
)