找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3559|回复: 12

[有奖答题] (多重表)递归操作

[复制链接]

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-4-26 16:32:44 | 显示全部楼层 |阅读模式

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

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

×
;分别在元素末尾加上 晓东 两字

执行前:
(SETQ LST '(123 ("A" "B" "C" (123 456 789))))

执行后:
(SETQ LST2 ("123晓东" ("A晓东" "B晓东" "C晓东" ("123晓东" "456晓东 " "789晓东"))))

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

已领礼包: 1742个

财富等级: 堆金积玉

 楼主| 发表于 2013-4-26 16:54:43 | 显示全部楼层
本帖最后由 炫翔 于 2013-4-26 17:07 编辑

弄一个实例,引导大家,

[pcode=lisp,true];去除表中相同图元, BY顾版
;(gxl-delsame '(5 2 2 3 3 3 4 5));返回(5 2 3 4)
(defun gxl-delsame (l)
  (if L
    (cons (car L) (gxl-delsame (vl-remove (car L) (cdr L))));从(cdr L)删除(car L)元素
  )
)[/pcode]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

 楼主| 发表于 2013-4-26 17:07:09 | 显示全部楼层
[pcode=lisp,true];;;小函数测试时间,ti为使用次数,funname为函数名,funarglist为函数funname的参数列表
;;;如(powerset (list 1 2 3))测试100000次运行时间使用代码为
;;;    (times 100000 'powerset (list (list 1 2 3)))
(defun times (ti funname funarglist / t1 t2)
  (setq t1 (getvar "date"))
  (repeat ti
    (vl-catch-all-apply
      funname
      funarglist
    )
  )
  (setq t2 (getvar "date"))
  (princ "函数:")
  (princ funname)
  (princ (strcat "运行" (rtos ti 2 0) "次" ))
  (princ "测试结果")
  (princ (menucmd (strcat "M=$(edtime,"
     (rtos (- t2 t1) 2 16)
     ",HH:MM:SS:MSEC)"
    )
  )
  )
)[/pcode]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-26 17:16:58 | 显示全部楼层
本帖最后由 Lispboy 于 2013-4-26 17:23 编辑

相应版主号召,贴个看看。

[pcode=lisp,true]
(defun c:ttt ( / l lst1 lst2 tf x)
  (defun _tt (l / tf x)
    (setq tf (type l))
    (cond
      ((= tf 'list)
        (mapcar
          '(lambda (x)
             (_tt x)
           )
          l
        )
      )
      ((= tf 'str)
        (strcat l "晓东")
      )
      ((= tf 'int)
        (strcat (rtos l) "晓东")
      )
    )
  )
  (setq lst1 '(123 ("A" "B"
                    "C"
                    (123 456 789)
                   )
              )
  )                                       
  (setq lst2 (mapcar
               '(lambda (x)
                  (_tt x)
                )
               lst1
             )
  )
  (princ "\n***LST1=")
  (prin1 lst1)
  (princ "***")
  (princ "\n***LST2=")
  (prin1 lst2)
  (princ "***")
)
[/pcode]

QQ截图20130426171315.png

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-26 17:18:52 | 显示全部楼层
上面的函数只考虑了题目的整数和字符串的情况,其他未判断~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-26 17:47:16 | 显示全部楼层
炫翔 发表于 2013-4-26 16:54
弄一个实例,引导大家,

;去除表中相同图元, BY顾版

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-26 17:52:27 | 显示全部楼层
修改了下上面贴的代码,主程序里面有点逻辑问题~

[pcode=lisp,true]
(defun c:ttt ( / l lst1 lst2 tf x)
  (defun _tt (l / tf x)
    (setq tf (type l))
    (cond
      ((= tf 'list)
        (mapcar
          '(lambda (x)
             (_tt x)
           )
          l
        )
      )
      ((= tf 'str)
        (strcat l "晓东")
      )
      ((= tf 'int)
        (strcat (rtos l) "晓东")
      )
    )
  )
  (setq lst1 '(123 ("A" "B"
                    "C"
                    (123 456 789)
                   )
              )
  )                                       ;  (setq a '(1 2 4 (1 3)))
  (setq lst2 (_tt lst1))
  (princ "\n***LST1=")
  (prin1 lst1)
  (princ "***")
  (princ "\n***LST2=")
  (prin1 lst2)
  (princ "***")
)
[/pcode]

评分

参与人数 1D豆 +20 收起 理由
炫翔 + 20 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-4-26 18:17:22 | 显示全部楼层
[pcode=lisp,true](defun tt(ss)
  (mapcar
     '(lambda(x)
       (if (= (type x) 'INT)
         (strcat (itoa x) "晓东")
         (if (= (type x) 'STR)
           (strcat x "晓东")
           (tt x)
        )
      )
    )
    ss
  )
)[/pcode]

评分

参与人数 1D豆 +20 收起 理由
炫翔 + 20 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

发表于 2013-4-26 18:46:13 | 显示全部楼层
[pcode=lisp,true](defun f (l)
  (if l
    (cond
      ((atom (car l))
       (cons (strcat (VL-PRINC-TO-STRING (car l)) "晓东")
             (f (cdr l))
       )
      )
      ((= 'list (type (car l)))
       (cons (f (car l)) (f (cdr l)))
      )
    )
  )
)[/pcode]

评分

参与人数 1D豆 +20 收起 理由
炫翔 + 20 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

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

使用道具 举报

发表于 2014-9-26 21:04:37 | 显示全部楼层
我也来凑个热闹
  1. (defun addstr(lst);表中每项都添加字符
  2. (mapcar
  3.    '(lambda(X)
  4.      (if (= (type x) 'list)
  5.        (addstr x)
  6.        (strcat (vl-princ-to-string x) "炫翔")
  7.      )
  8.    )
  9. lst
  10. )
  11. )
命令: (addstr '(123 ("A" "B" "C" (123 456 789))))
("123炫翔" ("A炫翔" "B炫翔" "C炫翔" ("123炫翔" "456炫翔" "789炫翔")))

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

使用道具 举报

发表于 2014-10-4 17:46:12 | 显示全部楼层
本帖最后由 czx663 于 2014-10-4 17:55 编辑
  1. (defun ttt (lst)
  2.   (mapcar '(lambda (x) (strcat# x "晓东")) lst)
  3. )
  4. (defun strcat# (element str / Type1)
  5.   (setq Type1 (type element))
  6.   (cond
  7.     ((= Type1 'list) (ttt element));1#
  8.     ((= Type1 'Str) (setq element (strcat element str))) ;2#
  9.     ((= Type1 'int)
  10.      (setq element (strcat (itoa element) str))
  11.     );3#
  12.   );cond
  13. );defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 12:47 , Processed in 0.467975 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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