从perl中的两个数组中提取唯一间隔?

鹿里

我试图从具有间隔(唯一的)的两个文件中提取非重叠间隔。在这种情况下:

file1.txt

Start End
1 3
5 9
13 24
34 57

file2.txt

Start End
6 7
10 12
16 28
45 68

预期结果:具有这些间隔且仅在一个文件中存在元素的数组:

1-3 , 10-12

仅此而已...非常感谢!

疾病

逐行处理文件。如果没有重叠,请报告从更早开始的间隔并前进其文件。如果有重叠,请提前两个文件。

#!/usr/bin/perl
use warnings;
use strict;

use Data::Dumper;

my @F;
open $F[0], '<', 'file1.txt' or die $!;
open $F[1], '<', 'file2.txt' or die $!;

# Skip headers.
readline $_ for @F;

my @boundaries;
my @results;

sub earlier {
    my ($x, $y) = @_;
    if (! @{ $boundaries[$y] }
        or $boundaries[$x][1] < $boundaries[$y][0]
    ) {
        push @results, $boundaries[$x];
        $boundaries[$x] = [ split ' ', readline $F[$x] ];
        return 1
    }
    return 0
}

sub overlap {
    my ($x, $y) = @_;
    if ($boundaries[$x][1] < $boundaries[$y][1]) {
        do { $boundaries[$x] = [ split ' ', readline $F[$x] ] }
          until ! @{ $boundaries[$x] }
          or $boundaries[$x][0] > $boundaries[$y][1];
        $boundaries[$y] = [ split ' ', readline $F[$y] ];
        return 1
    }
    return 0
}

sub advance_both {
    @boundaries = map [ split ' ', readline $_ ], @F;
}

# init.
advance_both();
while (grep defined, @{ $boundaries[0] }, @{ $boundaries[1] }) {

    earlier(0, 1)
    or earlier(1, 0)
    or overlap(0, 1)
    or overlap(1, 0)
    or advance_both();
}

print join(' , ', map { join '-', @$_ } @results), "\n";

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何统一间隔?

来自分类Dev

如何从Perl中的两个数组中获取唯一元素

来自分类Dev

如何从Perl中的两个数组中获取唯一元素

来自分类Dev

从两个数组中查找唯一项

来自分类Dev

如果数据帧的值属于同一间隔,则用间隔的上限替换数据帧的值

来自分类Dev

如果数据帧的值属于同一间隔,则用间隔的上限替换数据帧的值

来自分类Dev

如果数据帧的值属于同一间隔,则用间隔的上限替换数据帧的值

来自分类Dev

Java-按四分之一间隔四舍五入

来自分类Dev

如何从 Scala 密集向量中提取两个数组

来自分类Dev

Perl中两个数组的比较

来自分类Dev

在MongoDB中的一个文档中的两个数组中获取唯一值

来自分类Dev

在MongoDB的一个文档中的两个数组中获取唯一值

来自分类Dev

比较两个数组并删除唯一值

来自分类Dev

通过比较两个数组获得唯一值

来自分类Dev

如何合并唯一的这两个数组?

来自分类Dev

在唯一 ID 上合并两个数组

来自分类Dev

从基于两个键的对象的两个数组中查找唯一值,即JavaScript中的from和to

来自分类Dev

如何从PHP的单个数组中提取3个唯一值?

来自分类Dev

JS:从多个数组元素中提取唯一字符串

来自分类Dev

从PHP中的另一个数组中提取一个数组

来自分类Dev

无法使用array_map从两个数组中提取结果

来自分类Dev

将一个数组的负值和正值提取到两个单独的数组中,

来自分类Dev

在一个数组中合并两个具有索引的数组,在另一个perl中合并两个值

来自分类Dev

perl 将一个数组拆分为两个数组

来自分类Dev

在R中,如果站点和日期在两个数据框中匹配,则从第一个数据框中提取行值

来自分类Dev

在打字稿中合并两个数组后如何获得唯一元素?

来自分类Dev

根据其他两个数据帧的唯一值提取数据帧的子集

来自分类Dev

基于同一ID列从两个数据帧中提取值

来自分类Dev

KnockOut.JS比较两个数组并从第二个数组中删除唯一值

Related 相关文章

  1. 1

    如何统一间隔?

  2. 2

    如何从Perl中的两个数组中获取唯一元素

  3. 3

    如何从Perl中的两个数组中获取唯一元素

  4. 4

    从两个数组中查找唯一项

  5. 5

    如果数据帧的值属于同一间隔,则用间隔的上限替换数据帧的值

  6. 6

    如果数据帧的值属于同一间隔,则用间隔的上限替换数据帧的值

  7. 7

    如果数据帧的值属于同一间隔,则用间隔的上限替换数据帧的值

  8. 8

    Java-按四分之一间隔四舍五入

  9. 9

    如何从 Scala 密集向量中提取两个数组

  10. 10

    Perl中两个数组的比较

  11. 11

    在MongoDB中的一个文档中的两个数组中获取唯一值

  12. 12

    在MongoDB的一个文档中的两个数组中获取唯一值

  13. 13

    比较两个数组并删除唯一值

  14. 14

    通过比较两个数组获得唯一值

  15. 15

    如何合并唯一的这两个数组?

  16. 16

    在唯一 ID 上合并两个数组

  17. 17

    从基于两个键的对象的两个数组中查找唯一值,即JavaScript中的from和to

  18. 18

    如何从PHP的单个数组中提取3个唯一值?

  19. 19

    JS:从多个数组元素中提取唯一字符串

  20. 20

    从PHP中的另一个数组中提取一个数组

  21. 21

    无法使用array_map从两个数组中提取结果

  22. 22

    将一个数组的负值和正值提取到两个单独的数组中,

  23. 23

    在一个数组中合并两个具有索引的数组,在另一个perl中合并两个值

  24. 24

    perl 将一个数组拆分为两个数组

  25. 25

    在R中,如果站点和日期在两个数据框中匹配,则从第一个数据框中提取行值

  26. 26

    在打字稿中合并两个数组后如何获得唯一元素?

  27. 27

    根据其他两个数据帧的唯一值提取数据帧的子集

  28. 28

    基于同一ID列从两个数据帧中提取值

  29. 29

    KnockOut.JS比较两个数组并从第二个数组中删除唯一值

热门标签

归档