24.03 Прочие прототипы
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов ’(’ и ’)’. Известно, что правильная скобочная последовательность
берет начало в начале файла. Вам необходимо узнать какую максимальну длину имеет правильная скобочная
последовательность. Правильная скобочная последовательность - последовательность скобок, которая подчиняется
нескольким правилам:
1) Последовательность начинается с открывающейся скобки
2) Каждая открывающаяся скобка имеет в пару закрывающаяся скобку
3) Количество открывающихся скобок в любой точке скобочной последовательности больше либо равно количеству закрывающихся
Примеры правильных скобочных последовательностей: ,
.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "24-4.txt". В ответе запишите длину искомой последовательности.
f = open(’24-4.txt’) s = f.read() count_left = 1 count_right = 0 for i in range(1, len(s)): if s[i] == ’(’: count_left += 1 else: if count_left > count_right: count_right += 1 else: break print(count_right + count_left)
Ошибка.
Попробуйте повторить позже
В единственной строке файла находится строка
состоящая не более чем из
маленьких букв английского
алфавита. Определите можно ли добавить некоторое (возможно нулевое) количество латинских букв в начало строки,
чтобы строка в итоге стала палиндромом.
Напомним вам, что палиндромом называются строки, которые читаются одинаково как слева-направо, так и справа-налево.
В ответ запишите наименьшее необходимое количество латинских букв.
S = open("24-5.txt").readline() ans = -1 # Переменная для ответа for i in range((len(S) + 1) // 2 - 1, -1, -1): # Перебор "середины" строки chet = True # Переменная-флаг для палиндрома чётной длины nechet = True # Переменная-флаг для палиндрома нечётной длины for j in range(i + 1): # Перебираем зеркальные символы для проверки палиндрома if S[i - j] != S[i + j]: # Симметрия для нечётной длины нарушена nechet = False if 2 * i + 1 == len(S): # Изначально i не может являться серединой строки с чётной длиной chet = False elif S[i - j] != S[i + j + 1]: # Симметрия для чётной длины нарушена chet = False if nechet == False and chet == False: break if chet: # Для текущего i можно получить палиндром чётной длины ans = len(S) - 2 * (i + 1) break elif nechet: # Для текущего i можно получить палиндром нечётной длины ans = len(S) - 2 * i - 1 break print(ans)
Ошибка.
Попробуйте повторить позже
Текстовый файл 1-3.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на
строки различной длины. Определите количество строк, в которых буква N встречается реже, чем буква
B.
f = open(’1-3.txt’) a = 0 for s in f: if(s.count(’N’) < s.count(’B’)): a += 1 print(a)
Ошибка.
Попробуйте повторить позже
Текстовый файл 1-3.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на строки
различной длины. Определите количество строк, в которых комбинация SY встречается больше двух
раз.
f = open(’1-3.txt’) a = 0 for s in f: if(s.count(’SY’)>2): a += 1 print(a)
Ошибка.
Попробуйте повторить позже
Текстовый файл 1-3.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на строки
различной длины. Определите количество строк, в которых встречается комбинация T**O, где звёздочка обозначает
любой символ.
f = open(’1-3.txt’) text = [] count = 0 for i in range(1000): text.append(f.readline()) for i in range(len(text)): for j in range(len(text[i]) - 3): if text[i][j] == ’T’ and text[i][j + 3] == ’O’: count += 1 break print(count)
Ошибка.
Попробуйте повторить позже
Текстовый файл 4.txt состоит не более чем из заглавных латинских букв (A..Z). Файл разбит на строки различной
длины. В строках, содержащих более 64 букв R, нужно определить и вывести максимальное расстояние между
одинаковыми буквами в одной строке.
f = open("4.txt") p = f.readlines() maxi = 0 a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] for j in p: for i in a: if j.rfind(i) - j.find(i) > maxi and j.count("R") > 64: maxi = j.rfind(i) - j.find(i) print(maxi)
Ошибка.
Попробуйте повторить позже
В текстовом файле 9.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите третье вхождение подцепочки ”CEADD” и запишите в ответе букву, которая стоит после этой подцепочки.
f = open(’9.txt’) s = f.readline() k = 0 for i in range (0, len(s)-4): if s[i] == ’C’: if s[i+1] == ’E’: if s[i+2] == ’A’: if s[i+3] == ’D’: if s[i+4] == ’D’: k += 1 if k == 3: print(s[i+5]) break
Ошибка.
Попробуйте повторить позже
В текстовом файле 1.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите второе вхождение подцепочки ”DEBAC” и запишите в ответе позицию, с которой она начинается. Отсчёт позиции начинается с 1.
f = open(’1.txt’) s = f.readline() k = 0 for i in range (0, len(s)-4): if s[i] == ’D’: if s[i+1] == ’E’: if s[i+2] == ’B’: if s[i+3] == ’A’: if s[i+4] == ’C’: k += 1 if k == 2: print(i+1) break
Ошибка.
Попробуйте повторить позже
Текстовый файл 6.txt содержит последовательность из строчных и заглавных букв английского алфавита и цифр, всего
не более символов. Запишите в ответе номер символа, с которого начинается наибольшая убывающая
подпоследовательность. Убывающей подпоследовательностью будем называть последовательность символов,
расположенных в порядке уменьшения их номера в кодовой таблице символов ASCII. Нумерация символов начинается
с 1. Если таких последовательностей несколько, используйте последнюю из них.
f = open(’6.txt’) s = f.readline() count = 1 maxi = 0 nomer = 0 nomermax = 0 for i in range (1,len(s)): if ord(s[i])<ord(s[i-1]): if count ==1: nomer = i count+=1 if count >= maxi: maxi = count nomermax = nomer else: count = 1 print(nomermax)
Ошибка.
Попробуйте повторить позже
В текстовом файле 9.txt находится цепочка из цифр. Преобразуйте строку, так чтобы подцепочки из одинаковых элементов были заменены на подцепочку из одного символа. Например, если часть строки выглядит так “111322114444”, то она заменится на “13214”. В ответе запишите сумму всех элементов преобразованной цепочки.
f = open (’9.txt’) s = f.readline() k = ’’ for i in range (0,len(s)-1): if s[i] != s[i+1]: k += s[i] k += s[-1] summa = 0 for x in k: summa += int(x) print(summa)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит из символов A, C, D, F и U. Определите максимальное количество идущих подряд символов, среди которых не более 3 пар вида гласная + согласная в прилагаемом файле. В ответ запишите количество найденных символов.
s = open(’24_1.txt’).readline() s = s.replace(’A’, ’U’).replace(’F’,’C’).replace(’D’, ’C’) s = s.replace(’UC’,’U C’).split() m = 0 for i in range(len(s)-3): s1 = s[i] + s[i+1] + s[i+2] + s[i+3] if len(s1) > m: m = len(s1) print(m)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит из символов A, B, C. Определите максимальную длину подпоследовательности подряд идущих символов, состоящую из троек вида гласная + согласная + согласная.
В ответе запишите одно число – значение найденной длины.
s = open(’24_2.txt’).readline() s = s.replace(’ABB’, ’X’).replace(’ABC’, ’X’).replace(’ACB’, ’X’).replace(’ACC’, ’X’) m = 0 mmax = 0 for i in s: if i == ’X’: m += 1 if m > mmax: mmax = m else: m = 0 print(mmax*3)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит из заглавных букв латинского алфавита. Определите максимальное количество подряд идущих символов, среди которых нет сочетания KK, но есть сочетание FM.
В ответ запишите количество найденных символов.
s = open(’24_3.txt’).readline() while ’KK’ in s: s = s.replace(’KK’, ’K K’) n = 0 for i in s.split(): if ’FM’ in i: n = max(n, len(i)) print(n)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит из символов A, B и цифр 1, 2. Определите максимальное количество идущих подряд четверок символов вида буква + двухзначное число + буква.
В ответ запишите количество найденных четверок.
s = open(’24_4.txt’).readline() s = s.replace(’A’, ’B’).replace(’1’, ’2’) s = s.replace("B22B22B", "B22B B22B") s = s.replace(’B22B’, ’*’).replace(’2’, ’ ’).replace(’B’, ’ ’) print(max(len(i) for i in s.split()))
Ошибка.
Попробуйте повторить позже
В текстовом файле 3.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите четвертое вхождение подцепочки «DFAAB» и запишите в ответе букву, которая стоит перед этой подцепочкой.
f = open(’3.txt’)#чтение файла a = f.readline() a = a.replace(’DFAAB’, ’*’, 4) #меняем первые 4 print(a[a.rfind(’*’)-1])
Ошибка.
Попробуйте повторить позже
Текстовый файл 1.txt содержит строку из заглавных латинских букв D, G и С, всего не более чем из символов.
Определите максимальное количество идущих подряд троек символов CGG или DDG.
#Решение через replace f = open(’1.txt’) s = f.readline() #Заменяем CGG и DDG на * s = s.replace(’CGG’,’*’).replace(’DDG’,’*’) #Запускаем цикл,который проверяет есть ли в строке i подряд идущих троек for i in range(len(s)): if ’*’*i in s: print(i) #Решение через циклы file = open(’1.txt’) s = file.read() max_counter = 0 temp_counter = 0 for start_step in range(3): for index in range(start_step, len(s) - len(s) % 3 - 2, 3): if s[index:index + 3] == "CGG" or s[index:index + 3] == "DDG": temp_counter += 1 max_counter = max(max_counter, temp_counter) else: temp_counter = 0 print(max_counter)
Ошибка.
Попробуйте повторить позже
Текстовый файл 24_10.txt содержит строку из заглавных латинских букв, всего не более чем из символов.
Определите количество подстрок длиной не менее 50 и не более 100 символов, которые начинаются и заканчиваются
буквой P и не содержат других букв P (кроме первой и последней), а также содержит минимум две буквы I и не
содержит букв O.
f = open(’24_10.txt’) s = f.readline() s = s.replace(’P’, ’P P’) a = s.split() c = 0 for i in a: if (i[0] == ’P’) and (i[-1] == ’P’) and (len(i) >= 50) \ and (len(i) <= 100) and (i.count(’I’) >= 2) and (not ’O’ in i): c += 1 print(c)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите минимальную длину подстроки, содержащую ровно 70 символов Y.
Для выполнения этого задания следует написать программу.
f = open(’24_20.txt’) s = f.readline() mini = 10**10 count = 0 pos = [] for i in range(len(s)): if s[i] == ’Y’: pos.append(i) for j in range(1, len(pos)-69): count=pos[j+69] - pos[j] + 1 if count < mini: mini = count print(mini)
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определить количество палиндромов длиной 5, в которых согласных букв больше гласных.
s = open(’24_13085.txt’).readline() words = [s[i:i+5] for i in range(len(s)-4) if s[i:i+5] == s[i:i+5][::-1]] m = ’AEIOUY’ count = 0 for i in words: gl = [x for x in i if x in m] sogl = [x for x in i if x not in m] if len(sogl) > len(gl): count += 1 print(count)
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите количество подстрок, которые могут быть составлены перестановкой букв слова MEOW.
from itertools import permutations s = open(’24_13085.txt’).readline() count = 0 for x in permutations(’MEOW’): word = ’’.join(x) count += s.count(word) print(count)