#!/usr/bin/perl

#
# brute force your way to the top of Google's resume pile.
# i'm sure this isn't the elegant solution they were looking for.
# so is my mathematician girlfriend.
#

my @snacks = (917, 134, 1569, 1649, 1431, 1622, 233, 2094, 1072, 915, 1922, 2437, 2714, 
              2491, 1886, 2812, 426, 1673, 94, 2139, 2569, 496, 2249, 1553, 1580);

my @keys = (16, 23, 61, 7, 7, 7, 13, 13, 13, 19, 19, 21, 21, 27, 56, 56, 73, 77, 97, 11, 37, 41);

# formula A x B + C - D + E

my $nsnacks = ($#snacks + 1);
my ($num, $snf) = (0, 0);

print "Searching for snacks...\n";

for (my $i = 0; $i <= $#keys; $i++) {
    for (my $i2 = 0; $i2 <= $#keys; $i2++) {
        next if $i2 == $i;
        for (my $i3 = 0; $i3 <= $#keys; $i3++) {
            next if $i3 == $i2 or $i3 == $i;
            for (my $i4 = 0; $i4 <= $#keys; $i4++) {
                next if $i4 == $i3 or $i4 == $i2 or $i4 == $i;
                for (my $i5 = 0; $i5 <= $#keys; $i5++) {
                    next if $i5 == $i4 or $i5 == $i3 or $i5 == $i2 or $i5 == $i;
                    my $res = $keys[$i] * $keys[$i2] + $keys[$i3] - $keys[$i4] + $keys[$i5];
                    my $ci = 0;
                    foreach my $snack (@snacks) {
                        if ($res == $snack) {
                            print "$keys[$i] * $keys[$i2] + $keys[$i3] - $keys[$i4] + $keys[$i5] matched $snack!\n";
                            @snacks = remove_index($ci, @snacks);
                            ++$snf;
                        }
                        ++$ci;
                    }
                    ++$num;
                }
            }
        }
    }
}

print "Found $snf of $nsnacks snacks.\n";
print "Size Of Haystack: $num\n";
print "Remaining snack: @snacks\n";

sub remove_index {
    my ($index, @array) = @_;
    @array = (@array[0..($index - 1)], @array[($index + 1)..$#array]);
}