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

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

09.04.2021, 21:38. Показов 25178. Ответов 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
8849 / 4501 / 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
8849 / 4501 / 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
8849 / 4501 / 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
8849 / 4501 / 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
Ответ Создать тему
Новые блоги и статьи
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
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами 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