computer 版 (精华区)
发信人: ball (电脑是魔鬼,听涛是天使), 信区: computer
标 题: [合集] 一个有关算法的问题,看看大家都怎么解决
发信站: BBS 听涛站 (Mon Jun 13 17:40:43 2005), 站内
☆─────────────────────────────────────☆
XP (|Encoding The World|) 于 (Mon Apr 25 18:34:17 2005) 提到:
题目的是这样的:
在AutoCAD中有n条直线,这些直线的端点有可能重合,(比如两根线的起点重合)
现在要输出一个文档,格式是这样的:
先输出所有点,重合的点必须合并成一个点
P,1,x,y,z (x,y,z是点的坐标)
P,2,x,y,z
P,3,x,y,z
……
点输完输出线,用L打头
L,1,NumOfStartPt,NumOfEndPt(NumOfStartPt,NumOfEndPt分别是直线起点和终点的点号)
L,2,NumOfStartPt,NumOfEndPt
……
大家都说说有效又正确的方法吧:)
☆─────────────────────────────────────☆
draziwest (fz,死磕IA32汇编) 于 (Mon Apr 25 20:30:42 2005) 提到:
cad里应该是可以用autolisp访问其中的数据结构的吧,先要知道怎么表示
如果知道了,倒是不难实现的
如果点集是pset
(defun filter-pset (pset)
(cons (car pset)
(filter-pset
(filter #'(lambda (a)
(same-point? a (car pset)))
(cdr pset)))))
car 点集中首元素
cdr 点集中除第一个以外的所有元素
same-point? 判断是否同一个点
其中filter负责把满足#'(lambda (a) ...)的 (cdr pset)中的点集去掉
至于直线,似乎没有什么要求了吧,直接输出就可以了
【 在 XP (|Encoding The World|) 的大作中提到: 】
: 题目的是这样的:
: 在AutoCAD中有n条直线,这些直线的端点有可能重合,(比如两根线的起点重合)
: 现在要输出一个文档,格式是这样的:
: 先输出所有点,重合的点必须合并成一个点
: P,1,x,y,z (x,y,z是点的坐标)
: P,2,x,y,z
: P,3,x,y,z
: ……
: 点输完输出线,用L打头
: L,1,NumOfStartPt,NumOfEndPt(NumOfStartPt,NumOfEndPt分别是直线起点和终点的点号)
: L,2,NumOfStartPt,NumOfEndPt
: ...................
☆─────────────────────────────────────☆
XP (|Encoding The World|) 于 (Mon Apr 25 21:31:28 2005) 提到:
autolisp不会用 :) 有空去研究研究
不用它自带的fitler吧 ,这样精巧,不过没有普遍性
【 在 draziwest (fz,死磕IA32汇编) 的大作中提到: 】
: cad里应该是可以用autolisp访问其中的数据结构的吧,先要知道怎么表示
: 如果知道了,倒是不难实现的
: 如果点集是pset
: (defun filter-pset (pset)
: (cons (car pset)
: (filter-pset
: (filter #'(lambda (a)
: (same-point? a (car pset)))
: (cdr pset)))))
: car 点集中首元素
: cdr 点集中除第一个以外的所有元素
: ...................
☆─────────────────────────────────────☆
ball (莫欺少年穷) 于 (Mon Apr 25 21:43:38 2005) 提到:
你说一个或者说说autocad有什么函数可调用
可能问的外行了:)
【 在 XP (|Encoding The World|) 的大作中提到: 】
: autolisp不会用 :) 有空去研究研究
: 不用它自带的fitler吧 ,这样精巧,不过没有普遍性
☆─────────────────────────────────────☆
XP (|Encoding The World|) 于 (Mon Apr 25 21:46:52 2005) 提到:
不用调用autocad函数了(其实我也不知道有什么可以调用,就是取得所有直线得端点而以)
我们可以假设这个问题不是在CAD里面
【 在 ball (莫欺少年穷) 的大作中提到: 】
: 你说一个或者说说autocad有什么函数可调用
: 可能问的外行了:)
☆─────────────────────────────────────☆
draziwest (fz,死磕IA32汇编) 于 (Mon Apr 25 21:58:29 2005) 提到:
【 在 XP (|Encoding The World|) 的大作中提到: 】
: autolisp不会用 :) 有空去研究研究
: 不用它自带的fitler吧 ,这样精巧,不过没有普遍性
filter可以自己写,用lisp就是小菜了
☆─────────────────────────────────────☆
XP (|Encoding The World|) 于 (Mon Apr 25 22:34:47 2005) 提到:
关键就是写filter算法的效率问题了
【 在 draziwest (fz,死磕IA32汇编) 的大作中提到: 】
: filter可以自己写,用lisp就是小菜了
☆─────────────────────────────────────☆
draziwest (fz,死磕IA32汇编) 于 (Mon Apr 25 22:45:09 2005) 提到:
其实我们不用怎么考虑优化的问题的,关键是怎么描述问题,只要复杂度够就行了
需要在问题描述的难易度和效率之间取得一个平衡,尽量用直接而且简洁的方式来
描述问题,我们使用计算机语言是主要为了描述客观世界的。
优化是很技术性的问题,留给搞计算机的人来解决。
【 在 XP (|Encoding The World|) 的大作中提到: 】
: 关键就是写filter算法的效率问题了
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.102毫秒