結果
問題 |
No.355 数当てゲーム(2)
|
ユーザー |
![]() |
提出日時 | 2016-04-01 22:59:38 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,224 bytes |
コンパイル時間 | 219 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 27,968 KB |
平均クエリ数 | 18.56 |
最終ジャッジ日時 | 2024-07-16 09:06:54 |
合計ジャッジ時間 | 7,680 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 37 WA * 15 |
ソースコード
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import array import collections import sys MAX_D = 4 Status = collections.namedtuple("Status", "hit blow") FINAL = Status(4, 0) def is_valid_number(seq): return len(seq) == len(set(seq)) def submit_guess(guess_seq): print(" ".join(map(str, guess_seq))) sys.stdout.flush() return Status(*map(int, input().split())) def main(): guess_seq = array.array("B", [0, 1, 2, 3]) prev_status= submit_guess(guess_seq) status = prev_status if status == FINAL: return for place in range(MAX_D)[::-1]: for digit in range(10): new_seq = guess_seq[:] new_seq[place] = digit if not is_valid_number(new_seq): continue status = submit_guess(new_seq) if status == FINAL: return elif prev_status.hit < status.hit: guess_seq = new_seq prev_status = status break elif prev_status.hit > status.hit: new_seq = guess_seq status = prev_status break else: continue if __name__ == '__main__': main()