문제

Clojure에서, (유한, 너무 크지 않은) seq 위에 슬라이딩 창을 갖는 가장 좋은 방법은 무엇입니까? 그냥 사용해야하나요 drop 그리고 take 그리고 현재 지수를 추적하거나 내가 놓친 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

내 생각에는 분할 1 단계에서는 다음과 같습니다.

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

다른 팁

Windows에서 작동하려면지도를 사용하여 편리 할 수도 있습니다.

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)

몰랐어요 partition 이것을 할 수 있으므로 이런 식으로 구현했습니다

(defn sliding-window [seq length]
  (loop [result ()
         remaining seq]
    (let [chunk (take length remaining)]
      (if (< (count chunk) length)
        (reverse result)
        (recur (cons chunk result) (rest remaining))))))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top