這裏是LISP的初學者。我正準備參加即將到來的LISP考試,我遇到了一個我無法解決的問題,所以我希望有經驗的人能幫助我。刪除列表中包含列表的元素
無論如何,這裏是我的問題: 給你一個可能包含列表作爲元素的列表。你的任務是刪除給定位置的原子元素。
該列表和位置作爲輸入參數給出。例如:Position = 5,List =(1(2 3)((4))(5(6))),應該返回(1(2 3)((4))((6))) 。
這是我到目前爲止...(PS下面的代碼工作得益於imMaw的幫助,你可以檢查編輯看到我以前的錯誤)。
(defun number_of_atoms(List)
(atoms List 0)
)
(defun atoms(List Number)
(cond
((null List) Number)
((atom (car List)) (atoms (cdr List) (+ 1 Number)))
((+ (atoms (car List) Number) (atoms (cdr List) 0)))
)
)
(defun deleteElement(Pos List)
(deleteElementAcc Pos 1 List)
)
(defun deleteElementAcc(Pos CurrPos List)
(cond
((null List) nil)
((and (atom (car List)) (not(eql CurrPos Pos))) (cons (car List) (deleteElementAcc Pos (+ CurrPos 1) (cdr List))))
((and (atom (car List)) (eql CurrPos Pos)) (deleteElementAcc Pos (+ CurrPos 1) (cdr List)))
((cons (deleteElementAcc Pos CurrPos (car List))
(deleteElementAcc Pos (+ CurrPos (number_of_atoms(car List))) (cdr List))))
)
)
還好,問題是什麼? –
@RainerJoswig我想知道如何解決我發佈的問題。 – ssBarBee
當然,但是你的代碼在做什麼或者不在做什麼? –