انزلاق نافذة على يليها
سؤال
في كلوجر، ماذا سيكون اجمل طريقة لجعل نافذة انزلاق أكثر من (محدود، وليس كبير جدا) يليها؟ يجب أن تستخدم فقط drop
وtake
وتتبع المؤشر الحالي أو هل هناك طريقة أجمل أنا في عداد المفقودين؟
نصائح أخرى
إذا كنت تريد أن تعمل على النوافذ، كما يمكن أن تكون مريحة للقيام بذلك مع خريطة:
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))))))
لا تنتمي إلى StackOverflow