Игра Коровы и Быки, но бот подменивает цифры в числе
Программа должна играть с игроком в игру Коровы и Быки, но с одним нюансом, бот после каждого хода, основываясь на истории отгадок должен менять в числе цифры.
import random
def generate_answer():
n = [i for i in range(10)]
number = []
for _ in range(4):
a = n.pop(random.choice(range(len(n))))
number.append(str(a))
return ''.join(number)
def cows_bulls(num, answer):
cows = 0
bulls = 0
for i in range(4):
# Проверка на быка
if str(num)[i] == str(answer)[i]:
bulls += 1
# Проверка на корову
elif num[i] in str(answer):
cows += 1
return [bulls, cows]
def cheat():
changer = True
new_answer = None
history = []
# Пока не найдётся новый ответ
while changer:
new_answer = generate_answer()
if new_answer == answer:
changer = True
break
else:
if history:
for i in history:
# Проверка на совпадение с историей
if cows_bulls(i[0], new_answer) != [i[1], i[2]]:
changer = True
break
else:
changer = False
else:
changer = False
return new_answer
def play():
global answer
bulls = 0
history = []
# До победы
while bulls < 4:
attempt = input('Введите четырёхзначное число, цифры не повторяются: ')
bulls, cows = cows_bulls(attempt, answer)
if bulls >= 2 or cows >= 3 or bulls + cows == 4:
# Подмена ответа
answer = cheat()
bulls, cows = cows_bulls(attempt, answer)
# Запись истории
history.append([attempt, bulls, cows])
print(cows, 'коровы, ', bulls, 'быка.')
print('Вы выиграли!')
answer = generate_answer()
play()
Все работает, кроме функции cheat(), она противоречит предыдущим ответам...