#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
def only_reserve_possible_answers(guess, bull, cow, al):
anses = len(al)
for k in xrange(anses - 1, -1, -1):
if sum(1 for i, j in zip(al[k], guess)if i != j and j in al[k]) != cow \
or sum(1 for i, j in zip(al[k], guess) if i == j) != bull:
del al[k]
return al
def main():
answer_candidates = [str(i) + str(j) + str(k) + str(l) \
for i in xrange(0, 10) for j in xrange(0, 10) \
for k in xrange(0, 10) for l in xrange(0, 10) \
if len(set(str(i) + str(j) + str(k) + str(l))) == 4]
counter = 1
while True:
guess = answer_candidates[0]
print guess
sys.stdout.flush()
score = sys.stdin.readline().strip()
bulls, cows = int(score[0]), int(score[2])
if bulls == 4:
break
answer_candidates = only_reserve_possible_answers(
guess, bulls, cows, answer_candidates)
counter += 1
print 'tried times:', counter
if __name__ == '__main__':
main()
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCmltcG9ydCBzeXMKZGVmIG9ubHlfcmVzZXJ2ZV9wb3NzaWJsZV9hbnN3ZXJzKGd1ZXNzLCBidWxsLCBjb3csIGFsKToKICAgIGFuc2VzID0gbGVuKGFsKQogICAgZm9yIGsgaW4geHJhbmdlKGFuc2VzIC0gMSwgLTEsIC0xKToKICAgICAgICBpZiBzdW0oMSBmb3IgaSwgaiBpbiB6aXAoYWxba10sIGd1ZXNzKWlmIGkgIT0gaiBhbmQgaiBpbiBhbFtrXSkgIT0gY293IFwKICAgICAgICAgICAgICAgIG9yIHN1bSgxIGZvciBpLCBqIGluIHppcChhbFtrXSwgZ3Vlc3MpIGlmIGkgPT0gaikgIT0gYnVsbDoKICAgICAgICAgICAgZGVsIGFsW2tdCiAgICByZXR1cm4gYWwKZGVmIG1haW4oKToKICAgIGFuc3dlcl9jYW5kaWRhdGVzID0gW3N0cihpKSArIHN0cihqKSArIHN0cihrKSArIHN0cihsKSBcCiAgICAgICAgICAgIGZvciBpIGluIHhyYW5nZSgwLCAxMCkgZm9yIGogaW4geHJhbmdlKDAsIDEwKSBcCiAgICAgICAgICAgIGZvciBrIGluIHhyYW5nZSgwLCAxMCkgZm9yIGwgaW4geHJhbmdlKDAsIDEwKSBcCiAgICAgICAgICAgIGlmIGxlbihzZXQoc3RyKGkpICsgc3RyKGopICsgc3RyKGspICsgc3RyKGwpKSkgPT0gNF0KICAgIGNvdW50ZXIgPSAxCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGd1ZXNzID0gYW5zd2VyX2NhbmRpZGF0ZXNbMF0KICAgICAgICBwcmludCBndWVzcwogICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgIHNjb3JlID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAoKQogICAgICAgIGJ1bGxzLCBjb3dzID0gaW50KHNjb3JlWzBdKSwgaW50KHNjb3JlWzJdKQogICAgICAgIGlmIGJ1bGxzID09IDQ6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgYW5zd2VyX2NhbmRpZGF0ZXMgPSBvbmx5X3Jlc2VydmVfcG9zc2libGVfYW5zd2VycygKICAgICAgICAgICAgICAgIGd1ZXNzLCBidWxscywgY293cywgYW5zd2VyX2NhbmRpZGF0ZXMpCiAgICAgICAgY291bnRlciArPSAxCiAgICBwcmludCAndHJpZWQgdGltZXM6JywgY291bnRlcgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigp