找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3159|回复: 26

[研讨] 关于关联表修改

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-25 00:34:20 | 显示全部楼层 |阅读模式

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

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

×
关联表数据约定关键字唯一

'(("A1" ..........("A2" .....("An"  124 456)))("B1" ..........("B2" .....("Bn" ....)))...("N1" ..........("N2" .....("Nn" ..))))


现在想修改红色的部分,修改完后返回整个表

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-25 05:45:43 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-11-25 05:46 编辑

暂时想到的,递归找出每项的所有key,确定要找的数据位于哪个项,同时也知道了位于第几层,很久以前讨论过一个subst-n
http://bbs.xdcad.net/forum.php?mod=viewthread&tid=274407&page=2&mobile=2#pid1393569
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-11-25 09:20:58 | 显示全部楼层
吹点冷风。
个人感觉这个帖子有点“走火入魔了”。
关联表的作用就是“便于检索”,这就是所谓的“堆”,如果关联表再多次嵌套,变成了“栈”就完全失去“便于检索”这个作用,虽然理论上也是可能的,但无论从什么角度都是得不偿失的。
在ACAD中,嵌套的关联表,我知道的只有扩展数据组码,而且只有两层,并且其中1000以上的组码还都是多个共生的,之所以设置-3组码只是便于管理,即便这么简单的嵌套检索,操作也都是相当麻烦的。
如果我们自己构建关联表,我们会构建这种“无限”嵌套的关联表么?我想不会,一个带多维角标的检索项完全可以解决任何问题。
再说回来,前面说了,多重嵌套的关联表具有“栈”的性质,所谓栈,就是单进单出、先进后出,那么,解决的办法无法就是不断“剥皮”。
就像一个恶作剧的小盒子,你想换掉里面的东西,只有把包装纸一层一层地剥开,不过记住,换掉东西后还要原样一层一层地包上。
当然,如果你觉得值得。

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-25 09:31:06 | 显示全部楼层
在 AutoLisp 里我是不会这样组织数据的!

点评

奇怪了,难道你写的LISP不是这种数据形式吗?我不是嘲笑你,我只是反驳你,我喜欢那些敢发言的人,而鄙视那些从不发言、发贴,还虚伪的要求别人辕马共享的人。我写的这个递归法效率并不高,也想到了更好的方法,但没  详情 回复 发表于 2013-11-25 12:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2013-11-25 09:40:08 来自手机 | 显示全部楼层
ll_j  2013-11-25 09:20

ое
ν ...

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

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-11-25 09:51:36 | 显示全部楼层
这种数据结构没有什么值不值得的说法,LISP表达式就是这种结构,既然用了LISP,那学习怎么操作这种结构还是有必要的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-11-25 09:57:34 | 显示全部楼层

老大被气糊涂了么?
{:soso__10489269148409181224_2:}

点评

刚才用手机发的,白瞎了大堆文字。不多说了,两个字,值得。大家继续吧。  详情 回复 发表于 2013-11-25 10:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 208个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2013-11-25 10:25:41 | 显示全部楼层
ll_j 发表于 2013-11-25 09:57
老大被气糊涂了么?

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-25 11:21:21 | 显示全部楼层
本帖最后由 st788796 于 2013-11-25 22:50 编辑

重写学习学习
http://acl.readthedocs.org/en/latest/zhCN/ch3-cn.html




