¸®½À °­Á - ¸®½ºÆ®ÀÇ n ¹øÂ° ¿ä¼Ò¸¦ ±³Ã¼Çϱâ, Ãß°¡Çϱâ, »èÁ¦Çϱâ ÇÔ¼ö.


º» °­Á´ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)¿¡ ÀÇÇØ ¸¸µé¾î Á³À¸¸ç ¾î¶°ÇÑ À¥À̳ª
ÃâÆÇ¹°¿¡ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)ÀÇ µ¿ÀǾøÀÌ ¿Ã¸®´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù.

 

kht-nth-subst : ¸®½ºÆ®ÀÇ n ¹øÂ° ¿ä¼Ò¸¦ »õ·Î¿î ¿ä¼Ò·Î ±³Ã¼ÇÏ´Â ÇÔ¼ö
kht-nth-add : ¸®½ºÆ®ÀÇ n ¹øÂ°¿¡ »õ·Î¿î ¿ä¼Ò¸¦ Ãß°¡ÇÏ´Â ÇÔ¼ö
kht-nth-remove: ¸®½ºÆ®ÀÇ n ¹øÂ° ¿ä¼Ò¸¦ »èÁ¦ÇÏ´Â ÇÔ¼ö



(kht-nth-subst ¸®½ºÆ® n¹øÂ° »õ·Î¿î¿ä¼Ò)

(kht-nth-subst '(1 2 3 4) 2 5)
=> (1 2 5 4)

(kht-nth-subst '(1 (2) (3 5) (4 2 3)) 3 '(2))
=> (1 (2) (3 5) (2))

(kht-nth-add ¸®½ºÆ® n¹øÂ° »õ·Î¿î¿ä¼Ò)

(kht-nth-add '(1 2 3 4) 2 5)
=> (1 2 5 3 4)

(kht-nth-remove ¸®½ºÆ® n¹øÂ°)

(kht-nth-remove '(1 2 3 4) 2)
=> (1 2 4)

ÄÚµå

  
  (defun nthcdr (N L)
     (cond ((zerop N) L )
           ( T (nthcdr (- N 1) (cdr L)))  
     )
  )

  (defun firstN (N L)
     (cond ((zerop N) nil)
           ((>= n (length l)) l)
           ( T   (cons
                  (car L)
                  (firstN (1- N) (cdr L))
                 )
           )
     )
  )

  (defun kht-nth-subst (lis n at / )
    (append (append (firstn n lis) (list at)) (nthcdr (1+ n) lis))
  )

  (defun kht-nth-add (lis n at / )
    (append (append (firstn n lis) (list at)) (nthcdr n lis))
  )

  (defun kht-nth-remove (lis n / )
    (append (append (firstn n lis)) (nthcdr (1+ n) lis))
  )