novembre
2013
En fin d’année dernière, Assan, un développeur très sympathique nous proposait un petit défit qui a suscité un grand intérêt chez moi car j’ai toujours été fasciné par les problèmes simples en apparence mais recelant une complexité moins évidente à saisir immédiatement.
L’enjeu était le suivant: faire une fonction qui test si une variable est située entre deux bornes limites(range) en ayant le droit d’utiliser qu’un seul test.
Bien évidemment Olivier fut le premier à résoudre le problème avec une solution illisible par sa complexité syntaxique mais qui n’utilisait aucun test, voilà, cette description à elle seule suffit pour dire que vous venez de faire la connaissance d’Olivier.
Néanmoins, ce fut à moi que Assan serra la main et pour reprendre ses mots « Cette poignée de main c’est pour l’élégance de ta solution »
Je crois que ce qui est intéressant ici c’est que la syntaxe Haskell ainsi que l’accessibilité offerte par l’invite de ligne de commande prelud ont grandement facilité un prototypage rapide en m’épargnant d’avoir à mettre en place des tests unitaires.
Et donc trêve de bavardage, voici ma solution :
fun :: Integer -> Bool
fun s min max = (s-(max+1)) * (s-(min-1)) < 0
Merci Haskell !