結果
問題 | No.355 数当てゲーム(2) |
ユーザー |
|
提出日時 | 2016-04-01 23:19:20 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 1,780 ms / 2,000 ms |
コード長 | 1,368 bytes |
コンパイル時間 | 1,047 ms |
コンパイル使用メモリ | 76,436 KB |
実行使用メモリ | 114,176 KB |
平均クエリ数 | 5.31 |
最終ジャッジ日時 | 2024-07-16 09:15:16 |
合計ジャッジ時間 | 52,608 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 52 |
ソースコード
#!/usr/bin/pythonfrom collections import Counterimport itertools,randomdigits=4#mode='mastermind'mode='hitandblow'def hit_and_blow(a,b):hit=sum(a[i]==b[i] for i in range(digits))if mode=='mastermind':#mastermind allows duplication (slow)ca=Counter(a)cb=Counter(b)blow=sum(min(0 if k not in cb else cb[k],v) for k,v in ca.items())else:blow=len(a)+len(b)-len(set(iter(a+b)))return (hit,blow-hit)def minimax(e):h={}for f in lst:x=hit_and_blow(e,f)if x not in h: h[x]=0h[x]+=1return (max(h.values()),e)def genlist():if mode=='mastermind':return list(''.join(e) for e in itertools.product(iter('123456'),repeat=digits))else:return list(''.join(e) for e in itertools.permutations(iter('0123456789'),digits))def checkio(data):global lstif len(data)==0:lst=genlist()if mode=='mastermind': return '1122'else: return '0123'last=data[-1].split()hit=int(last[1][0])blow=int(last[1][2])last=last[0]for i in range(len(lst)-1,-1,-1):if hit_and_blow(lst[i],last)!=(hit,blow): lst.pop(i)return min(minimax(e) for e in lst)[1]#return random.choice(lst)if __name__ == '__main__':import sysif sys.version_info[0]>=3: raw_input=inputq=[]while True:s=checkio(q)print(' '.join(s))sys.stdout.flush()t=raw_input().strip()if t=='4 0':breakq.append(s+' '+'H'.join(t.split()))