miércoles, 8 de febrero de 2012

FIZZ-BUZZ GROOVY

Hola practicando un poco, quise hacer un fizz-buzz usando mi lenguaje hasta ahora favorito Groovy, este ejercicio sirve para ejemplificar el uso de Closures, Operador Elvis y Mapas.

El objetivo del Fizz-Buzz es que el script escriba una lista del 1 al 100, pero cuando el numero es multiplo de 3 imprima "Fizz" y si el numero es multiplo de 5 imprima "Buzz", y si es multiplo de los dos imprima "Fizz Buzz".

Lo que me gusta de este script es que es modificable, en donde esta:
def múltiplos = [Fizz:3,Buzz:5]
podemos agregar mas múltiplos por ejemplo si queremos que los múltiplos de 7 escriba "Wuzz" solo tenemos que agregar:
def multiplos = [Fizz:3,Buzz:5,Wuzz:7]

Esto gracias al poder de las closures y de mapas.


def validacion = { numero ->
resultado = ""
def multiplos = [Fizz:3,Buzz:5]
multiplos.each{ multiplo ->
if(numero%multiplo.value == 0){
resultado += multiplo.key
}
}
println resultado ? "$resultado" : "$numero"
}
def iterador = { n, closure ->
for(int i=1; i<=n;i++){
closure(i)
}
}
iterador(100,validacion)

No hay comentarios:

Publicar un comentario