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
13
A
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)