Форум » Обработка символьных строк » Задача 6225 » Ответить

Задача 6225

ooopsididitagain: Не сходится ответ в задаче 6225. Ответ 153, у меня же получается что вообще таких строк нет Причем если в середину файла вставить какую-нибудь последовательность типа 0123456789ABCDEF или 0123456789ANNNNAABCDEF то ответ верный [pre2] file = open('test.txt', 'r') file = file.readline() string = '' data = [] # Список со всеми строками, которые начинаются с 0 и заканчиваются F # 0 и F - ровно по одному разу, так как найти надо минимальную длину for char in file: if char == '0' and string == '': string += char elif char == 'F' and string != '': string += char data.append(string) string = '' elif string != '': string += char alf = '0123456789ABCDEF' max_len = 0 # Проходимся по строкам, добавляем в локальный список все шестнадцатеричные # цифры. Проверяем, что есть все цифры и что они упорядочены for el in data: local_data = [] for char in el: if char in alf and char not in local_data: local_data.append(char) if len(local_data) == 16: if local_data == sorted(local_data): print(local_data) max_len = max(len(el), max_len) [/pre2]

Ответов - 2

ooopsididitagain: Вот еще одно решение. Но оно просто для того, чтобы найти хотя бы одну строку, которая начинается с 0, заканчивается F и буквы шестнадцатеричной системы лежат по порядку [pre2] file = open('24_5.txt', 'r') file = file.readline() data = file.split('0') alf = '0123456789ABCDEF' for i in range(1, len(data)): if 'F' in data[i ]: string = data[i ].split('F')[0] else: continue # На этом этапе гарантированно, что строка начинается с 0, заканчивается F. Причем 0 и F - по 1 разу, так как необходимо найти минимальную длину string = '0' + string + 'F' local_data = [] for char in string: if char in alf and char not in local_data: local_data.append(char) if local_data == sorted(local_data) and len(local_data) == 16: print(string) print(local_data) print('---') [/pre2] но таких строк я найти в файле не смог :(

Ж: Это переборный код - ищет все строки заданной длины и проверяет, удовлетворяет ли какая-нибудь из них условию задачи Вот искомая строка: 0NPO42F9E3MZMI1FFLKROWTU24HPE534G57C6VPVXOHEZ5W7R7OEQTT3TUAZKQV9ZHJGBO8JVPT0EFV789X6GOEMC3IBKQA6T8EHMGW2Y4J0ZTPEY2RASOSB3W386WZ5EN660EKS8U7C5FMJD3CHY0E4F [pre2] s=open('c:/1.txt').readline() while True: j = int(input('введите длину строки ')) for i in range(1,len(s) - j): ss=s[i:i+j] for c in '0123456789ABCDEF': if c not in ss: break ss=ss[ss.index(c)::] else: print(f':) нашлась строка длиной {j} с позиции {i} : {s[i:i+j]} ') break else: print(':( неудача...') [/pre2]



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