package part1;

use 5.20.0;
use warnings;

use List::AllUtils qw/ sum /;
use Range::Merge qw/ merge /;

use experimental qw/ signatures postderef /;

sub numbers_out_of_range($input) {
    my $ranges = merge([ map { [ split '-' ] } $input =~ /(\d+-\d+)/g]);

    $input =~ /nearby tickets:(.*)/s;
    my @tickets = $1 =~ /(\d+)/g;

    return grep {
        not( $_ >= $ranges->[0][0] and $_ <= $ranges->[0][1])
    } @tickets;

}

sub solution($input) {
    return sum numbers_out_of_range($input);
}

1;