結果
問題 |
No.355 数当てゲーム(2)
|
ユーザー |
![]() |
提出日時 | 2016-04-01 23:07:29 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,257 bytes |
コンパイル時間 | 350 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 27,984 KB |
平均クエリ数 | 18.50 |
最終ジャッジ日時 | 2024-07-16 09:09:10 |
合計ジャッジ時間 | 7,338 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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): prev_digit = guess_seq[place] guess_seq[place] = digit if not is_valid_number(guess_seq): guess_seq[place] = prev_digit continue status = submit_guess(guess_seq) if status == FINAL: return elif prev_status.hit < status.hit: prev_status = status break elif prev_status.hit > status.hit: guess_seq[place] = prev_digit status = prev_status break else: continue if __name__ == '__main__': main()