找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 512|回复: 0

[求助] [求助]:请熟悉common lisp的朋友帮帮忙~~~~

[复制链接]
发表于 2005-10-4 02:35:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我刚刚开始学common lisp,被几个题目搞的晕头转向的,请熟悉common lisp 的朋友帮我解答一下,感激不尽~~~~
真的很着急,请懂得的朋友帮帮忙~~~~~~再次谢谢~~~~~~~

1
定义函数要求有一下输出

(r-compress '(1 1 1 1 2 2 4 3 3 3 3 a a a))
---((4 1) (2 2) 4 (4 3) (3 a))
(r-compress 'a)----a
(r-compress ())---()
(r-uncompress '((2 3) a b (4 c)))
  --(3 3 a b c c c c)

2
定义一个递归函数,要求对于输入的任意长度的数列,要输出元素的所有可能组合。

如:(all-sequences '(a b c))---
     ((a b c) (a c b) (b a c) (b c a) (c a b) (c b a))
    (all -sequences 'a)-----a

3
运用map和/或lambda函数,定义函数,要求有以下输出:
(interleave '(1 2 3) '(a b c d))---(1 a 2 b 3 c d)
(interleave 'a '(1 2 3))---(a 1 2 3)
(interleave '(1 2 3 4 5) '(a b c))--(1 a 2 b 3 c 4 5)

第三题我的代码是:

(defun interleave (l1 l2)
(cond ((atom l1) (append (list l1) l2))
      ((atom l2) (append l1 (list l2)))
      (t (append (mapcar #'first (list l1 l2)) (interleave (rest l1) (rest l2))))))

但是输入(interleave '(a b c) '(1 2 3 4))得到的结果是(A 1 B 2 C 3 NIL 4)

这样才能把这个nil去了啊???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 18:39 , Processed in 0.366402 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表