"""
Задание 4.

Для этой задачи:
1) придумайте 1-3 решения (желательно хотя бы два)
2) оцените сложность каждого решения в нотации О-большое
3) сделайте вывод, какое решение эффективнее и почему

Примечание:
Без выполнения пунктов 2 и 3 задание считается нерешенным. Пункты 2 и 3 можно выполнить
через строки документации в самом коде.
Если у вас возникают сложности, постарайтесь подумать как можно решить задачу,
а не писать "мы это не проходили)".
Алгоритмизатор должен развивать мышление, а это прежде всего практика.
А без столкновения со сложностями его не развить.


Сама задача:
Пользователи веб-ресурса проходят аутентификацию.
В системе хранятся логин, пароль и отметка об активации учетной записи.

Нужно реализовать проверку, может ли пользователь быть допущен к ресурсу.
При этом его учетка должна быть активирована.
А если нет, то польз-лю нужно предложить ее пройти.

Приложение должно давать ответы на эти вопросы и быть реализовано в виде функции.
Для реализации хранилища можно применить любой подход,
который вы придумаете, например, реализовать словарь.
"""

# Решение
system_user_1 = {'login': 'u1', 'password': 123, 'act': 1}
system_user_2 = {'login': 'u2', 'password': 456, 'act': 0}

user_1 = {'login': 'u1', 'password': 123}
user_2 = {'login': 'u2', 'password': 456}


#1
def authentication_1(user, system_user):  # Общая сложность O(1)
    if system_user['act'] != 1:
        print('Ваша учетная запись не активирована')
    else:
        if user['login'] == system_user['login'] and user['password'] == system_user['password']:
            print('Авторизация прошла успешно')
        else:
            print('Неверный логин или пароль')


#authentication_1(user_1, system_user_1)

#2
def authentication_2(user, system_user):    # Общая сложность O(n)
    for key, value in user.items():         # O(n)
        if key == 'login':
            if value != system_user['login']:
                return 'Данного пользователя не существует'
        if key == 'password':
            if value == system_user['password'] and system_user['act'] == 1:
                return('Авторизация прошла успешно')
            elif value == system_user['password'] and system_user['act'] == 0:
                return('Ваша учетная запись не активирована')
            elif value != system_user['password']:
                return 'Пароль не верный'


print(authentication_2(user_2, system_user_2))

# Решение №1 эффективнее, т.к. не используется цикл, поиск по словарю имеет сложность O(1).
