明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 701|回复: 6

[讨论] 从小到大的数字表,相邻差逼近分组

[复制链接]
发表于 2019-3-14 19:03 | 显示全部楼层 |阅读模式
用相邻数的差小分组,不要求误差,只需要分组个数
比如  (setq lst '(1 2 3 5 7 8 9)) 要求分组4组,每组至少一个元素
上面的结果可以是
1. '((1 2) (3) (5) (7 8 9))
2. '((1) (2 3) (5) (7 8 9))
3. '((1 2 3) (5) (7 8) (9))
4. '((1 2 3) (5) (7) (8 9))

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-3-15 08:30 来自手机 | 显示全部楼层
分组个数是固定的还是程序自行确定
 楼主| 发表于 2019-3-15 08:57 | 显示全部楼层
masterlong 发表于 2019-3-15 08:30
分组个数是固定的还是程序自行确定

分组个数是参数,可变的,只有相邻数字差最接近是必须要的
发表于 2019-3-15 08:59 | 显示全部楼层
假如分组数是预置的
文字描述下思路
1.  求出所有相邻差
2.  相邻差大到小vl-sort-i排序
3.  分组个数n决定取出上表n-1个元素
4.  根据 i 值直接表分组
 楼主| 发表于 2019-3-15 13:34 | 显示全部楼层
masterlong 发表于 2019-3-15 08:59
假如分组数是预置的
文字描述下思路
1.  求出所有相邻差

谢谢提供思路,
不只是差相近,而是分组中的数是相邻的,
你提供的,应该是差相邻的,根据i的值分组是不对的
这样的分两组,那就变成了
(1 2 4 8 9)
((1 2 8 9) (4))
应该是 ((1 2 4) (8 9))
发表于 2019-3-15 14:54 | 显示全部楼层
(1 2 4 8 9)
-> (1 2 4 1)
-> (2 1 3 0)
->n=2,取1个数,即(2)  -> ( (1 2 4)  (8 9) )
->n=3,取2个数,即(2 1)  -> ( (1 2)  (4)  (8 9) )
->n=4,取3个数,即(2 1 3)  -> ( (1 2)  (4)  (8)  (9) )
->n=5,取4个数,即(2 1 3 0)  -> ( (1)  (2)  (4)  (8)  (9) )
分组数n取n-1个数
得到的是分组的位置值
没毛病

发表于 2019-3-15 22:30 | 显示全部楼层
masterlong 发表于 2019-3-15 14:54
(1 2 4 8 9)
-> (1 2 4 1)
-> (2 1 3 0)

这思路大赞!不知道满不满足炫大的要求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 23:59 , Processed in 0.486793 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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