Bon, le probl??me 4 ??tait assez facile, d'autant plus que Groovy propose quelques m??thodes tr??s pratiques pour travailler sur les collections.

https://gist.github.com/263142Il y a juste une petite ruse math??matique pour diviser le temps de calcul par deux : la multiplication est commutative, ??a n'est donc pas n??cessaire de calculer l'int??gralit?? de ces multiplications. J'aurais pu aussi feinter en commen??ant assez haut, mais je n'en voyais pas l'int??r??t ... Surtout que ce script ne met que 2,812 s pour s'ex??cuter !
Bref, pour en revenir au groovy, il y a dans ce script quelques trucs int??ressants : * findAll) dans une collection, prend une closure comme param??tre pour retourner uniquement les ??l??ments pour lesquels la closure retourne true. * reverse) dans une String retourne la String, tout simplement. * Enfin, max) retourne le maximum sans effort.