Advertisement
Joker0day

Math Calcul

Sep 4th, 2019
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.77 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use integer;
  3. use strict;
  4.  
  5. # k = 96666, za okolo 1 min s -O2, 2 min plain na C
  6. my $k = $ARGV[0] or die "usage: $0 number\n";
  7.  
  8. my @sig = qw( * + - );
  9.  
  10. my $i = 2;
  11. while( $i++ )
  12.   {
  13.   my @op = ( 0 );
  14.   my $t = 0;
  15.   while(4)
  16.     {
  17.     $t++;
  18.     inc_ops( \@op, $i - 1 );
  19.     last if $op[ $i - 1 ] > 0;
  20.     my $ev = '1';
  21.     $ev .= $sig[ $op[ $_ - 2 ] ] . $_ for( 2 .. $i );
  22.     my $res;
  23.     eval "\$res=$ev";
  24.     #print "ev: $ev=$res\n";
  25.     die "FOUND($t): $ev==$k\n" if $res == $k;
  26.     }
  27.   }
  28.  
  29. sub inc_ops
  30. {
  31.   my $ar = $_[0];
  32.   my $c = 1;
  33.   for my $i ( 0 .. $_[1] )
  34.     {
  35.     $ar->[$i] = $ar->[$i] + $c;
  36.     if( $ar->[$i] > 2 )
  37.       {
  38.       $c = 1;
  39.       $ar->[$i] = 0;
  40.       }
  41.     else
  42.       {
  43.       $c = 0;
  44.       }  
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement