lisp リストから重複する要素を削除するコードをかきました。
素人なので、カッコはわかりやすいように改行してあります。
知っている関数だけ使ってやりました。
コード
(mach-meta '(w a c a c d))
(defun mach-meta (ls)
(setq ls0 nil)
(mach-b ls)
(defun mach-b (ls)
(unless (atom ls)
(progn
(setq flg 1)
(setq lc-index (length (cdr ls)))
(dolist (x (cdr ls) ls0)
(format t "~%")
(print lc-index)
(print flg)
(print (car ls))
(print x)
(progn
(if (equal (car ls) x)
(progn
(print "no")
(setq flg (* flg 0))
)
)
)
(if (and (= flg 1) (= lc-index 1))
(progn
(print "go")
(setq ls0 (cons (car ls) ls0))
(if (atom (cdr (cdr ls)))
(setq ls0 (append (cdr ls) ls0))
)
(print ls0)
)
)
(decf lc-index)
)
)
)
(mach-b (cdr ls))
)
)
(mach-meta '(w a c a c d))
実行結果
(D C A W)
0 件のコメント:
コメントを投稿