明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: dolaimi

[求助]真的着急哦,请务必帮忙~~~~

  [复制链接]
 楼主| 发表于 2005-10-4 11:19:00 | 显示全部楼层

我是用在clisp下面运行的

用的是common lisp的语言,看我的代码是和你们的有点不一样哦~~

不好意思~~~

好像是在定义函数变量的时候有不一样的规定~~~

谢谢~~

发表于 2005-10-4 17:15:00 | 显示全部楼层

re

(defun r-compress (lis)
(setq t0 '())
(while (car lis)
(setq lis_w (car lis))
(setq lis_m (- (length lis) (length(vl-remove lis_w lis))))
(if (= lis_m 1) (setq t0 (append t0 (list lis_w)))
(setq t0 (append t0 (list(list lis_m lis_w)))))
(setq lis (vl-remove lis_w lis))
)(princ t0)(princ)
)
;;;
(defun r-uncompress (lis)
(setq t0 '())
(while (car lis)
(if (listp(car lis))
(repeat (caar lis)(setq t0 (append t0 (list(cadr(car lis))) )))
(setq t0 (append t0 (list(car lis)) )))
(setq lis (vl-remove (car lis) lis)))
(princ t0)(princ)
)
发表于 2005-10-4 19:08:00 | 显示全部楼层

reply

使用的程序环境都不一样,我也帮不上什么忙.
 楼主| 发表于 2005-10-4 22:06:00 | 显示全部楼层

谢谢12楼的帮忙~~感激不尽~~~~

谢谢版主!!!!

 楼主| 发表于 2005-10-5 22:58:00 | 显示全部楼层

还有人帮忙解决第二题吗?感激不尽~~~~

发表于 2005-10-6 08:21:00 | 显示全部楼层

re

(defun all-sequences (lis)
(if (/= (length lis) 1) (progn
(setq s (length lis) ss 1.0)
(while (/= s 1)
(setq ss (* ss s))
(setq s (- s 1)))
(setq aa lis s 0)
 (repeat (fix ss)
  (princ lis)
  (setq cc lis s (+ s 1))
  (if (/= (fix s) (fix (/ ss 2)) )(progn
  (setq lis (append (cdr lis) (list(car lis))))
    (if(equal lis aa)(setq lis (append(list(last cc))(reverse(cdr(reverse(cdr cc))))(list(car cc)) ) aa lis))
    )(setq lis (reverse lis) aa lis)))
 )(princ lis))
(princ)
)
发表于 2005-10-8 22:08:00 | 显示全部楼层

[I]For 楼主的第二题。[/I]本来对此贴不感兴趣,但楼主盛情难却。没有什么意思,不过可以测试一下您的计算机运行速度,来个  (all-sequences  '(a b c d e f g h i))  试试?

;;;By xazhji 21:53 2005-10-8
(defun all-sequences  (lis / li1 li2 m mm n nlis nnlis xx yy)
  (setq nlis (list (list (car lis))))
  (foreach xx (cdr lis)
    (progn
      (setq nnlis nil)
      (foreach yy nlis (progn
            (setq n 0 )
            (repeat (1+ (length yy))
                    (setq m 0 mm n li1 nil li2 nil)
                    (repeat n (setq li1 (cons (nth m yy) li1) m (1+ m)))
                    (repeat (- (length yy) n) (setq li2 (cons (nth mm yy) li2) mm (1+ mm)))
                    (setq nnlis (append (list (append (reverse li1) (cons xx (reverse li2)))) nnlis) n (1+ n))
             )
             (setq nlis  nnlis)
         )
     )
   )
 )
)

发表于 2005-10-9 09:56:00 | 显示全部楼层
第一题:
  1. (DEFUN R-COMPRESS (LST)
  2. (IF (LISTP LST) (PROGN
  3.   (SETQ CP (LIST) I 1 J 1 TMP (NTH 0 LST))
  4.   (REPEAT (1- (LENGTH LST))
  5.    (SETQ TMP2 (NTH I LST) I (1+ I))
  6.    (IF (= TMP TMP2)
  7.     (SETQ J (1+ J))
  8.     (SETQ CP (APPEND CP (LIST (IF (= J 1) TMP (LIST TMP J))))
  9.           J 1 TMP TMP2)
  10.    )
  11.   )
  12.   (SETQ CP (APPEND CP (LIST (IF (= J 1) TMP (LIST TMP J)))))
  13. )
  14.   (SETQ CP LST)
  15. )
  16. CP
  17. )
复制代码
  1. (DEFUN R-UNCOMPRESS (LST)
  2. (IF (LISTP LST) (PROGN
  3.   (SETQ I 0 TMP (LIST))
  4.   (REPEAT (LENGTH LST)
  5.    (SETQ TP (NTH I LST) I (1+ I))
  6.    (IF (LISTP TP)
  7.     (REPEAT (CAR TP) (SETQ TMP (APPEND TMP (CDR TP))))
  8.     (SETQ TMP (APPEND TMP (LIST TP)))
  9.    )
  10.   )
  11. )
  12.   (SETQ TMP LST)
  13. )
  14. TMP
  15. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-22 17:09 , Processed in 0.173916 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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