24.03 Прочие прототипы
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из строк, каждая из которых содержит не менее семи и не более
чем
заглавных букв латинского алфавита. Найдите номер строки (нумерация с 0), которая содержит
максимальное количество палиндромов из семи символов. Если таких строк несколько, то в ответе напишите
номер первой встретившейся. Палиндром - последовательность символов, которая читается одинаково с двух
сторон.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_44_ДЗ". В ответе запишите номер искомой строки.
maxim = 0
find_ind = -1
ind = 0
for s in f:
count = 0
for i in range(len(s) - 6):
if s[i:i+7] == s[i:i+7][::-1]:
count += 1
if count > maxim:
maxim = count
find_ind = ind
ind += 1
print(find_ind)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из строк, каждая из которых содержит не менее двух и не более чем
букв
латинского алфавита. Найдите количество строк палиндромов.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_45_ДЗ". В ответе запишите искомое количество.
# строка содержит в конце символ переноса ’\n’ # метод str.strip() удаляет этот символ print(sum(1 for i in open("Задание_45_ВЕБ.txt") if i.strip() == i.strip()[::-1]))
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из заглавных букв латинского алфавита. Гарантируется, что количество
символов в строке четное. Вам нужно заменить некоторые латинские буквы на другие таким образом, чтобы из символов
строки можно было составить палиндром. Например, для строки AVRORA можно заменить O на V или V на O, тогда из
данного набора букв мы сможем составить палиндром.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_46_ДЗ". В ответе запишите минимальное количество замен, которые нужно сделать.
s = f.read()
# используем индексы буквы в таблице ASCII
# A - 65, Z - 90
ar = [0] * 100
for i in range(len(s)):
ar[ord(s[i])] += 1
# Если какой-то символ встречается нечетное число раз
# то 1 экземпляр этого символа можно поменять на другой символ,
# который тоже встречается нечетное число раз
# так как строка имеет четную длину, если найдется символ,
# который встречается
# нечетное число раз, то к нему всегда найдется пара
ans = 0
for i in range(65, 91):
if ar[i] % 2 == 1:
ans += 1
# мы получили количество символов, которые встретились
# нечетное число раз,
# мы можем поменять ровно половину из них, а другую не трогать
print(ans//2)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из строк, каждая из которых состоит не более чем из
заглавных букв
латинского алфавита. В строке, содержащей не менее 150 символов
найдите максимальное расстояние (разница в
индексах) между двумя одинаковыми символами, между которым не повторяется этот символ. Если строк, содержащих
не менее 150 символов
несколько, то используйте последнюю из таковых для поиска маскимального
расстояния.
Пример:
Среди данных строк нет ни одной, где количесто символов не менее 150. Если забыть про это условие (в рамках
примера), то максимальное расстояние между символами
во второй строке и оно равно 7.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_48_ДЗ". В ответе запишите искомое расстояние.
Решение 1
f = open(’Задание_48_ДЗ__tctn.txt’) t = ’’ for i in f: if i.count(’Z’) >= 150: t = i alf = ’QWERTYUIOPASDFGHJKLZXCVBNM’ ans = 0 for i in range(26): m = t.split(alf[i]) for j in m[1:-1]: ans = max(len(j), ans) print(ans + 1)
Решение 2
f = open("Задание_48_ДЗ.txt") maxim = 0 alph = sorted(list("qwertyuiopasdfghjklzxcvbnm".upper())) for s in f: s = s.strip() last_symbol = [-1] * 26 if s.count("Z") >= 150: maxim = 0 for i in range(len(s)): ind_sym = alph.index(s[i]) if last_symbol[ind_sym] != -1: if i - last_symbol[ind_sym] >= 2: maxim = max(i - last_symbol[ind_sym], maxim) last_symbol[ind_sym] = i print(maxim)
Ошибка.
Попробуйте повторить позже
Текстовый файл "Задание_49_ДЗ"содержит только заглавные буквы латинского алфавита (ABC...Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую наибольшее количество пар соседних букв, которые стоят в таком же порядке как и в алфавите (например, AB, BC, CD и т.д.; в цепочке ABC две таких пары). Если таких строк несколько, надо взять ту, которая в файле встретилась раньше.
Выведите максимальное количество пар, встреченных среди всех строк, а также без пробелов и разделителей букву из данной строки, которая встречается чаще всего.
Пример. Исходный файл:
ZCQABA
ZALMAC
CRACUT
В этом примере в первой и второй строках по одной подходящей паре (AB и LM), в третьей таких пар нет. Берём первую строку, т.к. она раньше встречается в файле. В этой строке чаще других встречается буква А. Если бы она была не единственной, то выбрали ту букву, что раньше стоит в алфавите. В ответе для этого примера надо записать 1A.
count = 0
maxim = 0
s = ""
for i in f:
count = 0
for j in range(len(i) - 1):
if ord(i[j]) + 1 == ord(i[j + 1]):
count += 1
if count > maxim:
maxim = count
s = i
alph = sorted(list("qwertyuiopasdfghjklzxcvbnm".upper()))
a = [0] * 26
for i in range(len(alph)):
a[i] = s.count(alph[i])
print(maxim, alph[a.index(max(a))])
Ошибка.
Попробуйте повторить позже
В единственной строке файла находится строка
состоящая не более чем из
маленьких букв английского
алфавита. Определите можно ли добавить некоторое(возможно нулевое) количество букв «a» в начало строки, чтобы
строка стала палиндромом.
Напомним вам, что палиндромом называются строки, которые читаются одинаково как слева-направо, так и справа-налево.
В ответ запишите наименьшее необходимое количество букв «a», а если строку s невозможно сделать палиндромом
проделывая описанную операцию — запишите в ответ .
S = open("24.txt").readline() # Проверка, является ли исходная строка палиндромом if S == S[::-1]: # S[::-1] - срез переворачивания строки print(0) # Выводим необходимое количество букв ’a’, то есть 0 else: # Иначе нужно попробовать дописать в начало строки буквы ’a’ left_count_a = 0 # Счётчик для букв ’a’ слева right_count_a = 0 # Счётчик для букв ’a’ справа for i in range(len(S) // 2): # Пока слева будут идти буквы ’a’, будем увеличивать счётчик if S[i] == ’a’: left_count_a += 1 # В ином случае остановим цикл else: break # Аналогично с буквами ’a’ с правого конца строки for i in range(len(S) // 2): if S[-i - 1] == ’a’: right_count_a += 1 else: break # Если слева букв ’a’ меньше, чем справа, # то можно добавить недостающеее количество букв ’a’ слева if left_count_a <= right_count_a: S = ’a’ * (right_count_a - left_count_a) + S # В ином случае при дописывании слева букв ’a’ # строка никогда не станет палиндромом, # так как справа букв ’a’ меньше # В итоге проверим, стала ли строка палиндромом if S == S[::-1]: # Выводим необходимое количество букв ’a’ print(right_count_a - left_count_a) else: # Выводим -1, что означает, # что строку нельзя сделать палиндромом таким образом print(-1)
Ошибка.
Попробуйте повторить позже
В файле 24.txt в первой строке находится строка s, состоящая не более чем из строчных букв английского алфавита.
Во второй строке находится строка t, состоящая не более чем из
строчных букв английского алфавита. В третьей
строке находится строка p, состоящая не более чем из
строчных букв английского алфавита. Каждая операция
выглядит следующим образом: вы выбираете любой символ из строки
, удаляете его из
и вставляете в любую
позицию строки
(вы можете вставить этот символ куда захотите: в начало
, в конец или между любыми двумя подряд
идущими символами). Вам нужно выполнить несколько (возможно, ноль) операций так, чтобы строка
стала равна
строке
. Вам гарантируется, что это возможно. Запишите в ответе взвешенную сумму букв, которые необходимо удалить
из
и вставить в
.
За каждую букву добавьте к сумме
, за каждую
,
,
.
Решение на Python:
f = open(’24.txt’) ans = 0 s, t, p = f.readline(), f.readline(), f.readline() ABS = sorted(’qwertyuiopasdfghjklzxcvbnm’) a_t, a_s = [0] * 26, [0] * 26 for i in range(26): a_t[i] = t.count(ABS[i]) a_s[i] = s.count(ABS[i]) for i in range(26): ans += (a_t[i] - a_s[i]) * (i + 1) print(ans)
Ошибка.
Попробуйте повторить позже
В текстовом файле 9.txt находится цепочка из цифр. Преобразуйте строку, так чтобы подцепочки из одинаковых элементов были заменены на подцепочку из одного символа. Например, если часть строки выглядит так “111322114444”, то она заменится на “13214”. В ответе запишите сумму всех элементов преобразованной цепочки.
f = open("9.txt") s = f.readline() temp_s = s[0] for i in range(1, len(s)): if s[i] != temp_s[-1]: temp_s += s[i] print(sum([int(_) for _ in temp_s]))
Ошибка.
Попробуйте повторить позже
В текстовом файле 9.txt находится цепочка из цифр. Преобразуйте строку, так чтобы подцепочки из одинаковых элементов были заменены на подцепочку из одного символа. Например, если часть строки выглядит так “111322114444”, то она заменится на “13214”. В ответе запишите целую часть суммы всех элементов преобразованной цепочки, поделенной на 93.
file = open(’24.txt’) s = file.read() temp_s = ’’ old = ’’ for i in range(len(s)): if s[i] != old: temp_s += s[i] old = s[i] print(sum([int(_) for _ in temp_s]) // 93)
Ошибка.
Попробуйте повторить позже
Текстовый файл 24.txt состоит не более чем из заглавных латинских букв и разбит на строки различной длины.
Определите количество строк, в которых буква Q встречается чаще буквы G, а буква P чаще буквы
I.
f = open("24.txt") a = f.readlines() coun = 0 for s in a: if s.count(’Q’) > s.count(’G’) and s.count(’P’) > s.count(’I’): coun += 1 print(coun)
Ошибка.
Попробуйте повторить позже
В текстовом файле 1.txt находится цепочка из символов латинского алфавита A, C, D, F,O. Найдите третье вхождение подцепочки ”FOCCD” и запишите в ответе позицию, с которой она начинается. Индексация начинается с 1.
f = open(’D:/241.txt’) a = f.readline() # Выполняем всего три замены, чтобы было удобно искать a = a.replace(’FOCCD’, ’*****’, 3) # rfind(*искомый элемент*) — поиск вхождения с конца, # +1 прибаляем, т.к. индексация с нуля идёт, а мы считаем с единицы print(a.rfind(’*****’)+1)
Ошибка.
Попробуйте повторить позже
Текстовый файл 9.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на строки
различной длины. В строках, содержащих более 35 букв H, нужно определить и вывести максимальное расстояние
между одинаковыми буквами в одной строке.
f = open(’C:/249.txt’) s = f.readlines() # Алфавит abc = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’ ml = 0 # Пробегаемся по каждой строке for i in s: if i.count(’H’) > 35: # Пробегаемся по каждой букве for l in abc: # i.find(l) — первое появление буквы # i.rfind(l) — последнее появление буквы ml = max(ml, i.rfind(l)-i.find(l)) print(ml)
Ошибка.
Попробуйте повторить позже
Текстовый файл 10.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на
строки различной длины. Определите количество строк, в которых буква T встречается чаще, чем буква
B.
f = open(’C:/2410.txt’) s = f.readlines() c = 0 for i in s: if i.count(’T’) > i.count(’B’): c += 1 print(c)
Ошибка.
Попробуйте повторить позже
Текстовый файл 11.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на строки
различной длины. Определите количество строк, в которых встречается комбинация K*N, где звёздочка обозначает
любой символ.
f = open(’C:/2411.txt’) s = f.readlines() abc = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’ c = 0 for i in s: # Перебором букв выявляем наличие подходящей комбинации for l in abc: if ’K’+l+’N’ in i: c += 1 # Чтобы было без повторов, прерываем цикл break print(c)
Ошибка.
Попробуйте повторить позже
Текстовый файл 15.txt содержит только символы A, B, C, D, E,F. Определите максимальное количество идущих подряд пар символов вида согласная + гласная.
f = open(’C:/2415.txt’) s = f.readline() abc1 = ’AEIOUY’ abc2 = ’BCDFGHJKLMNPQRSTVWXZ’ c = 0 mx = 0 # Делаем 2 цикла, # один начинает с первого символа, # другой со второго. # Шаг делаем в две единицы, чтобы проверять по два символа for i in range(0, len(s), 2): # Чтобы индекс не вылез за границу строки if i != len(s) - 1: if s[i] in abc2 and s[i+1] in abc1: c += 1 mx = max(mx, c) else: c = 0 for i in range(1, len(s), 2): if i != len(s)-1: if s[i] in abc2 and s[i+1] in abc1: c += 1 mx = max(mx, c) else: c = 0 print(mx)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов и содержит заглавные буквы английского алфавита и цифры.
Определите максимальное число, записанное в этом файле между TT и удовлетворяющее маске «12??34???5», где
символ ? обозначает любую цифру. Пример такого числа: 1200340005. Найдите сумму цифр найденного
числа.
def sum_of_digits(n):#Функция,возвращающая сумму цифр числа s = 0 while n > 0: s += n % 10 n//= 10 return s s = open(’24__1udcl.txt’).readline() c=0 s = s.split(’T’) for x in s: if len(x) == 10 and x.isdigit(): if x[0:2] == ’12’ and x[-1] == ’5’ and x[4:6] == ’34’: c=max(c,sum_of_digits(int(x))) print(c)
Ошибка.
Попробуйте повторить позже
В текстовом файле 3.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите четвертое вхождение подцепочки ”BBDEC” и запишите в ответе позицию, с которой она начинается.
f = open(’C:/24/3.txt’) s = f.readline() c = 0 for i in range(len(s)-4): if s[i:i+5] == ’BBDEC’: c += 1 if c == 4: print(i+1) break
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из строк, каждая из которых состоит не более чем из
заглавных букв
латинского алфавита. Найдите количество нечетных строк (счет с 1) четной длины, в которых количество повторений
символа
кратно трем, при этом в первой половине строки количество сочетаний
не меньше количества
сочетаний
, а во второй половине количество символов
не должно превышать количество символов
.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "24-1.txt". В ответе запишите искомое количество.
f = open(’file.txt’) i = 1 count = 0 for line in f: if (i % 2 == 1): line = line.strip() # нужно убрать символ переноса строки n = len(line) if (n % 2 == 0) and (line.count(’A’) % 3 == 0): if (line[:n//2].count(’AR’) >= line[:n//2].count(’PARK’)) and\ (line[n//2:].count(’M’) <= line[n//2:].count(’O’)): count += 1 i += 1 print(count)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из заглавных букв латинского алфавита. Гарантируется, что количество
символов в строке четное. Вам нужно заменить некоторые латинские буквы на другие таким образом, чтобы из символов
строки можно было составить палиндром. Например, для строки AVRORA можно заменить O на V или V на O, тогда из
данного набора букв мы сможем составить палиндром.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "24-2.txt". В ответе запишите минимальное количество замен, которые нужно сделать.
f = open("24-2__1voqd.txt") s = f.read() ar = [0] * 100 for i in range(len(s)): ar[ord(s[i])] += 1 ans = 0 for i in range(65, 91): if ar[i] % 2 == 1: ans += 1 print(ans // 2)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из строк, каждая из которых состоит не менее чем из 15 и не более чем из
заглавных букв
,
,
,
. Найдите количество строк, в которых либо изначально есть 15-символьный палиндром,
либо его можно получить перестановкой пары символов из данной подстроки. Например, для строки
можно
поменять символы
и
местами.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "24-3.txt". В ответе запишите искомое количество строк.
def check(st): if st == st[::-1]: return True for i in range(15): for j in range(i + 1, 15): arr = list(st) arr[i], arr[j] = arr[j], arr[i] if arr == arr[::-1]: return True return False f = open("24-3.txt") ans = 0 for s in f: for j in range(len(s) - 14): if check(s[j:j + 15]): ans += 1 break print(ans)