找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1944|回复: 15

[其他]:大家一起来试试

[复制链接]

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-7-26 15:53:08 | 显示全部楼层 |阅读模式

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

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

×
已知:
(setq p1'(110.555 77.8268 0.0))
(setq p2'(113.818 77.8268 0.0))
(setq p3'(113.818 77.8268 0.0))
(setq p4'(117.082 77.8268 0.0))
(setq p5'(117.082 77.8268 0.0))
(setq p6'(121.829 77.8268 0.0))
(setq p7'(121.829 77.8268 0.0))
(setq p8'(126.577 77.5303 0.0))
(setq p9'(126.577 77.5303 0.0))
(setq p10'(133.104 77.5303 0.0))
(setq p11'(133.104 77.5303 0.0))
(setq p12'(139.631 77.2338 0.0))
(setq p13'(139.631 77.2338 0.0))
(setq p14'(152.39 76.9373 0.0))
(setq p15'(152.39 76.9373 0.0))
(setq p16'(163.961 75.1581 0.0))
(setq p17'(163.961 75.1581 0.0))
(setq p18'(174.642 74.8616 0.0))
(setq p19'(174.642 74.8616 0.0))
(setq p20'(182.653 74.5651 0.0))

大家写一段程序,完成下面的意思.
(setq p1(polar p1 0 1000)
           p2(polar p2  0 1000)
          ...
           p20(polar p20  0 1000)
)

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

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-7-26 19:06:19 | 显示全部楼层
不知对不对

  1. (foreach p (list p1 p2 p3 p4 p5        p6 p7 p8 p9 p10        p11 p12        p13 p14        p15 p16
  2.                  p17 p18 p19 p20)
  3.   (setq n 1)
  4.   (setq        (eval (read (strcat "p" (rtos n 2 0))))
  5.          (polar
  6.            (eval
  7.              (read
  8.                (strcat "p"
  9.                        (rtos n 2 0)
  10.                )
  11.              )
  12.            )
  13.            0
  14.            1000
  15.          )
  16.   )
  17.   (setq n (1+ n))
  18. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-7-26 20:12:44 | 显示全部楼层

  1. (setq n 1)
  2. (foreach p (list p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16
  3.                  p17 p18 p19 p20)
  4.   (set (read (strcat "p" (rtos n 2 0))) (polar p 0.0 1000.0))
  5.   (setq n (1+ n))
  6. )

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2003-7-27 08:41:57 | 显示全部楼层
最初由 ll_j 发布
[B][code]
(setq n 1)
(foreach p (list p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16
                 p17 p18 p19 p20)
  (set (read (strcat "p" (rtos n 2 0))) (polar p 0.0 1000.0))
  (setq n... [/B]


我弄着玩的,

假定有100个点呢?不会也p1 p2下去吧

你们两位就别参与了.

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

使用道具 举报

发表于 2004-10-5 03:43:01 | 显示全部楼层
呵呵,翻到个旧的帖子,我来试试

  1. (defun tt ( st n ang dis / i a)
  2.   (setq i 0)
  3.   (repeat n
  4.     (set (setq a (read (strcat st (itoa (setq i (1+ i)))))) (polar (eval a) ang dis))
  5.   )
  6. )
  7. (tt  "P" 20 0 1000)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2004-10-8 23:47:46 | 显示全部楼层
最初由 梦断江南 发布
[B]呵呵,翻到个旧的帖子,我来试试
(defun tt ( st n ang dis / i a)
  (setq i 0)
  (repeat n
    (set (setq a (read (strcat st (itoa (setq i (1+ i)))))) (polar (eval a) ang dis))
  )
)
(tt  "P... [/B]


^_^

[php]
(defun tt ( str from to foo /  a)
  (while(<= from to)
    (set (setq a(read(strcat str(itoa from))))
         (apply foo(list(eval a)))
    )
    (setq from(1+ from))
  )T
)
[/php]


  1. ;;test:
  2. (tt "b" 1 9 '(lambda(x) 100))
  3. ;--->b1 b2 b3 ... == 100
  4. (tt "b" 1 9 '(lambda(x)(1+ x)))
  5. ,---> b1 b2 b3 ...==101



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

使用道具 举报

发表于 2004-10-9 13:05:49 | 显示全部楼层
最初由 aeo 发布
(defun tt ( st n ang dis / i a)
  (setq i 0)
  (repeat n
    (set (setq a (read (strcat st (itoa (setq i (1+ i)))))) (polar (eva...


[php]
(defun tt ( str from to foo /  a)
  (while(<= from to)
    (set (setq a(read(strcat str(itoa from))))
         ((eval foo) (eval a))  ;;这里可用eval 替代apply
    )
    (setq from(1+ from))
  )T
)
[/php]
另外,不方便检测结果,改一下,得出下面的程序
[php]
(defun tt ( str from to foo / strs)
  (while(<= from to)
    (setq strs (cons (read(strcat str(itoa from))) strs)
          from(1+ from))
  )
  (mapcar '(lambda(x)(set x ((eval foo) (eval x))))(reverse strs))
)
[/php]
;;test:
(tt "p" 1 9 '(lambda(x)nil)) ->(nil nil nil nil nil nil nil nil nil)
(tt "b" 1 9 '(lambda(x) 200))
->(200 200 200 200 200 200 200 200 200)
(setq p0 '(1 1 1))
(tt "p" 1 9 '(lambda(x)(setq p0(mapcar '+(if x x p0) p0))))
->((2 2 2) (4 4 4) (8 8 8) (16 16 16) (32 32 32) (64 64 64) (128 128 128) (256 256 256) (512 512 512))
(tt "p" 1 9 '(lambda(x)(list (1+ (car x))(cadr x)(caddr x))))
->((3 2 2) (5 4 4) (9 8 8) (17 16 16) (33 32 32) (65 64 64) (129 128 128) (257 256 256) (513 512 512))
(tt "p" 1 9 '(lambda(x)(polar x 0 100)))
->((103.0 2.0 2.0) (105.0 4.0 4.0) (109.0 8.0 8.0) (117.0 16.0 16.0) (133.0 32.0 32.0) (165.0 64.0 64.0) (229.0 128.0 128.0) (357.0 256.0 256.0) (613.0 512.0 512.0))

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2004-10-9 22:31:37 | 显示全部楼层
(eval(list foo a))也可以,以前有一贴讨论过。各人写法.

eval是lisp里最牛的的一个函数。


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

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2004-10-10 18:11:10 | 显示全部楼层
我用下面这一段代码实现将二维点集ptj中的每一个点偏移dx,dy

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

使用道具 举报

发表于 2004-10-11 22:06:28 | 显示全部楼层
最初由 aeo 发布
[B][QUOTE]最初由 梦断江南 发布
[B]呵呵,翻到个旧的帖子,我来试试
(defun tt ( st n ang dis / i a)
  (setq i 0)
  (repeat n
    (set (setq a (read (strcat st (itoa (setq i (1+ i)))))) (polar (eva... [/B]


本人愚钝,做出如下试验:

  1. _$
  2. _$ (defun tt ( str from to foo /  a)
  3.   (while(<= from to)
  4.     (set (setq a(read(strcat str(itoa from))))
  5.          (apply foo(list(eval a)))
  6.     )
  7.     (setq from(1+ from))
  8.   )T
  9. )
  10. TT
  11. _$ (tt "b" 1 9 '(lambda(x) 100))
  12. T
  13. _$ (tt "b" 1 9 '(lambda(x)(1+ x)))
  14. T
  15. _$
  16. _$


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

使用道具 举报

发表于 2004-10-12 00:01:54 | 显示全部楼层
解释什么?返回值和过程是两码事
$ (tt "b" 1 9 '(lambda(x) 100))
T
虽然返回T,但是过程已经给 b1 b2.....b9 赋值.
你可以紧接着检验一下这些变量的值
要不就用我在8楼的第二个程序,可以直接反映出变量的值(以列表形式)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-12 19:26:26 | 显示全部楼层
明白了,很久没有编程了,甚至看不懂程序了,当然也是诸位高手的程序深奥。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2004-10-12 22:27:10 | 显示全部楼层
最初由 urljit 发布
[B]明白了,很久没有编程了,甚至看不懂程序了,当然也是诸位高手的程序深奥。 [/B]


功能函数,只要检测程序有没有正常执行。
其实应该用vl-catch-all-apply比较好.
如果函数没正常执行,就安全退出.
(if (tt ...)(progn ..))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 11:58 , Processed in 0.200520 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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