Size: a a a

2020 February 26

PG

Pïg Grëënëst in Lisp Forever
(defun has-enough-elements-p (n list)
 (while (and list (< 0 n))
   (pop list)
   (decf n))
 list)
источник

A

Aragaer in Lisp Forever
а вариант через unfold не?
источник

PG

Pïg Grëënëst in Lisp Forever
функция двойного назначения, как в борще любят
источник

PG

Pïg Grëënëst in Lisp Forever
вот только названия достойного не придумал
источник

A

Aragaer in Lisp Forever
unfold это из srfi-1, должно быть
источник

A

Aragaer in Lisp Forever
In general, (unfold p f g seed) is basically

(loop for x = seed then (g x) until (p x) collect (f x))
источник

A

Aragaer in Lisp Forever
(defun slide (my-list window)
 (loop for x from 0 to (- (length my-list) window)
    for l on my-list
    collect (subseq l 0 window)))
источник

A

Aragaer in Lisp Forever
но ваще...
источник

A

Aragaer in Lisp Forever
(defun slide (my-list window)
 (loop for l on my-list
    for p on (subseq l (- window 1))
    collect (subseq l 0 window)))
источник

A

Aragaer in Lisp Forever
такое тоже работает
источник

O

O in Lisp Forever
:repeat про это читаю сейчас
источник

A

Aragaer in Lisp Forever
но наверняка можно это сделать еще более оптимально..
источник

PG

Pïg Grëënëst in Lisp Forever
про оптимальность говорить рановато
источник

PG

Pïg Grëënëst in Lisp Forever
ни одного бенча по теме ещё не видел %)
источник

O

O in Lisp Forever
(loop :repeat (1+ (- (length l) n))
       :for lt on l
       :collect (subseq lt 0 n))
источник

O

O in Lisp Forever
вотдумаю ща проверю
источник

O

O in Lisp Forever
CL-USER> (time (peh-utils:slide-list (loop :for i :upto 10000 :collect i) 10))
Evaluation took:
 0.062 seconds of real time
 0.062782 seconds of total run time (0.062782 user, 0.000000 system)
 101.61% CPU
 194,675,152 processor cycles
 1,900,544 bytes consed
источник

A

Aragaer in Lisp Forever
ну вот вместо :repeat просто итерироваться по тому же списку, но с некоторым начальным смещением
источник

O

O in Lisp Forever
CL-USER> (time (peh-utils::slide-list-one-length (loop :for i :upto 10000 :collect i) 10))
Evaluation took:
 0.002 seconds of real time
 0.001586 seconds of total run time (0.001586 user, 0.000000 system)
 100.00% CPU
 4,932,430 processor cycles
 1,933,312 bytes consed
источник

O

O in Lisp Forever
0.002 против 0.062 реззоно даже...
источник