Skip to content

Instantly share code, notes, and snippets.

@sng2c
Last active January 4, 2016 16:08
Show Gist options
  • Save sng2c/8645056 to your computer and use it in GitHub Desktop.
Save sng2c/8645056 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use 5.010;
use strict;
use List::MoreUtils qw/zip/;
use Math::Base::Convert qw(cnv);
use Data::Dumper;
my $res = 45;
my @nums = qw(9 2 11 13 6 3);
my $max = 4 ** (@nums-1);
for( my $i=0; $i<$max; $i++ ){
my $p = cnv($i, 10,[qw(+ - * /)]);
$p = sprintf('%'.(@nums-1).'s',$p);
$p =~ s/ /+/g;
my @p = split(//,$p);
my $z = join(' ',zip(@nums,@p));
if( eval($z)==$res ){
say $z . ' = ' . $res;
}
}
#!/usr/bin/env perl
use 5.010;
use strict;
use List::MoreUtils qw/zip/;
use Math::Base::Convert qw(cnv);
use Data::Dumper;
my $res = 45;
my @nums = qw(9 2 11 13 6 3) ;
my $max = 4 ** (@nums-1);
my $start = 0;
my $end = $max;
my $min = 100;
my $i=0;
for( $i = 0; $i<$max-$min; $i+=$min ){
if( !fork ){
_find($res,\@nums,$i,$i+$min);
exit;
}
}
_find($res,\@nums,$i, $max);
wait;
sub _find{
my $res = shift;
my $nums = shift;
my @nums = @{$nums};
my $start = shift;
my $end = shift;
for( my $i=$start; $i<$end; $i++ ){
my $p = cnv($i, 10,[qw(+ - * /)]);
$p = sprintf('%'.(@nums-1).'s',$p);
$p =~ s/ /+/g;
my @p = split(//,$p);
my $z = join(' ',zip(@nums,@p));
if( eval($z)==$res ){
say $z . ' = ' . $res;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment