Задача 1: ИИ в облаке и на устройстве (1\_Cloud\_device.py)
В мире искусственного интеллекта существуют разные варианты работы ИИ: одни модели обрабатывают данные в облаке, а другие — на локальных устройствах. Иногда ИИ может сочетать оба подхода.
Создай два класса:
- CloudAI — класс для ИИ, работающего в облаке, который имеет метод all\_about\_me() и возвращает строку: "I'm a Cloud AI, and I'm processing data online".
- LocalAI — класс для ИИ, работающего на локальном устройстве, также с методом all\_about\_me(), возвращающим строку: "I work on local devices and process data offline".
Также создай два производных класса, наследующихся от обоих базовых:
- HybridAI — класс для ИИ, который может работать и в облаке, и на устройстве.
- EdgeAI — класс для ИИ, который в основном работает на устройствах, но может взаимодействовать с облаком.
В производных классах не следует переопределять методы. Объяви HybridAI(CloudAI, LocalAI), а EdgeAI(LocalAI, CloudAI): тогда результат определит MRO, который нужно проверить вызовом mro().
Пример ввода и вывода:
cloud_ai = CloudAI()
local_ai = LocalAI()
hybrid_ai = HybridAI()
edge_ai = EdgeAI()
print(cloud_ai.all_about_me()) # I'm a Cloud AI, and I'm processing data online
print(local_ai.all_about_me()) # I work on local devices and process data offline
print(hybrid_ai.all_about_me()) # I'm a Cloud AI, and I'm processing data online
print(edge_ai.all_about_me()) # I work on local devices and process data offline
---
Задача 2: Модули ИИ разного уровня (2\_Level\_modules.py)
Представь, что различные ИИ-модули похожи на уровни сложности задач, которые они решают. Самый простой модуль решает базовые задачи, а самые сложные уже нельзя упростить.
Создай базовый класс AIModel, который при инициализации принимает один аргумент — сложность (уровень сложности задачи).
В базовом классе предоставьте следующие методы:
- \_\_str\_\_() — возвращает строку: "AI model, complexity level <уровень сложности>".
- get\_complexity() — возвращает уровень сложности.
Создай производный класс AdvancedAIModel, который примет дополнительный аргумент — шаг изменения сложности.
Этот класс реализует дополнительные методы:
- previous\_model() — возвращает модель с более высокой сложностью.
- next\_model() — возвращает модель с более низкой сложностью; если сложность меньше или равна нулю, возвращается BasicAIModel.
Создай класс BasicAIModel, который наследуется от AdvancedAIModel. Этот класс не может упростить модель дальше, и при вызове метода next\_model() возвращается None.
Пример ввода и вывода:
model = AIModel(10)
print(model) # AI model, complexity level 10
advanced_model = AdvancedAIModel(10, 2)
print(advanced_model.next_model()) # AI model, complexity level 8
print(advanced_model.previous_model()) # AI model, complexity level 12
basic_model = BasicAIModel(2, 1)
print(basic_model.next_model()) # None
---
Задача 3: Кит — универсальный ИИ (3\_Universal AI.py)
Кит — это ИИ, который может работать как с облачными данными, так и с локальными задачами, но не все функции ему доступны.
Создай два базовых класса:
- CloudAI — методы:
- swim() — обрабатывает облачные данные.
- dive() — анализирует большие массивы информации.
- breathe\_with\_gills() — дышит облачными API (возвращает None для кита).
- LandAI — методы:
- walk\_on\_land() — управляет локальными устройствами.
- breathe\_air() — дышит локальными ресурсами (возвращает None для кита).
- feed\_cubs() — поддерживает работу нескольких устройств.
Создай производный класс WhaleAI(CloudAI, LandAI), который переопределяет недоступные киту методы так, чтобы они возвращали None. Добавь метод filter_data(values: list[int], limit: int) -> list[int], который возвращает новый список значений меньше limit и не изменяет исходный список.
Пример ввода и вывода:
whale_ai = WhaleAI()
print(whale_ai.swim()) # swimming in cloud data
print(whale_ai.breathe_with_gills()) # None
print(whale_ai.filter_data([1, 5, 9, 3], 5)) # [1, 3]
