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

Текстовый файл состоит не более чем из 10^6 символов X, Y, Z

09.04.2021, 21:38. Показов 25405. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более ОДНОГО раза.

В качестве решения следует написать программу, избегая использование встроенные в питон функции.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2021, 21:38
Ответы с готовыми решениями:

Текстовый файл состоит не более чем из 10^6 символов D, V, M
Найдите самую длинную последовательность, состоящую из символов D, стоящих через 2 элемента(разница в индексе равна 3) , т.е. в...

Текстовый файл состоит не более чем из 10^6 символов D, V, M
Найдите самую длинную последовательность, состоящую из пар разных элементов, т.е. в последовательности VDMVMDMDMDDDDMMVVMDDMM условию будут...

Текстовый файл состоит не более чем из 10^6 символов A,B и C. Определите максимальное количество идущих подряд символв С
#include <iostream> #include <string> using namespace std; int main() { FILE *file; file =...

24
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
10.04.2021, 05:03
Петр_Первый,
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
t = 'xxxyzzyxyzxxx'
import sys
x = xpos1 = xpos2 = subt = msubt = j = shift = 0
try:
    while True:
        if t[j] != 'x':
            subt += 1
            j += 1
        else:
            xpos2 = j
            if not x:
                x = 1
                subt += 1
                j += 1
                xpos1 = j
            else:
                x = 0
                if msubt < subt:
                    msubt = subt
                subt = 0
                if not shift:
                    shift = 1
                    j = xpos1
                else:
                    j = xpos2
                    shift = 0
except IndexError:
    sys.stdout.write(f'{msubt}')
понятия не имею как читать файл без open()
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
10.04.2021, 07:15
Петр_Первый,
Python
1
2
3
4
5
6
7
8
9
10
11
12
xyz = input()
kmax = n = m = 0
for w in xyz:
    n += 1
    if w == 'Z':
        if m + n  > kmax:
            kmax = m + n 
        m = n - 1
        n = 0
if m + n  > kmax:
    kmax = m + n 
print(kmax)
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.04.2021, 09:57
Пусть будет )))
Python
1
print(max(map(len, re.findall(r'[^z]+z[^z]*', input()))))
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
10.04.2021, 10:14
iSmokeJC, а, если z вообще нет (по условию не более...), то какой паттерн тогда?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
10.04.2021, 10:19
Python
1
print(max(map(len, input().split('z')))+1)
ну и обработать когда 'z' в строке нет.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.04.2021, 10:44
Gdez, ну так а если его нет, то вся строка

Добавлено через 3 минуты
[^z]+z?[^z]*
Кстати, косячные регулярки

Добавлено через 12 минут
Где ж мои сэнсэи Рыжий Лис и Jabbson? Неразумный падаван взывает!

Добавлено через 2 минуты
Пазл -
Python
1
2
s = 'yxyxyxzyyxyxzxx'
print(*re.findall(r'[^z]*z[^z]*', s))
Bash
1
yxyxyxzyyxyx zxx
Почему эта регулярка не матчит yxyxyxzyyxyxzxx ???
А только хвост yxyxyxzyyxyxzxx
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
10.04.2021, 11:35
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Почему эта регулярка не матчит yxyxyxzyyxyxzxx ???
А только хвост yxyxyxzyyxyxzxx
Жадность?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.04.2021, 11:37
Arsegg, ага, сперединедожадность.
Причем, если в первой половине квантификатор * заменить на + - хавает
0
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
10.04.2021, 11:38
Gdez, прошу, объясните пожалуйста как работает алгоритм
магия какая-то
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
10.04.2021, 11:42
iSmokeJC, а так?
Python
1
2
s = 'yxyxyxzyyxyxzxx'
print(*re.findall(r'[^z]*?z[^z]*?', s))
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.04.2021, 11:46
Цитата Сообщение от Arsegg Посмотреть сообщение
а так?
Хвост zxx вообще не сматчится

Добавлено через 1 минуту

Не по теме:

Мда. Лошара я еще в регулярках...

0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
10.04.2021, 11:49
/del
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.04.2021, 12:08
Arsegg,
Кликните здесь для просмотра всего текста

Не по теме:

* ушел курить матчасть


1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
10.04.2021, 12:12
iSmokeJC,
Кликните здесь для просмотра всего текста
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
10.04.2021, 12:44
Python
1
2
3
s = input()
*a, = map(len, s.split('z'))
print(max([n1+n2+1 for n1, n2 in zip(a, a[1:])], default=len(s)))
1
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
10.04.2021, 14:11
codcw, там к сожалению неточность (6, 7, 8-я строчки) - уменьшать на 1 нужно сумму, а не счетчик
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
xyz = input()
 
# n - счетчик символов "правой" части (справа от Z)
# m - счетчик "левой" части (слева от Z),
 
kmax = n = m = 0
for w in xyz:
    n += 1
 
# как только встретился Z
    if w == 'Z':
        
# сравниваем сумму левой и правой частей
# с максимумом за минусом последнего Z
        if m + n - 1 > kmax:
            kmax = m + n - 1
 
# длину "левой" части приравниваем 
# длине "правой"  с Z в конце
        m = n 
 
# "правый" счетчик обнуляем
        n = 0
 
 
if m + n  > kmax:
    kmax = m + n 
print(kmax)
1
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
10.04.2021, 14:49
Gdez, я не до конца понимаю, но спасибо большое!
считать символы по обе стороны это гениально
никогда бы не догадался
а ещё там речь в комментариях про правую и левую части, но судя по коду кажется что наоборот, m - правый, а n - левый
1
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
10.04.2021, 15:00
codcw, левая часть (m) изменяется, только если очередной символ == Z, а правая часть пост на +1 с "обнулением" -> проход по слову слева направо
1
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
10.04.2021, 15:18
Gdez, кажется дошло, ещё раз спасибо ^_^
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2021, 15:18
Помогаю со студенческими работами здесь

Строка содержащая произвольный текст, состоит не более чем из 200 символов
Помогите написать программу Строка содержащая произвольный текст, состоит не более чем из 200 символов. Написать, какие буквы и сколько...

Поиск подстроки в тексте, который состоит из более чем 200 000 символов
имеется строка (в string) длиной около 200к символов подскажите каким лучше образов искать в этой строке все выражения начинающие на rw...

Программе на вход подается строка, которая состоит не более чем из 1000000  кириллических символов К, О, Т
Программе на вход подается строка, которая состоит не более чем из 1000000  кириллических символов К, О, Т. Определите максимальное...

Входной текстовый файл состоит из последовательностей символов, разделённых пробелами
задание : Входной текстовый файл состоит из последовательностей символов, разделённых пробелами. Если эти символы образуют целые или...

Создать текстовый файл и записать в него N строк, каждая из которых состоит из K символов '*'
Дано имя файла и целые положительные числа N и K. Создать текстовый файл с указанным именем и записать в него N строк, каждая из которых...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru