#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
my @queue = '123456789';
while (@queue) {
$_ = shift @queue;
say if eval == 100;
while ( /\d+?/g) {
next if (!$' || $' =~ /\+|\-/);
push @queue,("$`$&+$'","$`$&-$'");
}
}
####
123-45-67+89
123+4-5+67-89
123+45-67+8-9
1+2+34-5+67-8+9
1+23-4+5+6+78-9
1+23-4+56+7+8+9
12+3+4+5-6-7+89
12+3-4+5+67+8+9
12-3-4+5-6+7+89
123-4-5-6-7+8-9
1+2+3-4+5+6+78+9
####
#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
my @queue = '123456789';
my %seen;
while (@queue) {
local $_ = shift @queue;
next if (exists $seen{$_});
$seen{$_}++;
say if eval == 100;
while (/\d+?/g) {
my ($pre,$match,$post) = ($`,$&,$');
push @queue, "$pre$match+$post" unless (!$post || $post =~ /[+-]/);
push @queue, "$pre-$match$post" unless ($pre =~ /[-+]$/ );
}
}