Ahok
Tain je comprends pas,
http://pastebin.com/2pZ7zWgS
J'ai amélioré mon programme mais il surcharge toujours la RAM, je suis monté à 3go d'utilisation du coup il a crashé. Mais pourtant je devrais pas en utiliser autant,
C'est cette fonction
combinationsPoly :: Int -> PolyInt -> Integer -> Integer -> [[Integer]]
combinationsPoly x poly prod sumr = uniq $ map (sort) $ combRacines
where testRac racines = product racines == prod && sum racines == sumr
combRacines = [ racine | racine<-ensRacines , testRac racine ]
ensRacines = replicateM x poly
Normalement il devrait jeter toutes les listes qui ne satisfont pas le prédicat testRac, sauf que même comme ça je surcharge la mémoire. Mais bon faut dire que même s'il n'y a qu'un seul emsemble de racines la fonction replicateM va tester tout les arrangements possibles. Du coup avec n le degré de mon polynôme j'ai n! arrangements donc avec un polynôme de degré 9 j'ai 362880 arrangements
Ca fait beaucoup je pense, il faudrait pouvoir jeter directement toutes les listes égales à une autre liste à un arrangement près mais je vois pas comment faire si quelqu'un à une idée 