[求助]如何删除X相同的点表 并按X排序
<p>请大家帮助</p><p> </p>
<p>((18 20) (40 15) (18 50) (30 50) (40 25) >>>>>>((18 20) (30 50) (40 15))</p>
<p>保留的点为X相同的其中任一点即可</p> <font face="Verdana">;; 保留的点为X相同的其中任一点<br/>;; (x-sort '((18 20) (40 15) (18 50) (30 50) (40 25))) → '((18 20) (30 50) (40 15))<br/>(defun x-sort (lst / lst1 lst2 a e1 e2)<br/> (setq lst1 '()<br/> lst2 '()<br/> )<br/> (foreach a lst<br/> (if (not (member (car a) lst1))<br/> (setq lst1 (cons (car a) lst1)<br/> lst2 (cons a lst2)<br/> )<br/> )<br/> )<br/> (vl-sort lst2 '(lambda (e1 e2) (< (car e1) (car e2))))<br/>)</font> <p>谢谢版主相助</p>
<p> </p>
<p> </p>
<p>借版主程式改了一个</p>
<p><font face="Verdana">;如何删除y相同的点表 并按y排序<br/>;; 保留的点为y相同的其中任一点<br/>;; (x-sort '((18 20) (40 15) (18 50) (30 50) (40 25))) → '((40 15) (18 20) (40 25) (18 50))<br/>;(setq lst '((18 20) (40 15) (18 50) (30 50) (40 25)))</font></p>
<p><font face="Verdana">(defun y-sort (lst / lst1 lst2 a e1 e2)<br/> (setq lst1 '()<br/> lst2 '()<br/> )<br/> (foreach a lst<br/> (if (not (member (cadr a) lst1))<br/> (setq lst1 (cons (cadr a) lst1)<br/> lst2 (cons a lst2)<br/> )<br/> )<br/> )<br/> (vl-sort lst2 '(lambda (e1 e2) (< (cadr e1) (cadr e2))))<br/>) <br/></font></p> 顶 不知道用的上用不上 点如果有重合的怎么办呢 强悍、、、、、 正好用到这个代码,试试
页:
[1]