Форум » Обработка символьных строк » Помогите пожалуйста найти ошибку. Не сходится ответ(задание 24 из 17 варианта на сайте kpolyakov) » Ответить

Помогите пожалуйста найти ошибку. Не сходится ответ(задание 24 из 17 варианта на сайте kpolyakov)

Greenberg: Само задание: (№ 3784) Текстовый файл 24-s1.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую наибольшее количество пар соседних букв, которые стоят в таком же порядке и в алфавите (например, AB, BC, CD и т.д.; в цепочке ABC две таких пары). Если таких строк несколько, надо взять ту, которая в файле встретилась позже. Определите, какая буква встречается в этой строке реже всего (но присутствует!). Если таких букв несколько, надо взять ту, которая стоит раньше в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле. Пример. Исходный файл: ZCQABA ZALMAC CRACUT В этом примере в первой и второй строках по одной подходящей паре (AB и LM), в третьей таких пар нет. Берём вторую строку, т.к. она позже встречается в файле. В этой строке реже других встречаются буквы Z и C (по одному разу), выбираем букву С, т. к. она раньше стоит в алфавите. В ответе для этого примера надо записать C4, так как во всех строках файла буква C встречается 4 раза. Моё решение: [pre2] f = open('24-s1.txt','r') chars_from_text = {} need_char = '' current_min_amount = 60000 alphabet=[] kmax = 0 for е in range(65,91): alphabet.append(chr(е)) b='' for line in f: k = 0 for char in range(0,len(line) - 1): for i in range(0,24): if alphabet[i] == line[char] and alphabet[i + 1] == line[char + 1]: k += 1 if k >= kmax: b = line kmax = max(k , kmax) v = '' for char in b: if char in chars_from_text: chars_from_text[char] += 1 else: chars_from_text[char] = 1 for p in range(0 , 25) : v = alphabet[p] if current_min_amount > chars_from_text[v]: need_char = v current_min_amount = chars_from_text[v] summa = 0 f = open('24-s1.txt','r') for line in f: for q in line: if q == need_char: summa += 1 print('Буква',need_char,'Кол-во букв в файле',summa) [/pre2] Заранее благодарю за оказанную помощь!

Ответов - 1

Поляков: Это задача 24.163 из основного сборника. На сайте есть авторские решения всех 24-х задач, вы можете сравнить свое решение с авторским.



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