## 人狼知能開発で投票正答率を算出するプログラムを書いてみました
人狼に投票できてたら正解っていう感じの算出方法です
import multiprocessing
import glob
import os
from datetime import datetime
def real_vote_rate(agent,savefile):
vote_num = 0
hit_num = 0
# だいたいログは100件なので
for k in range(100):
# logフォルダ内のデータから正答率を出す
try:
f = open('./log/'+str(k).zfill(3)+'.log') #ファイル読み込み
except:
continue
lines =f.readlines()# 1行毎にファイル終端まで全て読む(改行文字も含まれる)
f.close()
# lines: リスト。要素は1行の文字列データ
# 投票相手
vote = 0
# 自分のid
selfid = 0
# 人狼リスト
wolf_list = []
# トリガー
torriger = 0
for line in lines:
newLine = line.replace('\n','').replace(' ', ',').split(',')
if int(newLine[0]) == 0 and newLine[1] == 'status':
# 人狼リスト作成
if newLine[3] == 'WEREWOLF':
wolf_list.append(newLine[2])
## 自分のid
if newLine[5] == agent:
selfid = newLine[2]
if newLine[5] == agent and (newLine[3] == "WEREWOLF" or newLine[3] == "POSSESSED"):
break
if newLine[1] == 'vote' and newLine[2] == selfid:
vote_num += 1
vote = newLine[3]
if vote in wolf_list:
hit_num += 1
hitracio = (hit_num / vote_num )* 100
text = '総投票数は' + str(vote_num) + '回' + '\n' + '正解数は' + str(hit_num) + '回' + '\n' + '投票正解率は' + str('{:.1f}'.format(hitracio)) + '%' + '\n'
file = open(savefile, 'a') #追加書き込みモードでオープン
file.writelines(text)
file.close()
agent = 'hogehoge' # hogehogeを自分のAgent名に変更
# マルチプロセス処理
if __name__ == '__main__':
now = datetime.now()
savefile = '{0:%Y%m%d-%H:%M:%s}w_rate.txt'.format(now)
jobs = []
p = multiprocessing.Process(target=real_vote_rate(agent,savefile))
jobs.append(p)
p.start()