Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из заглавных букв латинского алфавита. Найдите последовательность максимальной длины, где символы идут в порядке «больше», «меньше», «больше», «меньше» и т.д. по таблице ASCII. Пример подходящей последовательности: .
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_41_ДЗ". В ответе запишите длину искомой последовательности.
Решение 1.
s = open("Задание_41_ДЗ__tcne.txt").read() counter = 1 fl = True # Ждем больше ans = 0 for i in range(len(s) - 1): if s[i] > s[i + 1] and fl: # Ждали больше, нашли больше counter += 1 fl = False # Ждем меньше elif s[i] < s[i + 1] and not fl: # Ждали меньше, нашли меньше counter += 1 fl = True # Ждем больше elif s[i] > s[i + 1] and not(fl): # Ждали меньше, нашли больше (получается больше больше) # Для ситуации CBAB, ждали меньше, получили больше, учитываем # вторую пару больше как начало новой последовательности, # флаг можно не менять, так как он уже ждет меньше counter = 2 elif s[i] < s[i + 1] and fl: # Ждали больше, нашли меньше # Флаг можно не менять, так как он уже ждет меньше counter = 1 else: counter = 1 ans = max(counter, ans) print(ans)
Решение 2. В данном решении надо отдельно рассмотреть последний символ глазами.
with open(’Задание_41_ДЗ.txt’) as f: text = f.read().strip() max_seq_len = 0 for i in range(len(text)): seq_len = 0 for j in range(i+1, len(text)): if (j-i) % 2 == 1 and ord(text[j]) > ord(text[j-1]) or \ (j-i) % 2 == 0 and ord(text[j]) < ord(text[j-1]): seq_len += 1 else: break max_seq_len = max(max_seq_len, seq_len) print(max_seq_len+1)
Решение 3.
with open(’Задание_41_ДЗ.txt’) as f: text = f.read().strip() + "-" seq_len = 1 max_seq_len = 0 for i in range(1, len(text) - 1, 2): if text[i - 1] > text[i] < text[i + 1] and text[i + 1] != "-": seq_len += 2 max_seq_len = max(max_seq_len, seq_len) else: if text[i - 1] > text[i]: seq_len += 1 max_seq_len = max(max_seq_len, seq_len) seq_len = 1 for i in range(2, len(text) - 1, 2): if text[i - 1] > text[i] < text[i + 1] and text[i + 1] != "-": seq_len += 2 max_seq_len = max(max_seq_len, seq_len) else: if text[i - 1] > text[i]: seq_len += 1 max_seq_len = max(max_seq_len, seq_len) seq_len = 1 print(max_seq_len)
Специальные программы
Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!
Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.
Бесплатное обучение
в Школково
Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.
Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».
Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!
Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!