Форум » Циклы и ветвления » (№ 5391) » Ответить
(№ 5391)
Ar3turrr: Ошибка в задании. Правильный ответ: 182 [pre2]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)[/pre2]
Ответов - 6
Поляков: Ar3turrr пишет: string = open('17-336.txt').readline() Вы перепутали файл или номер задачи. Нужно работать с файлом 24-215.txt.
Ar3turrr: Извините, забыл сказать. Этот тот же файл, просто с другим названием.
Поляков: Ar3turrr пишет: for i in range(0, len(string) - 1): Тут нужно len(string)-2, иначе получите выход за границы массива на строке 3121B. А на строке A23A2 ваша программа дает 0. А там есть подстрока 3A2, то есть правильный ответ 1.
Ar3turrr: Теперь выдаёт правильный результат при строке "A23A2". Протестировал ещё на множестве вариантов, и код выдаёт правильный ответ, но ответ к файлу так и не выходит. [pre2]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)[/pre2]
Поляков: Ar3turrr пишет: Теперь выдаёт правильный результат при строке "A23A2". И неправильный на строке 2C2C3. Здесь одна цепочка, а ваша программа ловит две. Вот правильное решение: [pre2] 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 ) [/pre2]
Ar3turrr: Я понял в чём была ошибка. Я считал, что 1B3C2 за 2 т.к думал, что надо считать именно комбинации вида 'Число + буква + число'. То есть у меня бы вышло 2 подходящих строки в таком примере: 1B3 и 3C2. Спасибо!
полная версия страницы