Форум » Циклы и ветвления » (№ 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. Спасибо!



полная версия страницы