aboutsummaryrefslogtreecommitdiff
path: root/challenge-291/dave-jacoby/perl/ch-1.pl
blob: b34a993f2087e454eca22000e3158455dca46094 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env perl

use strict;
use warnings;
use experimental qw{ say state postderef signatures };

use List::Util qw{ sum0 };

my @examples = (

    [ 2, 3,  -1, 8, 4 ],
    [ 1, -1, 4 ],
    [ 2, 5 ],
);

# [ 1, 1, 0 ] is false, because 1 isn't 2 * 0
# [ 1, 1, 0, 0 ] is true, because 0 is 2 * 0

for my $example (@examples) {
    my $output = middle_index( $example->@* );
    my $input  = join ', ', $example->@*;
    say <<"END";
    Input:  \$ints = ($input)
    Output: $output
END
}

sub middle_index (@array) {
    my $l = -1 + scalar @array;
    for my $i ( 1 .. $l ) {
        my $suml = sum0 @array[ 0 .. $i - 1 ];
        my $sumr = sum0 @array[ $i + 1 .. $l ];
        return $i if $suml eq $sumr;
    }
    return -1;
}