Effectivement (bon j'avais redirigé vers /dev/null, mais même ainsi...) si je me contente de faire compter le nombre de sscm par ton code, alors tu descend à 130ms, contre 420ms pour ma fonction (d'un autre côté, ma fonction renvoie la liste de toutes les sscm, alors que du coup la tienne ne fait plus rien que compter, peut-être serait-il plus équitable de comparer avec une fonction en Java qui renvoie la liste de toutes les sscm ?)
[EDIT] Je descend à 180ms avec une fonction qui ne fait que compter :
--
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nsscm [] = 1 nsscm xs@(x:_) = sum . map (\(y:ys) -> nsscm $ filter (>y) ys) $ cs where cs = snd . foldl' isStart (x,[xs]) . init . tails . tail $ xs isStart p@(mini,cs) c@(y:_) | y < mini = (y,c:cs) | otherwise = p
Jedaï
Partager