Решение
🔹 Шаг 1. Импортируем finditer и читаем файл в строку.
from re import finditer
s = open("24.txt").read()
📌 Импортируем finditer и читаем файл в строку.
🔹 Шаг 2. Задаём шаблон числа: либо одиночный ноль, либо цифра от 1 до 4 и…
num = r"([1234][01234]*|0)"
📌 Задаём шаблон числа: либо одиночный ноль, либо цифра от 1 до 4 и дальше любые цифры 0–4 — без лишних ведущих нулей.
🔹 Шаг 3. Собираем регулярное выражение для корректного выражения
reg = rf"{num}([-*]{num})+"
📌 Собираем регулярное выражение для корректного выражения: число, затем один или несколько фрагментов «операция минус или умножение плюс число».
🔹 Шаг 4. Ищем все совпадения finditer и выбираем самое длинное по числу символов.
mx = max((x.group() for x in finditer(reg, s)), key=len, default="")
📌 Ищем все совпадения finditer и выбираем самое длинное по числу символов.
🔹 Шаг 5. Жми RUN
print(len(mx))
📌 Жми RUN — в выводе будет 933 (максимальная длина корректного арифметического выражения).
✅ Ответ: 933
🔹 Полный код
from re import finditer
s = open("24.txt").read()
num = r"([1234][01234]*|0)"
reg = rf"{num}([-*]{num})+"
mx = max((x.group() for x in finditer(reg, s)), key=len, default="")
print(len(mx))