Top.Mail.Ru
Ответы

Помогите исправить задание 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)

По дате
По Рейтингу
Аватар пользователя
Мастер
2мес

Странный код.
На каждой итерации он будет добавлять +1 при условии что в массиве хоть одна гласная из списка будет встречаться не чаще 8 раз. И при каждой итерации он будет опираться на одну и ту же найденную по условию гласную.
В итоге в конце мы будем иметь либо m = длине массива либо m = 0.
И что это даст?
Бредятина написанная с целью вызвать мысль: "ну автор же старался... Давайте поможем."

Аватар пользователя
Мастер
2мес

попробуй заменить s.count на счётчик и добавь сброс счётчика при двух гласных подряд больше восьми

Аватар пользователя
Знаток
2мес

лайки пожалуйста мой отет

Аватар пользователя
Профи
2мес

Ваш код имеет несколько логических ошибок. Давайте исправим задание 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), но приведенное решение проще для понимания.

Аватар пользователя
Мастер
2мес

короче надо считать гласные в текущем отрезке а не во всем файле так что перепиши код