在perl中加入间隔

use*_*392 1 perl intervals

首先让我举个例子:

我有一组间隔像

[1,4],[5,15],[16,20]
Run Code Online (Sandbox Code Playgroud)

而另一个喜欢

[2,3],[6,14]
Run Code Online (Sandbox Code Playgroud)

我希望它成为一组像

[1,2],[3,4],[5,6],[7,15],[16,20]
Run Code Online (Sandbox Code Playgroud)

我不确定这个操作是什么,如果标题有误导性,请忘记我.是否有我可以使用的CPAN模块,或者更好地提出我自己的解决方案?有一个众所周知的算法吗?

Chr*_*ley 5

使用pairsList :: Util中的函数是一种可能的解决方案.

#!/usr/bin/perl
use strict;
use warnings;
use List::Util 'pairs';

my @a1 = ([1,4],[5,15],[16,20]);
my @a2 = ([2,3],[6,14]);

my @new = pairs sort {$a <=> $b} map {@$_} @a1, @a2;

use Data::Dumper; print Dumper \@new;
Run Code Online (Sandbox Code Playgroud)

这打印

$VAR1 = [
          [
            1,
            2
          ],
          [
            3,
            4
          ],
          [
            5,
            6
          ],
          [
            14,
            15
          ],
          [
            16,
            20
          ]
        ];
Run Code Online (Sandbox Code Playgroud)