vijayP 发表于 2022-7-5 22:58:37

查找重复编号的逻辑

从nubmer序列中找出重复数的逻辑应该是什么。
例如110 111 112 113 114 111 110 111 115 116以及(x,y)
 
对于示例110,重复2次
 
("110" ("1057.03 475.00" "821.46 436.99"));;("num" ("1st x y" "2nd x y"))
 
111重复3次
 
("111" ("614.88 467.76" "422.80 605.32" "1524.55 420.70"));;("num" ("1st x y" "2nd x y" "3rd x y"))
 
 
这样我们就可以把它们放在2个平铺列表框中。在第一个tile num中,在第二个tile中,其所有x和y。

Tharwat 发表于 2022-7-5 23:12:59

我看不出110和111在你发布的列表中重复了!
你能更具体一点吗?
 
谢谢

vijayP 发表于 2022-7-5 23:16:06

谢谢你的回复。
请立即查看。

Tharwat 发表于 2022-7-5 23:22:22


 

(setq l '(110 111 112 113 114 111 110 111 115 116))
(foreach i l (if (not (member i lst)) (setq lst (cons i lst))))
(reverse lst)

MSasu 发表于 2022-7-5 23:30:25

我认为关注列表是OP声明中的枚举,Tharwat;下面他/她只是提供了一些项目的示例。
 
VijayP,要列出重复项,只需使用FOREACH解析您的列表,并将每个元素存储到一个新的元素中;使用MEMBER检查当前元素是否已经存在-如果是,则您有一个副本。

vijayP 发表于 2022-7-5 23:43:26

塔尔瓦特;您的代码返回的列表没有重复项,但我需要所有重复项及其x y。这样我们才能找到它们
Msasu;有示例代码吗?

Tharwat 发表于 2022-7-5 23:50:59

 
 
如果你没有给出一个明确的例子来说明你在追求什么,人们会不断猜测和发布不必要的代码,也许没有人会遵循你的思路。
 
这仅供参考。

vijayP 发表于 2022-7-5 23:57:01

 
塔尔瓦特;请再次查看帖子#1

hmsilva 发表于 2022-7-6 00:00:05

作为“演示”。。。
 

(setq lst '(("110" ("1.6 3.3" "2.0 3.5" "1.8 2.9"))
    ("111" ("1.5 3.2" "2.0 3.5" "1.8 2.9"))
    ("111" ("1.5 3.2" "2.0 3.5" "1.8 2.9"))
    ("112" ("1.8 3.8" "2.8 3.8" "1.0 2.0"))
    ("112" ("1.8 3.8" "2.8 3.8" "1.0 2.0"))
    ("113" ("1.5 3.2" "2.0 3.5" "1.8 2.9"))
    ("114" ("1.0 3.0" "2.6 3.6" "1.6 2.6"))
    ("114" ("1.0 3.0" "2.6 3.6" "1.6 2.6"))
    )
   )

(foreach x lst
(if (member x tmplst)
   (setq dup-lst (cons x dup-lst));; dup-lst will retain all the duplicate
   )
(setq tmplst (cons x tmplst))
)

 
HTH公司
亨里克
页: [1]
查看完整版本: 查找重复编号的逻辑