jug7.com
[ home / cgi / juggler / column / diary / bbs / link / welcome ]
source : 2027 JAC中 設定推測
#!/usr/bin/perl
# 2027 JAC中 設定推測(暫定版)
$cginame = '2027_jac.cgi';
$title = '2027 JAC中 設定推測 (暫定版)';
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read (STDIN, $input, $ENV{'CONTENT_LENGTH'});
}
foreach $str (split(/&/,$input)) {
($name,$value) = split(/=/, $str);
push(@input, $value);
}
($play, $sister, $master, $penta) = @input;
print "Content-Type: text/html\n\n";
# ヘッダとフォームの表示
print <<"__ HTML __";
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html lang='ja'>
<head>
<meta http-equiv='Content-Type' content="text/html; charset=shift_jis">
<title>jug7.com - cgi $title</title>
<style type="text/css"> <!--
A:hover {color:#ff0000;}
--></style>
</head>
<body text='#000000' bgcolor='#ffffff' link='#0000ff' alink='#ff0000' vlink='#0000cc'>
<hr>
<b>$title</b><br>
<form action='$cginame' method='POST'>
JAC 回数 <input type='text' size=6 name='play' maxlength=5 value='$play'><br>
鳴海姉妹 <input type='text' size=3 name='sister' maxlength=4 value='$sister'><br>
マスター <input type='text' size=3 name='master' maxlength=4 value='$master'><br>
ペンタ <input type='text' size=3 name='penta' maxlength=4 value='$penta'><br>
<br>
考慮しない場合は空欄。ゼロなら 0 と記入。<br>
全設定が均等に設置という仮定のもとに計算。<br>
<input type='submit' value="開始">
</form>
__ HTML __
# エラーチェックとGET送信
if ($ENV{'REQUEST_METHOD'} ne 'POST') {
print '<a href=\'2027_jac_memo.html\'>memo</a> <a href=\'2027_jac.html\'>source</a> <a href=\'../index.html\'>top へ戻る</a>',"\n",'</body></html>';
exit;
}
if($play > 19999) {
print '<center><font size=4 color=\'red\'><b>ERROR ! (プレイ数制限)</b></font></center>';
print '<a href=\'2027_jac_memo.html\'>memo</a> <a href=\'2027_jac.html\'>source</a> <a href=\'../index.html\'>top へ戻る</a>',"\n",'</body></html>';
exit;
}
# 2027_JAC data 1/x 雑誌での実戦データ(暫定版)
@sister = ('14.085', '14.085', '9.174', '14.085', '6.667', '8.475');
@master = ('28.571', '14.085', '13.699', '6.993', '8.850', '7.246');
@penta = ('6.211', '11.236', '9.174', '18.519', '10.989', '31.250');
#------------
# 計算開始
#------------
$sis_prob = &point(($play/$sister), 3) if $sister;
$mas_prob = &point(($play/$master), 3) if $master;
$pen_prob = &point(($play/$penta), 3) if $penta;
for ($i=0; $i<=5; $i++) {
$p_total = 1;
if ($sister ne '') {
$p_sister = (1/$sister[$i])**$sister * (1-1/$sister[$i])**($play-$sister); $p_total *= $p_sister;
}
if ($master ne '') {
$p_master = (1/$master[$i])**$master * (1-1/$master[$i])**($play-$master); $p_total *= $p_master;
}
if ($penta ne '') {
$p_penta = (1/$penta[$i])**$penta * (1-1/$penta[$i])**($play-$penta); $p_total *= $p_penta;
}
$p_total2 += $p_total;
push(@p_total, $p_total);
}
# 百分率にする
for ($i=0; $i<=5; $i++) {
$per = &point(($p_total[$i]/$p_total2*100), 2) if $p_total2;
push(@per, $per);
}
# 結果の表示
for ($i=1; $i<=6; $i++) { print "設 $i -> $per[$i-1] %<br>\n"; }
if ($check) { print '# (評価不可能)',"\n"; }
print '<a href=\'2027_jac_memo.html\'>memo</a> <a href=\'2027_jac.html\'>source</a> <a href=\'../index.html\'>top へ戻る</a><hr>',"\n",'</body></html>';
exit;
# 少数を四捨五入して指定の桁にする
sub point {
my($value, $fig, $x);
($value, $fig) = @_;
$value = int($value * (10 ** $fig) + 0.5) / (10 ** $fig);
if ($value =~ /(\d+)\.(\d+)/) { $x = $2; }
elsif ($value !~ /\./) { $x =''; $value .= '.'; }
$value = $value.'0' x ( $fig - length($x) );
return $value;
}
[ home / cgi / juggler / column / diary / bbs / link / welcome ]