先暂存到这

  1. (defun our-copy-list (lst)
  2.   (if (atom lst)
  3.     lst
  4.     (cons (car lst) (our-copy-list (cdr lst)))
  5.   )
  6. )
  7. (defun compress        (x)
  8.   (if (listp x)
  9.     (compr (car x) 1 (cdr x))
  10.     x
  11.   )
  12. )
  13. (defun compr (elt n lst)
  14.   (if (null lst)
  15.     (list (n-elts elt n))
  16.     (progn
  17.       (setq next (car lst))
  18.       (if (equal next elt)
  19.         (compr elt (+ n 1) (cdr lst))
  20.         (cons (n-elts elt n)
  21.               (compr next 1 (cdr lst))
  22.         )
  23.       )
  24.     )
  25.   )
  26. )
  27. (defun n-elts (elt n)
  28.   (if (> n 1)
  29.     (list n elt)
  30.     elt
  31.   )
  32. )
  33. (defun uncompress (lst)
  34.   (apply 'append
  35.          (mapcar '(lambda (x)
  36.                     (if        (atom x)
  37.                       (list x)
  38.                       (apply 'list-of x)
  39.                     )
  40.                   )
  41.                  lst
  42.          )
  43.   )
  44. )
  45. (defun list-of (n elt)
  46.   (if (zerop n)
  47.     nil
  48.     (cons elt (list-of (- n 1) elt))
  49.   )
  50. )
  51. (defun our-copy-tree (tr)
  52.   (if (atom tr)
  53.     tr
  54.     (cons (our-copy-tree (car tr))
  55.           (our-copy-tree (cdr tr))
  56.     )
  57.   )
  58. )
  59. (defun our-subst (new old tree)
  60.   (if (equal tree old)
  61.     new
  62.     (if        (atom tree)
  63.       tree
  64.       (cons (our-subst new old (car tree))
  65.             (our-subst new old (cdr tree))
  66.       )
  67.     )
  68.   )
  69. )
  70. (defun len (lst)
  71.   (if (null lst)
  72.     0
  73.     (+ (len (cdr lst)) 1)
  74.   )
  75. )
  76. (defun shortest-path (start end net)
  77.   (bfs end (list (list start)) net)
  78. )
  79. (defun bfs (end queue net)
  80.   (if (null queue)
  81.     nil
  82.     (progn
  83.       (setq path (car queue)
  84.             node (car path)
  85.       )
  86.       (if (equal node end)
  87.         (reverse path)
  88.         (bfs end
  89.              (append (cdr queue)
  90.                      (new-paths path node net)
  91.              )
  92.              net
  93.         )
  94.       )
  95.     )
  96.   )
  97. )
  98. (defun new-paths (path node net)
  99.   (mapcar '(lambda (n)
  100.              (cons n path)
  101.            )
  102.           (cdr (assoc node net))
  103.   )
  104. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-11-25 11:40:25 | 显示全部楼层
用递归弄了个
  1. ;;;(func '("f" 7 8 9) '(("a" 1 ("b" 2 3 ("c" 4 5))) ("d" 1 ("e" 2 3 ("f" 4 5))) ("g" 1 ("h" 2 3 ("i" 4 5)))))
  2. ;;;                   (("a" 1 ("b" 2 3 ("c" 4 5))) ("d" 1 ("e" 2 3 ("f" 7 8 9))) ("g" 1 ("h" 2 3 ("i" 4 5))))
  3. (defun func (nLst mLst / var0)
  4.   (defun func0 (nLst var0 mLst / var1)
  5.     (cond
  6.       ((not (setq var1 (car mLst))) nil)
  7.       ((= var1 var0) nLst)
  8.       ((listp var1) (cons (func0 nLst var0 var1) (func0 nLst var0 (cdr mLst))))
  9.       (t (cons var1 (func0 nLst var0 (cdr mLst))))
  10.     )
  11.   )
  12.   (func0 nLst (car nLst) mLst)
  13. )

评分

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

查看全部评分

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

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-11-25 12:38:15 | 显示全部楼层
st788796 发表于 2013-11-25 09:31
在 AutoLisp 里我是不会这样组织数据的!

奇怪了,难道你写的LISP不是这种数据形式吗?我不是嘲笑你,我只是反驳你,我喜欢那些敢发言的人,而鄙视那些从不发言、发贴,还虚伪的要求别人辕马共享的人。我写的这个递归法效率并不高,也想到了更好的方法,但没人发贴,实在有点心寒。

点评

更好的方法可否分享出来。  详情 回复 发表于 2013-11-25 12:51
我的意思是没有用过这么多数据,一般就一层,assoc即可,对不发言的可以设定回复看帖  详情 回复 发表于 2013-11-25 12:50
LISP的表结构适合人工智能,关联表是个很重要的组织形式,这种修改是处理很多事情时候必须的,如果仅仅是用些零散的变量去处理数据,反而没体现出LISP的优势,在很多应用也会受限。 算法先不管高效否,先能实现是  详情 回复 发表于 2013-11-25 12:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-11-25 12:46:06 | 显示全部楼层
本帖最后由 ayl1004 于 2013-11-25 13:00 编辑

中午喝了点白酒,我借酒劲胡说几句:1 感觉晓东的豆币没有明经币有价值。2 晓东论坛现在动不动就引用xdApi,实在有点尴尬。3 我很佩服固版,但他的不准在LISP版块发.fas的编译码我强烈反对,其他编程语言发的都是编译码,而LISP能用辕马就是个进步,但却禁止发编译码,实在有点说不过去。
我在晓东和明经发的基本上都是辕马,只有那个Excel表格转CAD表格是vlx。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-25 12:49:34 | 显示全部楼层
ayl1004 发表于 2013-11-25 12:38
奇怪了,难道你写的LISP不是这种数据形式吗?我不是嘲笑你,我只是反驳你,我喜欢那些敢发言的人,而鄙视 ...

LISP的表结构适合人工智能,关联表是个很重要的组织形式,这种修改是处理很多事情时候必须的,如果仅仅是用些零散的变量去处理数据,反而没体现出LISP的优势,在很多应用也会受限。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 09:04 , Processed in 0.221210 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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