
Le 13/02/08, Dupont Corentin
Merci. J'ai donc une liste de nombre au hazard. Comme je les additionnent un à un à chacun de mes couples de nombres (les positions)? xy = [(-100.0,0.0), (-15.0,5.0), (-25.0,15.0), (0.0,20.0), (25.0,15.0),(15.0,5.0),(100.0,0.0)]
Je n'ai trouvé qu'une méthode récursive horrible: main = do g <- newStdGen haz = randomRs (0.0, 20.0) $ g myhaz haz = (haz !! 1, haz !! 2) : (myhaz (drop 2 haz)) list haz= [(x+10*x1, y+10*y1) | (x,y) <- xy | (x1,y1) <- myhaz haz]
On peut faire un peu plus joli (à mon avis) :
main = do g <- newStdGen let haz = randomRs (0.0, 200.0) $ g print $ zipWith (<+>) xy (splitEach 2 haz) where splitEach n = takeWhile (not.null) . unfoldr (Just . splitAt n) (a,b) <+> [a',b'] = (a+a',b+b')
Ou un truc comme ça. splitEach est une fonction généralement utile, personnellement je l'ai mis dans une petite librairie. Néanmoins il n'y a pas non plus de recette miracle. -- Jedaï