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

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

31.05.2021, 15:16. Показов 4118. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru