Автор | Сообщение |
|
Отправлено: 15.02.23 01:21. Заголовок: (№ 5391)
Ошибка в задании. Правильный ответ: 182 string = open('17-336.txt').readline() alphabet = 'ABC' numbers = '0123456789' maxcount = count = 0 for i in range(0, len(string) - 1): if string[ i] in numbers and string[ i + 1] in alphabet and string[ i + 2] in numbers: count += 1 elif string[ i - 1] in numbers and string[ i] in alphabet and string[ i + 1] in numbers: continue else: if maxcount < count: maxcount = count count = 0 print(maxcount)
|
|
|
Ответов - 6
[только новые]
|
|
|
| Администратор
|
Сообщение: 3896
|
|
Отправлено: 15.02.23 10:50. Заголовок: Ar3turrr пишет: stri..
Ar3turrr пишет: цитата: | string = open('17-336.txt').readline() |
|
Вы перепутали файл или номер задачи. Нужно работать с файлом 24-215.txt.
|
|
|
|
Отправлено: 15.02.23 11:28. Заголовок: Извините, забыл сказ..
Извините, забыл сказать. Этот тот же файл, просто с другим названием.
|
|
|
|
| Администратор
|
Сообщение: 3899
|
|
Отправлено: 15.02.23 12:03. Заголовок: Ar3turrr пишет: for ..
Ar3turrr пишет: цитата: | for i in range(0, len(string) - 1): |
|
Тут нужно len(string)-2, иначе получите выход за границы массива на строке 3121B. А на строке A23A2 ваша программа дает 0. А там есть подстрока 3A2, то есть правильный ответ 1.
|
|
|
|
Отправлено: 15.02.23 14:37. Заголовок: Теперь выдаёт правил..
Теперь выдаёт правильный результат при строке "A23A2". Протестировал ещё на множестве вариантов, и код выдаёт правильный ответ, но ответ к файлу так и не выходит. string = open('24-215.txt').readline() alphabet = 'ABC' numbers = '0123456789' maxcount = count = 0 for i in range(0, len(string) - 2): if string[ i] in numbers and string[ i + 1] in alphabet and string[ i + 2] in numbers: count += 1 if maxcount < count: maxcount = count elif string[ i] in alphabet and string[ i + 1] in numbers: continue else: count = 0 print(maxcount)
|
|
|
|
| Администратор
|
Сообщение: 3902
|
|
Отправлено: 15.02.23 22:13. Заголовок: Ar3turrr пишет: Тепе..
Ar3turrr пишет: цитата: | Теперь выдаёт правильный результат при строке "A23A2". |
|
И неправильный на строке 2C2C3. Здесь одна цепочка, а ваша программа ловит две. Вот правильное решение: s = open('24-215.txt').readline() B = ['A', 'B', 'C'] D = ['1', '2', '3'] maxLen = L = 0 for m in range(3): for i in range(m,len(s)-2, 3): if s[ i] in D and s[i+1] in B and s[i+2] in D: L += 1 maxLen = max( L, maxLen ) else: L = 0 print( maxLen )
|
|
|
|
Отправлено: 16.02.23 15:53. Заголовок: Я понял в чём была о..
Я понял в чём была ошибка. Я считал, что 1B3C2 за 2 т.к думал, что надо считать именно комбинации вида 'Число + буква + число'. То есть у меня бы вышло 2 подходящих строки в таком примере: 1B3 и 3C2. Спасибо!
|
|
|
|