№ 4643 (Уровень: Базовый)
(А. Калинин) Текстовый файл состоит из символов A, B и цифр 1, 2.
Определите максимальное количество идущих подряд троек символов вида двузначное число + буква в прилагаемом файле. Для выполнения этого задания следует написать программу.
Файлы к заданию: 24.txt
<aside> 💡 Комментарии к решению:
s = open('24.txt').readline()
- Читаем первую строку из файла '24.txt'
и сохраняем её в переменную s.s = s.replace('B', 'A').replace('2', '1')
- Заменяем символ 'B' на 'A' и '2' на '1' в строке s, чтобы удобнее отсеивать необходимые тройки.s = s.replace('11A', '*').replace('A', ' ').replace('1', ' ')
- Заменяем последовательность '11A'
на '*'
и символ 'A'
на пробел, затем символ '1'
на пробел в строке s. Таким образом в строке останутся только тройки.A = [len(i) for i in s.split()]
- Создаём список A
, содержащий длины каждой строчки после разбиения строки s
на список строк через метод .split()
по пробелам.print(max(A))
- Выводим максимальную длину из найденных в списке A
.</aside>
s = open('24.txt').readline()
s = s.replace('B', 'A').replace('2', '1')
s = s.replace('11A', '*').replace('A', ' ').replace('1', ' ')
A = [len(i) for i in s.split()]
print(max(A))
Это решение не такое оптимальное, поэтому без комментариев, но если нужно - напишите об этом в комментариях на канале.
import itertools
M = []
for s in itertools.product('12AB', repeat=3):
slovo = ''.join(s)
if slovo[-1] in 'AB':
if slovo.count('A') + slovo.count('B') == 1:
M.append(slovo)
print(M) # M = '12A 12B 21A 21B 11A 11B 22A 22B'
s = open('24.txt').readline()
for x in M:
s = s.replace(x, '*')
for x in '12AB':
s = s.replace(x, ' ')
A = [len(i) for i in s.split()]
print(max(A))