結果

問題 No.2848 Birthday Hit and Blow
ユーザー shobonvipshobonvip
提出日時 2024-08-23 22:42:33
言語 PyPy3
(7.3.15)
結果
RE  
実行時間 -
コード長 1,183 bytes
コンパイル時間 310 ms
コンパイル使用メモリ 82,484 KB
実行使用メモリ 96,464 KB
平均クエリ数 4.50
最終ジャッジ日時 2024-08-23 22:42:36
合計ジャッジ時間 2,624 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 427 ms
95,396 KB
testcase_01 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

# いい質問をして絞り込む

def valid(t):
	for i in range(4):
		for j in range(i+1,4):
			if t[i] == t[j]: return False
	return True

a = [31,29,31,30,31,30,31,31,30,31,30,31]
s = []
for i in range(12):
	for j in range(1,a[i]+1):
		t = f"{str(i+1).zfill(2)}{str(j).zfill(2)}"
		if valid(t):
			s.append(t)

		#print(s)

T = int(input())
for _ in range(T):
	nokori = s[::]
	q = 0
	while len(nokori) > 1:
		q += 1
		g = 10 ** 18
		v = [[] for i in range(25)]
		tt = ""
		for i in range(10000):
			t = str(i).zfill(4)
			if not valid(t): continue
			tar = [0] * 10
			for i in range(4):
				tar[int(t[i])] += 1

			bunpu = [[] for i in range(25)]
			for x in nokori:
				hit = 0
				blow = 0
				for j in range(4):
					if x[j] == t[j]:
						hit += 1
					if tar[int(x[j])]:
						blow += 1
				blow -= hit
				#if x == "0823" and t == "4156":
				#	print(hit, blow)
				bunpu[hit*5+blow].append(x)

			cmp = max([len(bunpu[y]) for y in range(25)])
			if cmp < g:
				g = cmp
				v = bunpu[::]
				tt = t
		#print(cmp)
		if q >= 7:
			while True:
				pass
		print(f"? {tt}")
		h,b = map(int,input().split())
		#print(v[h*5+b])
		nokori = v[h*5+b][::]
	print(f"! {nokori[0]}")
0