allak

test_perl_5.pl

May 8th, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.10 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use Data::Dumper;
  6.  
  7. my @sequenze;
  8.  
  9. for my $a1 (0 .. 2) {
  10.         for my $a2 (0 .. 2) {
  11.                 for my $a3 (0 .. 2) {
  12.                         for my $a4 (0 .. 2) {
  13.                                 for my $a5 (0 .. 2) {
  14.                                         for my $a6 (0 .. 2) {
  15.                                                 for my $a7 (0 .. 2) {
  16.                                                         for my $a8 (0 .. 2) {
  17.                                                                 my $seq = [ $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8 ];
  18.                                                                 push @sequenze, $seq;
  19.                                                         }
  20.                                                 }
  21.                                         }
  22.                                 }
  23.                         }
  24.                 }
  25.         }
  26. }
  27.  
  28. my @sequenze2;
  29.  
  30. for my $seq (@sequenze) {
  31.         my @seq2 = (1);
  32.  
  33.         for my $i (0 .. 7) {
  34.                 next_elem( $i, \@seq2, $seq);
  35.         }
  36.  
  37.         my @seq3 = @seq2;
  38.  
  39.         my $tot = shift @seq2;
  40.  
  41.         while (my $elem = shift @seq2) {
  42.                 if ($elem eq '+') {
  43.                         $tot += shift @seq2;
  44.                 } elsif ($elem eq '-') {
  45.                         $tot -= shift @seq2;
  46.                 } else {
  47.                         print 'ERRORE ';
  48.                 }
  49.         }
  50.  
  51.         next unless $tot == 100;
  52.  
  53.         push @seq3, '=', $tot;
  54.         my $buf = join '', @seq3;
  55.         print $buf, "\n";
  56. }
  57.  
  58.  
  59. sub next_elem
  60. {
  61.         my ($i, $seq2, $seq) = @_;
  62.  
  63.         my $nextnum = $i+2;
  64.         my $concat;
  65.  
  66.         if ($seq->[$i] == 0) {
  67.                 push @$seq2, '+';
  68.         } elsif ($seq->[$i] == 1) {
  69.                 push @$seq2, '-';
  70.         } else {
  71.                 $concat = 1;
  72.         }
  73.  
  74.         if ($concat) {
  75.                 my $num = pop @$seq2;
  76.                 $num = $num*10 + $nextnum;
  77.                 push @$seq2, $num;
  78.         } else {
  79.                 push @$seq2, $nextnum;
  80.         }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment