Je ne suis pas intéressé par la solution réelle ou d'autres méthodes de résolution du problème, il est le memoization i besoin d'aide :)Memoization pascals triangle
je besoin d'aide pour faire un problème de triangle pascals avec memoization. Je veux obtenir le numéro du milieu dans la base du triangle. (Euler projet 15)
Le premier exemple est pas memoized (bien que son nom l'indique si) « 20 20 » non résolvable
deuxième tentative est une tentative de faire quelque chose de similaire à: http://www.haskell.org/haskellwiki/Memoization
troisième est Hlints suggestion sur no2 si c'est plus lisible pour quelqu'un.
je reçois cette erreur, mais je ne suis pas sûr de son droit, même si elle rassemblerait ... (courir à partir ghci avec 2 2 comme params
no instance for (Num [a0])
arising from a use of `zmemopascals'
Possible fix: add an instance declaration for (Num [a0])
In the expression: zmemopascals 2 2
In an equation for `it': it = zmemopascals 2 2
.
Code:
--1
memopascals r c = [[pascals a b | b<-[1..c]] | a<-[1..r]] !! (r-1) !! (c-1)
where pascals 1 _ = 1
pascals _ 1 = 1
pascals x y = memopascals (x-1) y + memopascals x (y-1)
--2
--xmemopascals :: Int -> Int -> Int
xmemopascals r c = map (uncurry pascals) (zip [1..] [1..]) !! (r-1) !! (c-1)
where pascals 1 _ = 1
pascals _ 1 = 1
pascals x y = memopascals (x-1) y + memopascals x (y-1)
--3
zmemopascals r c = zipWith pascals [1 ..] [1 ..] !! (r-1) !! (c-1)
where pascals 1 _ = 1
pascals _ 1 = 1
pascals x y = memopascals (x-1) y + memopascals x (y-1)
Grande réponse, facile à comprendre ainsi que me donner la terminologie pour enquêter plus loin! Pouces vers le haut! –
de rien, et merci! btw calcule-t-il vraiment le triangle du Pascal? Je pense que ça doit être 'pascals x y = memopascals (x-1) y + memopascals (x-1) (y-1)' là. –
Oui vous avez probablement raison, je n'ai pas accès au code pour le moment, mais comme la valeur dépend des deux ci-dessus, cela devrait être le cas. –