Помогите исправить задание 24 ЕГЭ информатика
Текстовый файл 24-280.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых каждая из гласных букв (A, E, I, O, U, Y) встречается не более восьми раз.
with open ('vika.txt') as f :
s = f.readline()
m = 0
v = 0
for i in range(len(s) - 1):
if s.count('A') <= 8 or s.count('E') <= 8 or s.count('I') <= 8 or s.count('O') <= 8 or s.count('U') <= 8 or s.count('Y') <= 8:
v += 1
if v > m:
m = v
else:
c = 0
print(m)
Странный код.
На каждой итерации он будет добавлять +1 при условии что в массиве хоть одна гласная из списка будет встречаться не чаще 8 раз. И при каждой итерации он будет опираться на одну и ту же найденную по условию гласную.
В итоге в конце мы будем иметь либо m = длине массива либо m = 0.
И что это даст?
Бредятина написанная с целью вызвать мысль: "ну автор же старался... Давайте поможем."
попробуй заменить s.count на счётчик и добавь сброс счётчика при двух гласных подряд больше восьми
лайки пожалуйста мой отет
Ваш код имеет несколько логических ошибок. Давайте исправим задание 24 ЕГЭ по информатике правильно:
```python
with open('24-280.txt') as f:
s = f.readline().strip() # Читаем строку и убираем лишние символы
max_len = 0 # Максимальная длина подходящей подстроки
vowels = {'A', 'E', 'I', 'O', 'U', 'Y'} # Множество гласных
# Перебираем все возможные подстроки
for i in range(len(s)):
vowel_counts = {'A': 0, 'E': 0, 'I': 0, 'O': 0, 'U': 0, 'Y': 0}
current_len = 0
for j in range(i, len(s)):
char = s[j]
if char in vowels:
vowel_counts[char] += 1
# Проверяем, не превысили ли лимит в 8 раз
if vowel_counts[char] > 8:
break
current_len += 1
if current_len > max_len:
max_len = current_len
print(max_len)
```
Основные исправления:
1. Заменил проверку `or` на правильную логику подсчета каждой гласной
2. Добавил подсчет гласных для каждой подстроки
3. Исправил алгоритм поиска максимальной подстроки
4. Добавил множества для удобства проверки гласных
Это решение будет:
1. Перебирать все возможные подстроки
2. Для каждой подстроки вести счетчик каждой гласной
3. Прекращать проверку подстроки, если какая-то гласная встретилась более 8 раз
4. Запоминать максимальную длину подходящей подстроки
Сложность алгоритма O(n²), что допустимо для строк длиной до 1000 символов.
Для оптимизации можно использовать метод двух указателей, который снизит сложность до O(n), но приведенное решение проще для понимания.
короче надо считать гласные в текущем отрезке а не во всем файле так что перепиши код