Edward 發表於 2017-6-21 23:08:26

Perl九宮格計算程式


use strict;
my @num = (1, 2, 3, 4, 5, 6, 7, 8, 9);
my @list = ();
my $n=0;
my $a1;
my $a2;
my $a3;
my $a4;
my $a5;
my $a6;
my $a7;
my $a8;
comb(\@list,\@num);

sub comb {
    # list all the combination of a list
    my ($sel, $bag) = @_;
    if (@$bag == 1) {
      # $n++;
      # print $n." | ";
      # print @$sel, @$bag, "\n";
        $a1=@$sel+@$sel+@$sel;
        $a2=@$sel+@$sel+@$sel;
        $a3=@$sel+@$sel+@$bag;
        $a4=@$sel+@$sel+@$sel;
        $a5=@$sel+@$sel+@$sel;
        $a6=@$sel+@$sel+@$bag;
        $a7=@$sel+@$sel+@$bag;
        $a8=@$sel+@$sel+@$sel;
        if($a1==$a2){if($a2==$a3){if($a3==$a4){if($a4==$a5){if($a5==$a6){if($a6==$a7){if($a7==$a8){
        $n++;
        print "\t",@$sel,", ",@$sel,", ",@$sel,"\n";
        print $n,"\t",@$sel,", ",@$sel,", ",@$sel,"\n";
        print "\t",@$sel,", ",@$sel,", ",@$bag,"\n";
        print "---------------\n";
        }}}}}}}
        # print $a1,", ",$a2,", ",$a3;
        # print @$sel;
        # print @$sel;
        # print @$sel;
        # print @$sel;
        # print @$sel;
        # print @$sel;
        # print @$sel;
        # print @$sel;
        # print @$bag;
        # print "\n";
      return;
    }
    for (my $i = 0; $i < @$bag; $i++) {
      my @tail = @$bag;
      my @pre = (@$sel, splice(@tail, $i, 1));
      comb(\@pre, \@tail);
    }
}


頁: [1]
查看完整版本: Perl九宮格計算程式