#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use Syntax::Construct qw{ // }; my ($START, $END, $SIZE) = (1, 1524, 150); my %borders; while (my $line = ) { my ($pos, $from, $to) = split / |\.\./, $line; if ($START == $from && $END == $to) { $borders{$pos}++; $borders{ $pos + $SIZE + 1 }--; } } my ($sum, $step) = (0, 0); for my $i ($START .. $END) { $step += $borders{$i} // 0; $sum++ if $step; } say $sum; __DATA__ 46 1..1524 832 1..1524 1008 1..1524 1407 1..1524 2360 2052..3260 2967 2052..3260 403 1..1524 800 1..1524 2986 2052..3260 3170 2052..3260