« さいこー | main | 普通の日記 »

5分スクリプト その2

"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);
}

トラックバック

このエントリーのトラックバックURL:
http://polog.org/mt-tb.cgi/201

コメント (4)

ホントだ難しい。
分数使わなきゃいけないなんて。

1199とかもそうだけど、知らないと解けないよね

がーん、、、
私が一生懸命考えてプログラムしてたのに、、。

そういや一緒にアルゴリズム考えたね笑
まあ見りゃ分かると思うけど、これはとにかく早くコーディングを終えて回答を出したかったので、全部ランダムです。すげえ汚い解き方 :D
ちなみに"4つの全部違う数字で10を作る"って言うのは昔もの凄く暇だった時に全通り正答を出していたので、答えが存在するのは分かってた。そう言うバックグラウンドでこのプログラムな訳です。

コメントを投稿

Powered by
Movable Type 3.34