【发布时间】:2011-03-27 20:55:21
【问题描述】:
如何按起始坐标按数字顺序对两个坐标数组进行排序,例如
my @starts = (100,100,200,300,400,500,525);
my @ends = (150,125,250,350,450,550,550);
但是如果在开始或结束列表中有两个匹配项,则选择最大的区别?例如
my @uniq_starts = (100,200,300,400,500);
my @unique_ends = (150,250,350,450,550);
非常感谢任何帮助!
另外,如果列表是这样的呢?
my @starts = (100,125,200,300,400,500,525);
my @ends = (150,175,250,350,450,550,550);
这将为我提供以下值之间的值:
-25, 25, 50, 50, 50, -25
我需要以下输出:
my @uniq_starts = (100,200,300,400,500);
my @unique_ends = (175,250,350,450,550);
所以我介于两者之间的值是:
25, 50, 50, 50
我可以通过删除和忽略任何负值来解决这个问题,因为我可以想象这会使事情变得更加复杂。
【问题讨论】:
-
请发布您迄今为止的编码尝试。
-
@unique_ends的第一项不应该是 150 而不是 125,还是我误解了你所说的“最大差异”是什么意思? -
对不起,是的,应该是 150,我已经编辑了文本!
-
实际上,为了让它更复杂......这些值可能不一定匹配,并且可能仍然存在一些重叠。例如开始 = (100,125);结束 = (150,200)。然后我需要开始 = (100);结束 = (200) :S
标签: arrays perl sorting duplicates