(setq l2 '(1 (2 b (c 1 b))(a (1 2) d)))
(defun drumuri (l3)
(cond ((atom l3) (cons l3 nil))
(t (append
(cons (car l3) nil)
(drumuri (cadr l3))
(cons (car l3) nil)
(drumuri (caddr l3))))))
(drumuri l2)
,这让我:
Break 2
[4]> DRUMURI
Break 2
[4]> (1 2 B 2 C 1 C B 1 A 1 2 1 NIL A D)
,但我需要:
((1 2 B)(1 2 C 1)(1 2 C B)(1 A 1 2)(1 A D))
好了好消息,我发现了一些答案:
(setq l2 '(1 (2 b (c 1 b))(a (1 2) d)))
(defun drumuri (l3)
(cond ((atom l3) (cons l3 nil))
(t (append (cons (car l3) nil)
(drumuri (cadr l3))))))
(drumuri l2)
和答案是:
[1]>
(1 (2 B (C 1 B)) (A (1 2) D))
[2]>
DRUMURI
[3]>
(1 2 B)
接下来是第二个答案:
(defun drumuri (l4)
(cond ((atom l4)(cons l4 nil))
(t (append (cons (car l4)nil)
(drumuri (caddr l4))))))
(drumuri l2)
和这个问题的答案是:
[1]>
(1 (2 B (C 1 B)) (A (1 2) D))
[2]>
DRUMURI
[3]>
(1 A D)
所以所有剩下的就是找到:
(1 2 C 1)(1 2 CB)(1 A 1 2)
请格式化您的代码并用空格替换选项卡 - 选择文本并按下编辑器上的“101010”按钮。 – 2010-05-14 17:34:54
编程Lisp时,缩进对于清晰度非常重要。我已经为你解决了这个问题,但请保持对未来的关注。 – 2010-05-15 05:43:09
谢谢 但你能帮我们编码 – iulia 2010-05-15 06:01:02