Author Topic: [challenge] A26 : Add the N'th element into a list at position  (Read 1721 times)

0 Members and 1 Guest are viewing this topic.

Marc'Antonio Alessi

  • Swamp Rat
  • Posts: 1314
  • Marco
Re: [challenge] A26 : Add the N'th element into a list at position
« Reply #15 on: February 24, 2022, 01:17:12 PM »
Code: [Select]
(defun AddNth_ALE1 (x n L / g i r)
  (cond
    ( (>= n (setq g (length L))) (append L (list x)) )
    ( (/= 0 n nil L)
      (setq r (reverse L)    i (nth n L)     g (- g n 1))
      (while (/= n (length (setq r (cdr (member i r))))))
      (while (/= g (length (setq L (cdr (member i L))))))
      (append (reverse r) (cons x (cons i L)))   ; ex (append (reverse r) (list x) (cons i L))
    )
    ( (cons x L) )
  )
)

Marc'Antonio Alessi

  • Swamp Rat
  • Posts: 1314
  • Marco
Re: [challenge] A26 : Add the N'th element into a list at position
« Reply #16 on: February 25, 2022, 04:24:53 AM »
Code: [Select]
(progn (setq aList (atoms-family 1)) (print " length ") (princ (length aList)) (princ "\n") (princ)) => " length " 4122
(setq NthP 4100)
--- Benchmark utility: In memory of Michael Puckett ---
    (ADDNTH_ALE1 "New" NTHP ALIST).......1375 / 3.2 <fastest>
    (ADD-NTH_RIB3 ALIST "New" NTHP)......3203 / 1.38
    (ADD-NTH_RIB2 ALIST "New" NTHP)......3391 / 1.3
    (ADD-NTH-DEXUS ALIST "New" NTHP).....3407 / 1.29
    (ADDNTH_LEE2 "New" NTHP ALIST).......3484 / 1.26
    (ADD-NTH_BRU4 ALIST "New" NTHP)......3485 / 1.26
    (ADD-NTH_BRU3 ALIST "New" NTHP)......3609 / 1.22
    (ADD-NTH_BRU2 ALIST "New" NTHP)......3640 / 1.21
    (ADD-NTH_RIB1 ALIST "New" NTHP)......3828 / 1.15
    (ADD-NTH_BRU1 ALIST "New" NTHP)......3906 / 1.13
    (ADD-NTH_WEL1 ALIST "New" NTHP)......3937 / 1.12
    (ADD-NTH-SE7EN ALIST "New" NTHP).....3969 / 1.11
    (ADDNTH_LEE1 "New" NTHP ALIST).......4406 / 1 <slowest>
Code: [Select]
(setq NthP 5 aList '(a b c d e f g h i l m n o p q r s t u v z))
--- Benchmark utility: In memory of Michael Puckett ---
    (ADD-NTH_BRU1 ALIST "New" NTHP)......1797 / 2.99 <fastest>
    (ADDNTH_LEE1 "New" NTHP ALIST).......1828 / 2.94
    (ADD-NTH_BRU2 ALIST "New" NTHP)......1828 / 2.94
    (ADD-NTH_BRU3 ALIST "New" NTHP)......1828 / 2.94
    (ADDNTH_ALE1 "New" NTHP ALIST).......1844 / 2.91
    (ADD-NTH-DEXUS ALIST "New" NTHP).....1890 / 2.84
    (ADD-NTH_RIB2 ALIST "New" NTHP)......1907 / 2.82
    (ADD-NTH_WEL1 ALIST "New" NTHP)......1922 / 2.8
    (ADD-NTH_RIB1 ALIST "New" NTHP)......1969 / 2.73
    (ADD-NTH-SE7EN ALIST "New" NTHP).....1984 / 2.71
    (ADD-NTH_BRU4 ALIST "New" NTHP)......2047 / 2.63
    (ADD-NTH_RIB3 ALIST "New" NTHP)......2078 / 2.59
    (ADDNTH_LEE2 "New" NTHP ALIST).......5375 / 1 <slowest>

domenicomaria

  • Bull Frog
  • Posts: 390
Re: [challenge] A26 : Add the N'th element into a list at position
« Reply #17 on: March 05, 2022, 02:12:42 AM »
Marc'Antonio
are
ADDNTH_ALE1 and AddNth_A
the same thing ?


Marc'Antonio Alessi

  • Swamp Rat
  • Posts: 1314
  • Marco
Re: [challenge] A26 : Add the N'th element into a list at position
« Reply #19 on: March 06, 2022, 08:53:33 AM »
Code: [Select]
(defun AddNth_ALE2 (x n L / Fx g)
  (defun Fx (n L)
    (repeat (/       n              1000) (setq L (Cd1000r L)))
    (repeat (/ (setq n (rem n 1000)) 100) (setq L (Cd100r  L)))
    (repeat (/ (setq n (rem n  100))  12) (setq L (Cd12r   L)))
    (repeat (rem n 12)                    (setq L (cdr     L)))
  )
  (cond
    ( (>= n (setq g (length L))) (append L (list x)) )
    ( (/= 0 n nil L)
      (append (reverse (Fx (- g n) (reverse L))) (cons x (Fx n L)))
    )
    ( (cons x L) )
  )
)
(defun Cd12r (L)
  (cddddr(cddddr(cddddr L)))
)
(defun Cd100r (L)
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr L)))))))))))))))))))))))))
)
(defun Cd1000r (L)
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr l))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  ))))))))))))))))))))))))))))))))))))))))))
)

Marc'Antonio Alessi

  • Swamp Rat
  • Posts: 1314
  • Marco
Re: [challenge] A26 : Add the N'th element into a list at position
« Reply #20 on: March 06, 2022, 08:54:11 AM »
Code: [Select]
aList length = 4119   NthP = 4100
--- Benchmark utility: In memory of Michael Puckett ---
Elapsed milliseconds / relative speed for 4096 iteration(s):
    (ADDNTH_ALE2 "New" NTHP ALIST).......1656 / 4.46 <fastest>
    (ADDNTH_ALE1 "New" NTHP ALIST).......2969 / 2.49
    (ADD-NTH_RIB3 ALIST "New" NTHP)......6781 / 1.09
    (ADD-NTH_RIB2 ALIST "New" NTHP)......7078 / 1.04
    (ADD-NTH-DEXUS ALIST "New" NTHP).....7125 / 1.04
    (ADDNTH_LEE2 "New" NTHP ALIST).......7141 / 1.03
    (ADD-NTH_BRU4 ALIST "New" NTHP)......7390 / 1 <slowest>