Составь цепочку функций удали будильники по будня, поставь будильник в воскресенье в 10 утра
Ответ нейросети
03 марта 2026 10:51
Задача понятна: удалить все будильники, которые выставлены по будням (понедельник–пятница), а затем поставить новый будильник на воскресенье в 10:00. Ниже даю понятное решение на языке Python с пошаговым объяснением и примером.
Что сделаем
- Определим структуру будильника (id, день недели, время, подпись).
- День недели: 0 = понедельник, 1 = вторник, ..., 6 = воскресенье.
- Функция delete_alarms_by_days: удаляет будильники по заданным дням (будни = 0..4).
- Функция alarm_exists: чтобы не дублировать будильник.
- Функция add_alarm: добавляет новый будильник, если его ещё нет.
- Цепочка функций run_chain: сначала удаляем будильники по будням, затем добавляем воскресный будильник на 10:00.
Пример кода (прикладной, без привязки к конкретной системе)
- Важно: время задаём в 24-часовом формате. День недели: 0–6 (понедельник–воскресенье).
- Код
from dataclasses import dataclass from typing import List, Set
@dataclass class Alarm: id: int day: int # 0 = понедельник, ..., 6 = воскресенье hour: int # 0-23 minute: int # 0-59 label: str = ""
def delete_alarms_by_days(alarms: List[Alarm], days_to_delete: Set[int]) -> List[Alarm]: # Возвращает новый список без будильников на указанных днях return [a for a in alarms if a.day not in days_to_delete]
def alarm_exists(alarms: List[Alarm], day: int, hour: int, minute: int) -> bool: for a in alarms: if a.day == day and a.hour == hour and a.minute == minute: return True return False
def add_alarm(alarms: List[Alarm], day: int, hour: int, minute: int = 0, label: str = "") -> List[Alarm]: # Добавляет новый будильник, если такого ещё нет if alarm_exists(alarms, day, hour, minute): return alarms new_id = max((a.id for a in alarms), default=0) + 1 return alarms + [Alarm(new_id, day, hour, minute, label)]
def run_chain(alarms: List[Alarm]) -> List[Alarm]: # 1) Удаляем все будильники по будням (понедельник–пятница) weekdays = {0, 1, 2, 3, 4} alarms = delete_alarms_by_days(alarms, weekdays) # 2) Добавляем будильник на воскресенье в 10:00 day_sunday = 6 alarms = add_alarm(alarms, day_sunday, 10, 0, "Воскресенье 10:00") return alarms
Дополнительно: функция печати для наглядности
def print_alarms(alarms: List[Alarm]) -> None: day_names = ["Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье"] for a in alarms: print(f"ID {a.id} - {day_names[a.day]} {a.hour:02d}:{a.minute:02d} - {a.label}")
Демонстрация
initial_alarms = [ Alarm(101, 0, 7, 0, "Понедельник будильник"), Alarm(102, 2, 8, 0, "Среда будильник"), Alarm(103, 5, 9, 0, "Суббота будильник"), Alarm(104, 6, 8, 0, "Воскресенье утро"), ]
print("До:") print_alarms(initial_alarms)
result = run_chain(initial_alarms)
print("\nПосле цепочки:") print_alarms(result)
- Как это работает (пояснение по шагам)
- Удаление будильников по будням:
- Мы задаём days_to_delete равным сету {0,1,2,3,4} (понедельник–пятница).
- Функция delete_alarms_by_days проходит по всем будильникам и оставляет только тех, чьё day не входит в этот набор.
- Добавление воскресного будильника:
- Мы целимся на day = 6 (воскресенье) и время hour = 10, minute = 0.
- Функция add_alarm сначала проверяет, нет ли уже будильника на то же время в тот же день (alarm_exists). Если есть — ничего не добавляет; если нет — добавляет новый будильник и назначает уникальный id.
- Цепочка вызывает сначала удаление, потом добавление, что и соответствует задаче: сначала очистить будни, затем установить воскресенье на 10:00.
- Пример ожиданий по результату
- До: были будильники на понедельник, среду, субботу и воскресенье.
- После цепочки: удалены будильники на понедельник–пятницу, оставлены будильники на субботу и воскресенье (если они были), и добавлен новый будильник на воскресенье 10:00.
- В итоге может оказаться два воскресных будильника: существующий воскресенье и новый воскресенье 10:00 (если исходно был другой вечер). Благодаря проверке на дубликаты новые дубликаты не добавятся, если время и день совпадают.
- Примечания и адаптация
- День недели по умолчанию: 0 = понедельник, 6 = воскресенье. Это удобно для большинства примеров и соответствует описанию.
- Время задаётся в 24-часовом формате (hour 0–23, minute 0–59).
- Если нужно адаптировать под другую платформу (например, JavaScript, Java и т. п.), принцип остаётся тем же: фильтрация по дням и добавление нового элемента, с проверкой дубликатов.
- Если хотите, могу привести аналогичный пример на JavaScript или псевдокод без привязки к конкретной реализации.
Если нужно, могу адаптировать код под другую структуру данных или добавить дополнительные проверки (например, удаление только будних будильников с определённой подписью, или перенос существующих на другое время).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



