0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 26

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

09.04.2021, 21:38. Показов 25207. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru