Quantcast
Channel: 次郎宗光の本拠地@WordPress
Viewing all articles
Browse latest Browse all 350

「賢者の噴水は俺たちに任せろ」の周辺ツール

$
0
0

※この記事は,ルネサンス以前に書かれた記事です.ルネサンス後に通用する場合は十分ご注意ください※

GQ3vH2の開発準備を進めております.

で,とりあえず,次回表(解法テーブル)のチェックツールを書いてみました.まだ外枠だけですけどね.

全256通りの組み合わせについて,一手試しただけのコードです.これを一手,二手・・・とループを回すように書き換えれば出来上がりです.

でも,まあ,外枠できたし,もう眠いから今日はここまで.

ちなみに,言語はperlです.perlがお嫌いな方は,rubyでもphpでもお好きな言語に移植して下さい.

ちなみに,次郎の開発環境はStrawberry Perl 5.12.2.0です.一時期Active Perlを使っていたこともありましたが,Strawberry Perlのサイトを見てからStrawberry Perlに乗り換えました.すっごく素敵で美味しそうなサイトですので,まだ見たことない人は,ぜひご覧ください.

つか,普段はperlすら使わないで,sedとgawkで足りてます.勉強しろよ>俺

現在の処理時間は,ストップウォッチで計ったわけじゃありませんが,0.5秒未満でしょうか.全部の処理を書き足しても,3秒を超えることはないかな?って具合です.やっつけで書いたコードですが,手を加えて「上手なプログラム」にする必要もなさそうですね.

ではおやすみなさい.

my %nexthand, @ans;
#次回表の読み込みopen(IN,"< nexthand.txt");
while(my $line = ) {
    chomp($line);
    my ($pat,$hand)=split(/,/,$line,2);
    $pat =~ s/-//g;
    $nexthand{$pat}=$hand;
}
#全解答の作成
for ($i=1;$i<5;$i++) {
    for ($j=1;$j<5;$j++) {
        for ($k=1;$k<5;$k++) {
            for ($l=1;$l<5;$l++) {
                push(@ans,"$i$j$k$l");
            }
        }
    }
}
foreach ( @ans ) {
    # まだ一手のみ    $pat='p';
    $nh=&much($pat,$_);
    $pat="$pat$nh";
    print "$pat,$_\n";
}
exit;
sub much() {
    #パターンから配置を取得し,解と比較してヒントを得る.
    my ($pat,$ans)=@_;
    my $hit=0, $blow=0, $nh=$nexthand{$pat};
    for (0..3) {
        if ( substr($ans,$_,1) eq substr($nh,$_,1) ) {
            $hit++;
            #ブローで重複カウントしないように,ヒットでカウントしたものを
            #無関係の文字に置き換える
            substr($ans,$_,1,'8');
            substr($nh,$_,1,'9');
        }
    }
    for ($i=0;$i<4;$i++) {
        for ($j=0;$j<4;$j++) {
            if ( substr($ans,$i,1) eq substr($nh,$j,1) ) {
                $blow++;
                last;
            }
        }
    }
    return "$hit$blow";
}

Viewing all articles
Browse latest Browse all 350

Trending Articles