※この記事は,ルネサンス以前に書かれた記事です.ルネサンス後に通用する場合は十分ご注意ください※
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"; }