結果
問題 |
No.355 数当てゲーム(2)
|
ユーザー |
|
提出日時 | 2016-04-01 23:29:42 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 1,616 ms / 2,000 ms |
コード長 | 944 bytes |
コンパイル時間 | 186 ms |
コンパイル使用メモリ | 76,928 KB |
実行使用メモリ | 114,620 KB |
平均クエリ数 | 5.25 |
最終ジャッジ日時 | 2024-07-16 09:21:41 |
合計ジャッジ時間 | 58,710 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 52 |
ソースコード
#!/usr/bin/python from collections import Counter import itertools,random digits=4 def hit_and_blow(a,b): hit=sum(a[i]==b[i] for i in range(digits)) 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]=0 h[x]+=1 return (max(h.values()),e) def genlist(): return list(''.join(e) for e in itertools.permutations(iter('0123456789'),digits)) def checkio(last,hit,blow): global lst if last is None: lst=genlist() return random.choice(lst) 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 sys if sys.version_info[0]>=3: raw_input=input q=None hit=blow=0 while True: s=checkio(q,hit,blow) print(' '.join(s)) sys.stdout.flush() hit,blow=map(int,raw_input().split()) if hit==4:break q=s