乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 82|回复: 19

[编程交流] Lisp的第二个循环不工作

[复制链接]

8

主题

43

帖子

35

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:32:24 | 显示全部楼层 |阅读模式
嗨!!
我的程序假设在2个列表(ptinslist和li)中循环以应用翻译函数。。第一个循环有效,但k循环无效
 
plzz帮助
 
(setq k 0)
(setq j 0)
 
(虽然(
(而(
 
(setq tran(翻译(第n k个ptinslist)(第n个j li)))
 
(setq nvlist(append nvlist(list tran)))
(setq j(+j 1))
 
)
 
(setq all(append all(list nvlist)))
 
 
(setq k(+k 1))
)
回复

使用道具 举报

14

主题

719

帖子

706

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 09:36:28 | 显示全部楼层
我已经把你帖子的标题改成了更具描述性的标题,请以后使用更具描述性的标题,这会有所帮助。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:41:18 | 显示全部楼层
您的代码片段相当混乱,但我认为您可以使用mapcar+lambda实现您想要的。
 
如。
  1. (mapcar '(lambda (a b) (translate a b))
  2.        ptinlist
  3.        li
  4. )

 
顺便说一句,translate不是原生函数,所以我假设它是您编写的函数。如果你想要的是trans,那么你需要三个参数,而不是两个。
回复

使用道具 举报

8

主题

43

帖子

35

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:42:43 | 显示全部楼层
好的,老虎,我会的,谢谢
 
alanjit yes translate是一个函数:
 
(defun translate(pt1 pt2/)
(mapcar’+pt1 pt2)
 
但是我需要循环两个列表(两个列表的长度是4)
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:47:35 | 显示全部楼层
  1. (mapcar '(lambda (a b) (apply 'mapcar (cons '+ (list a b))))
  2.        ptinlist
  3.        li
  4. )
回复

使用道具 举报

11

主题

98

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 09:50:50 | 显示全部楼层
如果你打算继续使用你的原始代码,我建议它的编写类似于下面的内容-用于neatnes等。
在这一点上,我支持alanjt,因为你在遍历列表,尽管我认为需要这样做
这取决于您试图实现的目标:如果您试图将LCORD中的每个点与Lins中的每个点进行转换,那么上面的mapcar集群可能就是您想要的。如果您试图针对每个列表各自的坐标运行translate,例如
然后你想接受alanjt的建议——我相信这就是你想要的;您收到的代码正在尝试执行我提供的解决方案。
 
希望有帮助
 
编辑:在有人开枪打我之前;所有代码都是在响应线程区域编写的,因此没有经过测试。除了可能出现额外的右括号或语法错误外,该原则是合理的。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:54:22 | 显示全部楼层
如果使用子程序,我认为应该如下所示:
 
  1. 5
回复

使用道具 举报

8

主题

43

帖子

35

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:56:35 | 显示全部楼层
谢谢大家,我会试试这个并回复
对于我尝试执行的代码:
 
(setq lins(列表0 10 20))
(setq LCORD(列表5 60 80))
;示例点
(翻译(第n个0 lins)(第n个0 LCORD))
(翻译(第n个0 lins)(第n个1 LCORD))
(翻译(第n个0 lins)(第n个2 LCORD))
 
(翻译(第n个1 lins)(第n个0 LCORD))
(翻译(第n个1 lins)(第n个1 LCORD))
(翻译(第n个1 lins)(第n个2 LCORD))
 
(翻译(第n个2 lins)(第n个0 LCORD))
(翻译(第n个2 LIN)(第n个1 LCORD))
(翻译(第n个2 lins)(第n个2 LCORD))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:00:26 | 显示全部楼层
我很困惑,这是一个点列表还是一个整数列表?
 
点:'((0.0.0。)(0. 1. 1.) (1. 1. 1.))
整数:'(0 1 2 3 4 5 6)
回复

使用道具 举报

8

主题

43

帖子

35

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:03:13 | 显示全部楼层
no i'ts a list of points actually they are coordinate不,i'ts a list of points,实际上它们是坐标
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 02:25 , Processed in 0.781311 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表