明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1293|回复: 5

[求助]:[0518]如何求出串列数值中各串列最大一组数值呢?

[复制链接]
发表于 2007-5-18 20:58 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-5-18 21:02:07 编辑

如:
(SETQ GTQQ(LIST 1 1 1))
(SETQ LTQQ '((51 17 32)
            (28 42 68)
            (53 25 19)
            (12 25 89)) )
求出: _$ (53 42 89)

可以用下列程序求出
(MAPCAR '(LAMBDA (X) (SETQ GTQQ(LIST
(MAX (CAR GTQQ)(CAR X))
(MAX(CADR GTQQ)(CADR X))
(MAX(CADDR GTQQ)(CADDR X))
))) LTQQ)


但是如果为下面这样的串列,非固定的串列值,该怎样处理呢?
(SETQ LSPNB '((11 4 8 17 2 20 22 7 5 12)
       (5 10 2 17 1 20 22 7 5 12)
       (9 6 6 17 1 20 22 7 5 12)
       (9 6 6 17 1 20 22 7 5 12)
       (3 12 17 1 4 11 3 22 7 5 12)
       (9 6 6 17 1 6 13 22 7 5 12)
       (7 8 4 17 1 20 22 7 5 12)
       (9 6 6 17 1 4 11 3 22 7 5 12)
       (7 8 4 17 1 4 11 3 22 7 5 12)
       (9 6 6 17 1 4 11 3 22 7 5 12)
       (1 13 1 15 1 16 3 22 7 5 12)
       (7 8 4 17 1 4 11 3 22 7 5 12)
       (13 2 14 1 4 11 3 22 7 5 12)
       (3 12 1 16 4 4 11 3 20 2 6 6 11)
       (7 8 5 16 4 4 11 3 20 2 6 6 11)
       (5 10 3 16 4 20 20 2 6 6 11)
       (15 13 16 4 20 20 2 6 6 11)
       (1 14 4 13 16 4 20 16 3 2 6 6 11)
       (10 16 2 20 20 2 6 6 11)
       (10 16 2 20 20 2 6 6 11)
       (11 14 17 1 1 20 20 2 6 6 11)
       (3 12 1 16 2 4 15 20 2 6 6 11)
       (13 2 10 16 4 20 20 2 6 6 11)
       (24 18 1 10 18 2 20 22 7 5 12)) )

烦请各位帮忙解答一下
谢谢!!!

发表于 2007-5-19 21:51 | 显示全部楼层

I don't understand your intention.

I loaded your sample code

(SETQ GTQQ (LIST 1 1 1))
(SETQ LTQQ '((51 17 32)
      (28 42 68)
      (53 25 19)
      (12 25 89)
     )
)
(MAPCAR '(LAMBDA (X)
    (SETQ GTQQ (LIST
   (MAX (CAR GTQQ) (CAR X))
   (MAX (CADR GTQQ) (CADR X))
   (MAX (CADDR GTQQ) (CADDR X))
        )
    )
  )
 LTQQ
)
 and got

((51 17 32) (51 42 68) (53 42 68) (53 42 89))

Consider the function vl-sort

发表于 2007-5-20 03:52 | 显示全部楼层
  1. ;; 按最长元素.
  2. (defun tt (lst / n a lst2)
  3.   (setq n (apply 'max (mapcar 'length lst)))
  4.   (repeat n
  5.     (setq n    (1- n)
  6.    a    (apply 'max (vl-remove 'nil(mapcar '(lambda (x) (nth n x)) lst)))
  7.    lst2 (cons a lst2)
  8.     )
  9.   )
  10. )
  11. (tt lspnb) -> (24 18 17 20 20 20 22 22 22 12 12 12 11)
发表于 2007-5-20 22:15 | 显示全部楼层
  1. (defun tt(lst / i lst2)
  2.   (setq i -1)
  3.   (while (setq i(1+ i)
  4.                a(vl-remove 'nil (mapcar '(lambda(x)(nth i x))lst)))
  5.     (setq lst2(cons (apply 'max a) lst2))
  6.   )lst2
  7. )
(tt lspnb) ->(11 12 12 12 22 22 22 20 20 20 17 18 24)

发表于 2007-5-20 22:39 | 显示全部楼层
  1. (defun tt(lst / i lst2)
  2.   (setq i -1)
  3.   (while (setq i(1+ i)
  4.                a(vl-remove 'nil (mapcar '(lambda(x)(nth i x))lst)))
  5.     (setq lst2(cons (apply 'max a) lst2))
  6.   )lst2
  7. )
;|
(tt lspnb) ->(11 12 12 12 22 22 22 20 20 20 17 18 24)
 楼主| 发表于 2007-5-21 07:48 | 显示全部楼层

真是利害

還可以這樣解

謝謝您的解答

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

本版积分规则

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

GMT+8, 2024-5-19 03:45 , Processed in 0.239412 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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