"4つの数で10を作る"って言うのを解決するスクリプト
車で走っていたら、"34-78"と言うナンバーの車が居たせいで作成されたもの←むずいぜ
ちなみにコードしている内にはっとりが解きました。ファック。/usr/local/binに放り込んだからにはもう負けねえ
use List::Util qw(shuffle);
my @ezs = qw(+ - * /);
my @kz_base = split //, shift @ARGV;
my $ans = 0;
my @curl = ();
my @kz = ();
my $base_num = scalar(@kz_base);
while(1){
@kz = shuffle @kz_base;
@codes = ();
@curl = qw{( )};
push @codes, $kz[0];
for(1 .. $base_num - 1){
if(!int(rand()*$base_num) && $curl[0] eq ')'){
push @codes, shift(@curl);
@curl = qw{( )};
}
push @codes, $ezs[int(rand()*4)];
if(!int(rand()*$base_num) && $curl[0] eq '('){
push @codes, shift(@curl);
}
push @codes, $kz[$_];
}
if($curl[0] eq ')'){
push @codes, shift(@curl);
}
print join ' ', @codes, " = ";
eval('$ans = ' . qq{@codes} . ';');
print $ans, "\n";
last if($ans == 10);
}
コメント (4)
ホントだ難しい。
分数使わなきゃいけないなんて。
投稿者: タスク | 2006年09月28日 06:09
1199とかもそうだけど、知らないと解けないよね
投稿者: negipo | 2006年09月28日 11:42
がーん、、、
私が一生懸命考えてプログラムしてたのに、、。
投稿者: Yukino | 2006年10月03日 18:29
そういや一緒にアルゴリズム考えたね笑
まあ見りゃ分かると思うけど、これはとにかく早くコーディングを終えて回答を出したかったので、全部ランダムです。すげえ汚い解き方 :D
ちなみに"4つの全部違う数字で10を作る"って言うのは昔もの凄く暇だった時に全通り正答を出していたので、答えが存在するのは分かってた。そう言うバックグラウンドでこのプログラムな訳です。
投稿者: negipo | 2006年10月03日 21:48