Cool thread guys; interesting results --
(defun FirstN_MP2 ( n lst )
(reverse
( (lambda ( lst n f ) (f n 1 (f n 4 lst cddddr) cdr))
(reverse lst)
(min n (length lst))
(lambda ( n i lst f )
(repeat (/ (- (length lst) n) i)
(setq lst (f lst))
)
lst
)
)
)
)
List length = 100, n = 10
(FIRSTN_LM2 N LST).....1326 / 1.34 <fastest>
(FIRSTN_ALE N LST).....1435 / 1.24
(FIRSTN_MP2 N LST).....1779 / 1.00 <slowest>
List length = 100, n = 25
(FIRSTN_LM2 N LST).....1560 / 1.22 <fastest>
(FIRSTN_MP2 N LST).....1731 / 1.10
(FIRSTN_ALE N LST).....1903 / 1.00 <slowest>
List length = 100, n = 40
(FIRSTN_MP2 N LST).....1622 / 1.44 <fastest>
(FIRSTN_LM2 N LST).....1794 / 1.30
(FIRSTN_ALE N LST).....2340 / 1.00 <slowest>
List length = 100, n = 50
(FIRSTN_LM2 N LST).....1544 / 1.72 <fastest>
(FIRSTN_MP2 N LST).....1607 / 1.65
(FIRSTN_ALE N LST).....2652 / 1.00 <slowest>
List length = 100, n = 75
(FIRSTN_LM2 N LST).....1436 / 2.40 <fastest>
(FIRSTN_MP2 N LST).....1482 / 2.33
(FIRSTN_ALE N LST).....3447 / 1.00 <slowest>
List length = 100, n = 90
(FIRSTN_LM2 N LST).....1389 / 2.77 <fastest>
(FIRSTN_MP2 N LST).....1466 / 2.63
(FIRSTN_ALE N LST).....3853 / 1.00 <slowest>
List length = 1000, n = 100
(FIRSTN_LM2 N LST).....1420 / 2.72 <fastest>
(FIRSTN_ALE N LST).....2152 / 1.80
(FIRSTN_MP2 N LST).....3869 / 1.00 <slowest>
List length = 1000, n = 250
(FIRSTN_LM2 N LST).....1358 / 1.69 <fastest>
(FIRSTN_MP2 N LST).....1857 / 1.23
(FIRSTN_ALE N LST).....2293 / 1.00 <slowest>
List length = 1000, n = 400
(FIRSTN_MP2 N LST).....1748 / 2.03 <fastest>
(FIRSTN_LM2 N LST).....2028 / 1.75
(FIRSTN_ALE N LST).....3541 / 1.00 <slowest>
List length = 1000, n = 500
(FIRSTN_LM2 N LST).....1622 / 2.75 <fastest>
(FIRSTN_MP2 N LST).....1670 / 2.67
(FIRSTN_ALE N LST).....4462 / 1.00 <slowest>
List length = 1000, n = 750
(FIRSTN_LM2 N LST).....1482 / 1.16 <fastest>
(FIRSTN_MP2 N LST).....1513 / 1.13
(FIRSTN_ALE N LST).....1716 / 1.00 <slowest>
List length = 1000, n = 900
(FIRSTN_LM2 N LST).....1357 / 1.11 <fastest>
(FIRSTN_MP2 N LST).....1419 / 1.07
(FIRSTN_ALE N LST).....1513 / 1.00 <slowest>
List length = 10000, n = 1000
(FIRSTN_LM2 N LST)......1326 / 8.60 <fastest>
(FIRSTN_MP2 N LST)......4446 / 2.57
(FIRSTN_ALE N LST).....11404 / 1.00 <slowest>
List length = 10000, n = 2500
(FIRSTN_LM2 N LST).....1529 / 3.50 <fastest>
(FIRSTN_MP2 N LST).....2152 / 2.49
(FIRSTN_ALE N LST).....5351 / 1.00 <slowest>
List length = 10000, n = 4000
(FIRSTN_MP2 N LST).....2013 / 2.41 <fastest>
(FIRSTN_LM2 N LST).....2402 / 2.02
(FIRSTN_ALE N LST).....4852 / 1.00 <slowest>
List length = 10000, n = 5000
(FIRSTN_LM2 N LST).....1918 / 2.32 <fastest>
(FIRSTN_MP2 N LST).....1997 / 2.23
(FIRSTN_ALE N LST).....4446 / 1.00 <slowest>
List length = 10000, n = 7500
(FIRSTN_LM2 N LST).....1732 / 1.84 <fastest>
(FIRSTN_MP2 N LST).....1778 / 1.79
(FIRSTN_ALE N LST).....3183 / 1.00 <slowest>
List length = 10000, n = 9000
(FIRSTN_LM2 N LST).....1622 / 1.38 <fastest>
(FIRSTN_MP2 N LST).....1654 / 1.36
(FIRSTN_ALE N LST).....2246 / 1.00 <slowest>