Игра Коровы и Быки, но бот подменивает цифры в числе

Программа должна играть с игроком в игру Коровы и Быки, но с одним нюансом, бот после каждого хода, основываясь на истории отгадок должен менять в числе цифры.

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(), она противоречит предыдущим ответам...


Ответы (0 шт):