a 11-23
b 33-39
c 40-45
d 48-58
####
1-34
35-39
40-42
43-49
51-59
62-90
####
a 11-23
b 33-34
b 35-39
c 40-42
c 43-45
d 48-49
d 51-58
####
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
use constant {
FROM => 0,
TO => 1,
NAME => 2,
};
my @ranges;
open my $F1, '<', shift or die $!;
while (<$F1>) {
my ($name, $range) = split;
my ($from, $to) = split /-/, $range;
push @ranges, [$from, $to, $name];
}
my $range_idx = 0;
open my $F2, '<',shift or die $!;
while (<$F2>) {
chomp;
my ($from, $to) = split /-/;
my $end;
do {
++$range_idx until $range_idx > $#ranges
|| $ranges[$range_idx][FROM] <= $to
&& $ranges[$range_idx][TO] >= $from;
last if $range_idx > $#ranges;
my $start = $from > $ranges[$range_idx][FROM]
? $from
: $ranges[$range_idx][FROM];
$end = $to > $ranges[$range_idx][TO]
? $ranges[$range_idx][TO]
: $to;
say $ranges[$range_idx][NAME], " $start-$end";
} while $to > ($from = 1 + $end);
}
####
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord
}map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,