Автор | Сообщение |
|
Отправлено: 13.07.22 13:08. Заголовок: Задача 24.220.5392 ответ не сходится?
Решил задачи 5387 по 5391 с похожей формулировкой, однако у них шаблон другой. Ответ все совпали, а вот задача 5392 не сходиться? var p:='A1A'; var s:=ReadAllText('24-215.txt'); s:=s.Replace('B','A').Replace('C','A'); s:=s.Replace('2','1').Replace('3','1'); s:=s.Replace(p,'*'); s:=s.Replace('A',' '); s:=s.Replace('1',' '); s.Split().Select(t->t.length).max.Println; //WriteAllText('123.txt',s); Ответ получается 4, а на сайте 5. В чём может быть проблема?
|
|
|
Ответов - 9
[только новые]
|
|
|
| Администратор
|
Сообщение: 3646
|
|
Отправлено: 09.08.22 13:22. Заголовок: Попробуйте такую стр..
Попробуйте такую строку: s := 'A1C2CB3CA3BA2AB3AB'; Для нее нужно получить 5 (C2CB3CA3BA2AB3A), а ваша программа выдает 4.
|
|
|
|
Отправлено: 16.08.22 12:48. Заголовок: Я тоже решала получа..
Я тоже решала получается 4, ошибку не могу найти. Для вашей строки моя программа выводит 5 '''Текстовый файл 24-215.txt содержит строку из символов A, B, C и цифр 1, 2, 3, всего не более чем 106 символов. Определите максимальное количество идущих подряд троек символов вида «буква + цифра + буква».''' with open('24.txt') as f: s = f.readline() k = 0 count = 0 i = 2 while i < len(s): if s[i-2].isalpha() and not(s[i-1].isalpha()) and s[ i].isalpha(): k += 1 i += 3 else: i += 1 count = max(count, k) k = 0 count = max(k, count) print(count)
|
|
|
|
| Администратор
|
Сообщение: 3663
|
|
Отправлено: 18.08.22 13:18. Заголовок: L4043 пишет: Я тоже ..
L4043 пишет: цитата: | Я тоже решала получается 4, ошибку не могу найти. Для вашей строки моя программа выводит 5 |
|
Ваша программа ломается на строке s = 'A2A1CB2С' Получаем ответ 1, а правильный ответ - 2 (A1CB2С). Пусть вы нашли нужную тройку. Далее вы не учитываете, что самая длинная цепочка может начинаться с последнего символа этой тройки.
|
|
|
|
Отправлено: 18.08.22 16:47. Заголовок: Спасибо!..
Спасибо!
|
|
|
|
Отправлено: 28.12.22 11:31. Заголовок: L4043 пишет: Спасиб..
L4043 пишет: Я что то вообще не понял как это решать. Поделись пожалуйста правильным кодом
|
|
|
|
Отправлено: 04.02.23 11:25. Заголовок: Поляков пишет: A2A1..
Поляков пишет: Константин Юрьевич, буквы D нет в условии.
|
|
|
|
| Администратор
|
Сообщение: 3874
|
|
Отправлено: 04.02.23 11:49. Заголовок: Галина Попова пишет:..
Галина Попова пишет: Да, согласен. Но суть ответа сохраняется. Для строки A2A1CB2С программа работает неверно и это вскрывает ошибку.
|
|
|
|
Отправлено: 24.02.24 20:43. Заголовок: Здравствуйте, вопрос.
with open('24-215.txt') as f: s = f.readline() lent = 0 maxlent = 0 i = 0 stroka = '' while i <= len(s) - 3: if s[i] in 'ABC' and s[i + 1] in '123' and s[i + 2] in 'ABC': stroka += s[i] + s[i + 1] + s[i + 2] i += 3 lent += 1 if lent > maxlent: maxlent = lent a = stroka elif lent == 0 and s[i + 3] in '123' and s[i + 2] in 'ABC' and s[i + 4] in 'ABC': i += 2 lent += 1 if lent > maxlent: maxlent = lent a = stroka else: stroka = '' i += 1 lent = 0 print(maxlent, a) Я получаю ответ 5, который и нужен. Но верен ли мой код?
|
|
|
|
Отправлено: 12.03.24 12:09. Заголовок: Предлагаю такой коро..
Предлагаю такой короткий код: s=open('4-215.txt').readline() k=maxi=0 for start in range(3): for i in range(start,len(s)-3,3): if s[ i].isalpha() and s[ i+1].isdigit() and s[ i+2].isalpha(): k+=1 else: maxi=max(maxi,k); k=0 print(maxi)
|
|
|
|