2009-09-15 7 views
13

Dans Clojure, quel serait le meilleur moyen d'avoir une fenêtre coulissante sur un seq (fini, pas trop grand)? Devrais-je simplement utiliser drop et take et garder une trace de l'index actuel ou y a-t-il une meilleure façon de me manquer?Fenêtre coulissante sur seq

Répondre

20

Je pense que partition à l'étape 1-t-il:

user=> (partition 3 1 [3 1 4 1 5 9]) 
((3 1 4) (1 4 1) (4 1 5) (1 5 9)) 
3

Si vous voulez utiliser sur les fenêtres, il peut aussi être pratique de le faire avec la carte:

user=> (def a [3 1 4 1 5 9]) 
user=> (map (partial apply +) (partition 3 1 a)) 
(8 6 10 15) 
user=> (map + a (next a) (nnext a)) 
(8 6 10 15) 
Questions connexes