このブログを検索

2013/04/07

3メンツの抜き出し



13枚の配牌から3つのメンツを選ぶところまで、やっとできた。

イーペーコー形も判定できる。

アタマを選ぶとか、テンパイしているかの判定までは、まだ。

(2013/04/09 だいぶボロがある。今修正中)

my @array = qw /1 1 2 3 3 4 5 6 7 7 8 9 9/;

my @found;
my %found;
my $count = 0;

print "haipai:@array\n";

&moura(\@array);

foreach $key(sort keys(%found)){
    print "$key\n";
}



sub moura{
    my ($array_ref) = @_;
    my ($i,$j,$k);

    my @temp = ();
    for(@$array_ref){
        if($_>0){
            push @temp,$_;
        }
    }
    @$array_ref = @temp;

    if($count > 2){
        if($#found > 1) {
            $found{join("", sort @found)}++;
        }
        @found = ();
        $count = 0;
    }

    for ($i=0;$i<=$#$array_ref;$i++){
        for ($j=$i+1;$j<=$#$array_ref;$j++){
            for ($k=$j+1;$k<=$#$array_ref;$k++){
                if($array_ref->[$i] + 1 == $array_ref->[$j] && $array_ref->[$i] + 2 == $array_ref->[$k]){
                    push @found, $array_ref->[$i].$array_ref->[$j].$array_ref->[$k];
                }elsif($array_ref->[$i] == $array_ref->[$j] && $array_ref->[$i] == $array_ref->[$k]){
                    push @found, $array_ref->[$i].$array_ref->[$j].$array_ref->[$k];
                }
                $count++;
                @array2 = @$array_ref;
                $array2[$i] = 0;
                $array2[$j] = 0;
                $array2[$k] = 0;
                &moura(\@array2);
            }
         }
    }

}