リロード  新規  編集  凍結  差分  添付  トップ  一覧  単語検索  最終更新  バックアップ  ヘルプ 

メモ表作成&発言数解析

print "<html><head><style>td{font-size:x-small;}</style></head><table><tr><td>\n";
@data = <DATA>;
chomp @data;
$i = $#data;
while($i-- > 0){
	last if $data[$i] eq 'ブラウザの更新ボタンは押さないでください';
}
while(1){
#	last if $data =~ m/◆ アナ\x83\^の情報/;
	$i++;
	last if $data[$i] =~ m/◆ 出来事/;
	last if $data[$i] =~ m/◆ 行動設定/;
	next unless $data[$i] =~ m/ [\t ](.*)/;
	next if $1 eq '';
	$who = $1;
	$id++;
	$who[$id] = $1;
	$id{$who} = $id;
	$tmp1 .= "占CO\x81\@$1さん○<br />\n";
	$tmp2 .= "_/$1\x81\@<br />\n";
	unless($id % 5){
		$tmp1 .= "<br />\n";
		$tmp2 .= "<br />\n";
	}

	$i++;
	$data[$i] =~ m/\x81\x69(.*)\x81\x6a/;
	if($1 eq '生存中'){
#		print STDERR "【$1/$data[$i]】\n";
		$say{$who} = 0;
		$time{$who} = 0;
	}else{
#		print STDERR "■$1/$data[$i]■\n";
	}
}
&print_menbers();
$who='?';
while($i++ <= $#data){
	if($data[$i] =~ /^◆(.*?)さん\t「(.*)」$/){
		$who = $1;
		$time{$who}++;
		$say{$who} += length $2;
		$text{$who} .= "$2\n";
	}elsif($data[$i] =~ /^◆(.*?)さん\t「(.*)/){
		$who = $1;
		$time{$who}++;
		$say{$who} += length $2;
		$text{$who} .= "$2\n";
	}elsif($data[$i] =~ m#^\s*\d+日目の朝となりました。\(\d+/\d+/\d+ \d+:\d+:\d+\)#){
		$say{$who} -= 3;
		last;
	}elsif($data[$i] eq ' 戻る '){
		$say{$who} -= 3;
		last;
	}else{
		if($data[$i+1] =~ /^◆(.*?)さん\t「/ and $data[$i] =~ /(.*)」/){
			$say{$who} += length $1;
			$text{$who} .= "$1\n";
		}else{
			$say{$who} += length $data[$i];
			$text{$who} .= "$data[$i]";
		}
	}
}
delete $say{'?'},$time{'?'},$text{'?'};

foreach$id(1..$#who){
	$who = $who[$id];
	print STDOUT "◆$say{$who}/$time{$who}=".int($time{$who} and $say{$who}/$time{$who}).".$who<br />";
	$kansute .= "  $who" if $time{$who} == 0;
	$ohasute .= "  $who" if $time{$who} == 1;
	$other .= "  $who" if $time{$who} > 2;
	print "<br />\n" unless $id % 5;
}
print STDOUT "</td></tr></table>\n";
#print STDOUT "\n寡黙順  ", (join '  ', reverse @who), "◆完ステ◆$kansute", "◆おはステ◆$ohasute", "◆他◆\n";
#print STDOUT "\n寡黙順  ", "◆完ステ◆$kansute ◆おはステ◆$ohasute ◆他◆\n\n";
foreach$id(1..$#who){
	print "<h5>$id $who[$id]</h5>\n<pre>$text{$who[$id]}</pre>";
}
sub print_menbers{
	print STDOUT "$tmp1</td><td>";
	print STDOUT "$tmp2</td><td>";
}
print STDOUT "</ul></html>\n";
__DATA__

投票分析

$wolves = 3;
@data = <DATA>;
chomp @data;
$i = $#data;
open TEST, ">./test.txt";
while($i-- > 0){
	last if $data[$i] eq '';
}

while(1){
	$i++;
#	last until($data =~ /(.*?)さん \d 票 投票先 → (.*)さん/;
#	last until($data[$i] =~ /^(.*?)さん \d+ \x95\[ 投\x95\[先 → (.*)さん/);
	last until($data[$i] =~ /^(.*?)さん\t\d+ \x95\[\t投\x95\[先 → (.*)さん/);
	($a, $b) = ($1, $2);
	$gyaku{$b} .= ($hyou{$a} eq '' ? "$a  ": "■$a  ") if $hyou{$a} ne $b;
	$hyou{$a} = $b;
	$time{$b}++;
	$flag{$a}->{$b} = $flag{$b}->{$a} = 1;
#	push @all, $a;
}
@all = sort keys %hyou;
@who = sort {($time{$b} <=> $time{$a}) or ($hyou{$a} cmp $hyou{$b})} keys %gyaku;
map{print STDOUT "▼$_  ←  $gyaku{$_}<br />\n"}@who;

sub think{
	my $number;
	my $commer;
	my $wolf;
	my @all;
	my $select;
	my @select;
	($number, $commer, $wolf, @all) = @_;
	while(-1 < $#all){
		my $select = shift @all;
		unless($flag{$commer}->{$select}){
			push @select, $select;
		}
	}
#	print STDOUT "\ns/@select";
	while(-1 < $#select){
		my $select = (shift @select);
		unless($flag{$commer}->{$select}){
			if(0 < $number){
				&think($number - 1, $select, [@$wolf, $select], @select);
			}else{
#				print TEST "\n@{$wolf} $select";
				map{$wolf{$_}++;}(@$wolf, $select);
			}
		}
	}
}

&think($wolves - 1, '', '', @all); print STDOUT "\n";
map{print STDOUT "◆$wolf{$_} $_"} sort {$wolf{$b} <=> $wolf{$a}}@all;
print STDOUT "\n";exit;
__DATA__

投票分析の解説

$wolvesに人狼の残頭数、__DATA__以降にグレラン投票の結果をぶち込むと、「人狼が身内票を入れていないという仮定で」人狼の組み合わせが何通り当てはまるか計算します。

例えば/27 トマト/15 メロン/と出力されたとしましょう。すると、トマトが人狼である組み合わせは27通り、メロンが人狼である組み合わせは15通りと推測されます。ですから、メロンに投票するよりはトマトに投票したほうがいいのでは…ということになります。

自分に無残な姿や共有者など、確定白の人はグレランから除いていった方が、精度は高くなっていきます。また対抗同士が人狼の組み合わせも殆ど見られませんから、仮想対抗票を入れるのもいいです。

弱点は3つ、身内票、人狼の残頭数の見誤り、本当に白い村人を人狼認定しやすいこと。まあどんな道具も振り回されすぎてはいけないということですね。


リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team[外部リンク]. License is GPL[外部リンク].
Based on "PukiWiki" 1.3 by yu-ji[外部リンク] Powered by PHP 5.3.3