找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: Highflybird

[研讨] 勿在浮沙筑高台--由LISP公理推导函数的几个练习

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-5-21 21:05:15 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-5-21 21:11 编辑
牢固 发表于 2013-5-21 18:31
第二个条件的写法多余,直接 y就ok了!看楼上我的回复!

G版就是高!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2013-6-1 10:53:47 | 显示全部楼层
  1. (defun Pair (x y)
  2.   (mapcar 'cons x y)
  3. ) ;_ 结束defun

  4. (defun assoc# (x list_)
  5.   (if (equal x (caar list_))
  6.     (car list_)
  7.     (assoc# x (cdr list_))
  8.   ) ;_ 结束if
  9. ) ;_ 结束defun

  10. (defun Append# (x list_)
  11.   (if x
  12.     (cons (car x) (Append# (cdr x) list_))
  13.     list_
  14.   ) ;_ 结束if
  15. ) ;_ 结束defun

点评

楼主没有看清题目要求,需要用基本函数.不能用mapcar  发表于 2013-6-1 12:04

评分

参与人数 1D豆 +5 收起 理由
xshrimp + 5

查看全部评分

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

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2013-6-21 14:02:17 | 显示全部楼层
  1. (defun pair (x y)
  2.   (if (and (cdr x) (cdr y))
  3.     (cons (cons (car x) (car y))
  4.           (pair (cdr x) (cdr y))
  5.     )
  6.     (list (cons (car x) (car y)))
  7.   )
  8. )

点评

if list都违规了  发表于 2013-6-21 17:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-21 17:33:56 | 显示全部楼层
我也来一个pair
  1. (defun Pair (x y)
  2.   (cond        ((cond (x
  3.                 (cond (y t)
  4.                       (t nil)
  5.                 )
  6.                )
  7.                (t nil)
  8.          )
  9.          (cons (cons (car x) (cons (car y) nil))
  10.                (Pair (cdr x) (cdr y))
  11.          )
  12.         )
  13.         (t nil)
  14.   )
  15. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-21 17:54:19 | 显示全部楼层
迷惑了,请问H版数学函数是怎么推导出来的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-27 21:06:22 | 显示全部楼层
本帖最后由 wowan1314 于 2013-7-27 21:48 编辑

递归又忘了怎么用了!表反了的用我写的REVERSE#函数处理下。 但是大写就没办法了。。。
  1. ;(subst# 'm 'b '(a b (a b c) d D))
  2. ;最多套三层....
  3. (defun subst# (a b c / a b c d e)
  4.     (defun subst3# (a b c / d )
  5.         (cond
  6.             ((setq d (car c))
  7.                 (cond
  8.                     ((atom d)
  9.                         (cond
  10.                             ((eq d b)
  11.                                 (setq g (cons a g))
  12.                                 (subst3# a b (cdr c))
  13.                             )
  14.                             (t (setq g(cons d g))(subst3# a b (cdr c))
  15.                             )
  16.                         )
  17.                     )
  18.                 )
  19.             )
  20.         )
  21.         g
  22.     )
  23.     (defun subst2# (a b c / d g)
  24.         (cond
  25.             ((setq d (car c))
  26.                 (cond
  27.                     ((atom d)
  28.                         (cond
  29.                             ((eq d b)
  30.                                 (setq f(cons a f))
  31.                                 (subst2# a b (cdr c))
  32.                             )
  33.                             (t (setq f(cons d f))(subst2# a b (cdr c))
  34.                             )
  35.                         )
  36.                     )
  37.                     (t (setq f (cons (subst3# a b d) f))(subst2# a b (cdr c))
  38.                     )
  39.                 )
  40.             )
  41.         )
  42.         f
  43.     )
  44.     (defun subst1# (a b c / d f)
  45.         (cond
  46.             ((setq d (car c))
  47.                 (cond
  48.                     ((atom d)
  49.                         (cond
  50.                             ((eq d b)
  51.                                 (setq e(cons a e))
  52.                                 (subst1# a b (cdr c))
  53.                             )
  54.                             (t (setq e(cons d e))(subst1# a b (cdr c))
  55.                             )
  56.                         )
  57.                     )
  58.                     (t (setq e (cons (subst2# a b d) e))(subst1# a b (cdr c))
  59.                     )
  60.                 )
  61.             )
  62.         )
  63.         e
  64.     )
  65.     (subst1# a b c)
  66. )
  1. ;;(reverse# '(1 2 3 4 5))
  2. ;;==>(5 4 3 2 1)
  3. (defun reverse# (a / c)
  4.     (defun reverse1# (a / b)
  5.         (cond
  6.             ((setq b (car a)) (setq c (cons b c))(reverse1# (cdr a))
  7.             )
  8.         )
  9.         c
  10.     )
  11.     (reverse1# A)
  12. )
  1. (defun and# (a b)
  2.     (cond
  3.         ((eq a nil) nil)
  4.         ((eq b nil) nil)
  5.         (t t)
  6.     )
  7. )
  8. (defun or# (a b)
  9.     (cond
  10.         ((and#(eq a nil)(eq b nil)) nil)
  11.         (t t)
  12.     )
  13. )
  14. (defun not# (a)
  15.     (cond
  16.         ((eq a nil) T)
  17.         (t nil)
  18.     )
  19. )
  20. (defun assoc# (a b / c d)
  21.     (cond
  22.         ((setq c (car b))
  23.             (cond
  24.                 ((eq a (car c))
  25.                     (setq d (cadr c))
  26.                 )
  27.                 (t (assoc# a (cdr b))
  28.                 )
  29.             )
  30.         )
  31.     )
  32.     d
  33. )
  34. ;(append# '(1 2 3) (4 5))
  35. ;===> (3 2 1 4 5) 这个反的可以么??
  36. (defun append# (a b / c)
  37.     (cond
  38.         ((setq c (car a))
  39.             (setq b (cons c b) a (cdr a))
  40.             (setq B (append# a b))
  41.         )
  42.     )
  43.     b
  44. )
  45. ;(pair '(x y z) '(a b c))   
  46. ;==>((Z . C) (Y . B) (X . A))  不但是反的还是大写了?
  47. (defun pair (a b / e pair1)
  48.     (defun pair1 (a b / c d)
  49.         (cond
  50.             ((and# (setq c (car a)) (setq d (car b))
  51.                 )
  52.                 (setq e (cons (cons c d) e))
  53.                 (pair1 (cdr a) (cdr b))
  54.             )
  55.         )
  56.         e
  57.     )
  58.     (pair1 a b)
  59. )
  60. ;(subst# 'm 'b '(a b a b c d))
  61. ;==>(D C M A M A) 不但是反的还是大写了?
  62. ;多层表没弄出来。。可能是递归还没掌握好。
  63. (defun subst# (a b c / a b c d e)
  64.     (defun subst1# (a b c / d )
  65.         (cond
  66.             ((setq d (car c))
  67.                 (cond
  68.                     ((atom d)
  69.                         (cond
  70.                                 ((eq d b)
  71.                                         (setq e(cons a e))
  72.                                 (subst1# a b (cdr c))
  73.                             )
  74.                             (t (setq e(cons d e))(subst1# a b (cdr c))
  75.                             )
  76.                         )
  77.                     )
  78.                     (t (setq e (cons (subst1# a b d) e))
  79.                     )
  80.                 )
  81.             )
  82.         )
  83.         e
  84.     )
  85.     (subst1# a b c)
  86. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 828个

财富等级: 财运亨通

发表于 2014-1-18 21:58:34 | 显示全部楼层
学习了,还要继续看书,好多不懂的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-25 02:34 , Processed in 0.414560 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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