На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 5
ссылка на сообщение  Отправлено: 18.12.23 14:52. Заголовок: 24 номер 208. Вопрос по решению


Здравствуйте в задаче 24_208
208) (М. Шагитов) Текстовый файл 24-208.txt содержит строку из десятичных цифр, всего не более чем из 106 символов. Определите максимальное количество идущих подряд символов, среди которых комбинация символов 2022 повторяется не более четырёх раз.
В решениях приводится алгоритм
# Автор: А. Гнедов
s = open('24-208.txt').readline()
# s = '1' * 500 + '2022022333' * 8 + '4' * 1000

ans = 0
pos = 0 # первая позиция, входящая в последовательность
sub = '2022'
buf = [0] * 5
while True:
pos = s.find(sub, buf[-1])
if pos == -1:
ans = max(ans, len(s) - buf[0])
break
else:
ans = max(ans, pos - buf.pop(0) + 3)
buf.append(pos + 1)
print(ans)
Получатся, что прибавляется +3 только хвост 2022. Но можно же брать 2_02244444202_2 начало и хвост от 2022

f = open('Q3_4.txt')
s = f.readline().replace('2022','a')
a = s.split('a')
mx = 0
for i in range(len(a)-4):
x = 'xxxx'.join(a[i:i+5])
if not(i==0 and s[0]!='a'):
x='xxx'+x
if not(i==len(a)-5 and s[-1]!='a'):
x=x +'xxx'
mx = max(mx,len(x))
print(mx)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]





Сообщение: 3
ссылка на сообщение  Отправлено: 27.12.23 23:15. Заголовок: Вы делаете replace, ..


Вы делаете replace, но у вас внутри могут быть пересекающиеся комбинации. Например, 2022022, и это уже считается за 2 раза.

Спасибо: 1 
ПрофильЦитата Ответить





Сообщение: 199
ссылка на сообщение  Отправлено: 29.12.23 22:01. Заголовок: Это код, который пок..


Это код, который показывает нужную строку и доказывает, что длиннее нет
 
f=open('D:/24-208.txt')
s=f.readline()
for k in range(2502,2504):
for i in range(len(s)-k):
if s[i:i+k].count('2022')<=4:
print(k,'нашлась строка: ',s[i:i+k] )
break
else: print(k,'не нашлась строка')

Вот код, который задачу решает
 
f=open('D:/24-208.txt')
s=f.readline()
while '2022' in s: s=s.replace('2022','202 022')
s=[len(c) for c in s.split()]
print(max(sum(s[i:i+5]) for i in range(len(s)-5))-4*2)


Спасибо: 1 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1928
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет