Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 31.05.2021
Сообщений: 1

Найти наибольшую последовательность одинаковых букв среди всех строк и указать наибольшее число букв стоящих рядом

31.05.2021, 15:16. Показов 4218. Ответов 21

Студворк — интернет-сервис помощи студентам
Помогите решить задачу. У нас есть текстовый файл (task.txt) в котором содержится любое количество строк, любой длинны (в строке должны содержаться только буквы abc в любой последовательности).
Пример: abcabbcab
abbbbabbaabcab
ccbcabbcabcba
Задача: найти наибольшую последовательность одинаковых букв среди всех строк и указать наибольшее число букв стоящих рядом.
Если в строке записано abbbcbb то должно вывести тройку
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2021, 15:16
Ответы с готовыми решениями:

Определить в строке количество пар рядом стоящих одинаковых букв
Задание: дана строка St , состоящая из латинских букв, цифр и знаков. Определить количество пар рядом стоящих одинаковых букв. Пример:...

Найти в последовательности наибольшую по длине последовательность рядом стоящих элементов
Плиз помогите.Вот условие: Дана последовательность из n (n<=13) натуральных чисел. Найти в этой последовательности наибольшую по длине...

Дана последовательность из n (n<=13) натуральных чисел. Найти в этой последовательности наибольшую по длине последовательность рядом стоящих элементов, представляющих собой степени числа три
Дана последовательность из n (n&lt;=13) натуральных чисел. Найти в этой последовательности наибольшую по длине последовательность рядом...

21
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
31.05.2021, 15:44
Name_less,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env python
"""
Помогите решить задачу. У нас есть текстовый файл (task.txt) в котором
содержится любое количество строк, любой длинны (в строке должны содержаться
только буквы abc в любой последовательности).
 
Пример:
    abcabbcab
    abbbbabbaabcab
    ccbcabbcabcba
 
Задача: найти наибольшую последовательность одинаковых букв среди
всех строк и указать наибольшее число букв стоящих рядом.
Если в строке записано abbbcbb то должно вывести тройку.
"""
from unittest import TestCase, main
from itertools import groupby
 
 
def solver(array) -> int:
    return max(len(tuple(g)) for line in array for _, g in groupby(line))
 
 
class Test(TestCase):
    def test_solver(self):
        self.assertEqual(solver([
            "abcabbcab",
            "abbbbabbaabcab",
            "ccbcabbcabcba"
        ]), 4)
        self.assertEqual(solver([
            "abbbcbb"
        ]), 3)
 
 
 
if __name__ == '__main__':
    #with open('task.txt') as f:
    #    solver(f)
    main()
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
31.05.2021, 16:32
Python
1
2
3
4
import re
 
s = 'abbbcbb'
print(max((len(i.group()) for i in re.finditer(r'(.)\1+', s))))
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
15.07.2021, 15:55
iSmokeJC, расскажите, пожалуйста про эти символы и библиотеку re или скажите то место, где можно про это прочитать. Код выглядит очень интересным, а главное, коротким. Мне скоро писать ЕГЭ. Хочу научиться писать такие программы. Заранее спасибо за объяснение этой магии
Цитата Сообщение от iSmokeJC Посмотреть сообщение
import re
s = 'abbbcbb'
print(max((len(i.group()) for i in re.finditer(r'(.)\1+', s))))
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
15.07.2021, 16:02
ResDT, RE - это библиотека регулярных выражений. В сети куча информации, но советую начать с официальной.
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
15.07.2021, 16:04
Damenikx, уже начал, и, как обычно, объясняют для тех, кто это уже знает.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.07.2021, 17:05
ResDT, я бы посоветовал книгу Фицжеральда "Регулярные выражения. Сборник рецептов". Для таких бытовых вещей ее более чем достаточно. Но читать таки вдумчиво. Когда принципы будут понятны - тогда уже смотрим в доку - что нам может предложить питон для работы с регулярками.
2
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
15.07.2021, 18:09
Очень похожая тема
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
16.07.2021, 10:34
iSmokeJC, мощнейшая вещь! Начал изучать. Сложная тема, но если ее изучить, думаю, стану на один шаг ближе к Dungeon Master. Сначала для меня это выглядело так:
import re
*^!%!@^%*&%*&$%*&%$*%^%*
print(answer)
Потом стал понемногу разбираться и уже практически решил 24 задачу, к сожалению, в работе с файлами у меня всегда были проблемы, никак не могу разобраться)
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
16.07.2021, 18:00
iSmokeJC, а как можно организовать программу с регуляркой, чтобы она искала идущие подряд строки, например: в этой ABABABABBBABAB должна найти ABABABAB, ABAB
Программа такого типа не работает (ставлю "+" после скобок, чтобы искало повторения этих символов вместе(line 6)):
P.S. А есть ли здесь личные сообщения? Не хочется загаживать форум.
Python
1
2
3
4
5
6
7
8
9
from time import *
import re
time_ = time()
with open(r'Text.txt') as file_:
    file_ = file_.read()
    tuple_ = re.findall(r'(AB)+', file_)
print(max(tuple_))
print(len(max(tuple_)))
print(time() - time_)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.07.2021, 18:11
Цитата Сообщение от ResDT Посмотреть сообщение
А есть ли здесь личные сообщения? Не хочется загаживать форум.
Обсуждение только на форуме. Соблюдаем Правила.
Цитата Сообщение от ResDT Посмотреть сообщение
не работает
Что значит "не работает"?
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
16.07.2021, 19:42
iSmokeJC, ну, мой код не работает, а точнее, работает неправильно. В файле не более миллиона букв ABC нужно в отдельный список вывести строки, которые я описал в предыдущем сообщении, а программа выводит "AB" и все, ну, кроме длины этой строки и времени работы программы.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.07.2021, 22:59
Посмотри 3-й пост
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
16.07.2021, 23:37
Посмотрел, мало что изменилось. Я пока не знаю таких сочетаний символов и такого синтаксиса. Я пробовал что-то делать с groop и groops, однако ничего не вышло. К тому же, ты ищешь подряд идущие символы, а мне нужно -- строки. Да и мне б хоть с символами разобраться
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.07.2021, 08:32
Цитата Сообщение от ResDT Посмотреть сообщение
ты ищешь подряд идущие символы, а мне нужно -- строки
Подряд идущие строки?
Ты можешь внятно сформулировать - чего ты хочешь добиться? Исходные данные также нужны. Для регулярок контекст очень важен.
Цитата Сообщение от ResDT Посмотреть сообщение
Я пробовал что-то делать с groop и groops, однако ничего не вышло
Не удивлен
Python
1
2
3
s = 'ABABABABBBABAB'
print(max((i.group() for i in re.finditer(r'(AB)+', s)), key=len))
# ABABABAB
1
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
17.07.2021, 10:28
Блин, круто, а как получилось? Это из-за group? Почему у меня не вышло? Почти то же самое... (
P. S. Да, подряд идущие строки, а как еще можно это назвать?

Добавлено через 18 минут
Что делают эти группы? "Запоминают" совпадения по шаблону?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.07.2021, 10:56
Цитата Сообщение от ResDT Посмотреть сообщение
Что делают эти группы? "Запоминают" совпадения по шаблону?
Цитата Сообщение от iSmokeJC Посмотреть сообщение
читать таки вдумчиво
...
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
17.07.2021, 14:02
Кстати, с файлами твой вариант не пашет:
P. S. Я вчера написал прогу для задачи, все работало. Сегодня захожу, открываю -- нифига не работает)))))
Python
1
2
3
4
import re
with open('Text (2).txt') as s:
    s = str(s)
    print(max((i.group() for i in re.finditer(r'Z+', s)), key=len))
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.07.2021, 19:08
Цитата Сообщение от ResDT Посмотреть сообщение
с файлами твой вариант не пашет
Цитата Сообщение от ResDT Посмотреть сообщение
s = str(s)
Если такую дичь писать, то конечно
0
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
17.07.2021, 19:15
В предыдущем коде были косяки, но после их исправления мало что поменялось, выдает ошибку Generator expression must be parenthesized:
Python
1
2
3
4
import re
with open('Text (2).txt') as file_:
    file_ = file_.read()
    print(max(string.group() for string in re.finditer(r'Z+', file_), key = len))
Добавлено через 3 минуты
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Если такую дичь писать, то конечно
Да, от регулярок голова кругом, сегодня целый день с них не слезаю. Такова цена успеха...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.07.2021, 19:15
Помогаю со студенческими работами здесь

Найти в этой последовательности наибольшую по длине последовательность рядом стоящих элементов, представляющих собой простые числа.
Дана последовательность из n (n&lt;=13) натуральных чисел. Найти в этой последовательности наибольшую по длине последовательность рядом...

Дана символьная строка. Найти наибольшую последовательность букв а
Дана символьная строка. Найти наибольшую последовательность букв а.

Дано символьная строка. Найти наибольшую последовательность букв к
дано символьная строка. Найти наибольшую последовательность букв к.

Дана символьная строка. Найти наибольшую последовательность букв а
Дана символьная строка. Найти наибольшую последовательность букв а.

Строки. Дана символьная строка. Найти наибольшую последовательность букв а
Дана символьная строка. Найти наибольшую последовательность букв а.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru