Задания
Версия для печати и копирования в MS Word
Тип 24 № 47021
i

Тек­сто­вый файл со­дер­жит толь­ко за­глав­ные буквы ла­тин­ско­го ал­фа­ви­та (ABCZ). Опре­де­ли­те ко­ли­че­ство групп из иду­щих под­ряд не менее 10 сим­во­лов, ко­то­рые на­чи­на­ют­ся и за­кан­чи­ва­ют­ся бук­вой A и не со­дер­жат дру­гих букв A (кроме пер­вой и по­след­ней) и букв B.

Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му. Ниже при­ведён файл, ко­то­рый не­об­хо­ди­мо об­ра­бо­тать с по­мо­щью дан­но­го ал­го­рит­ма.

За­да­ние 24

Спрятать решение

Ре­ше­ние.

Для ре­ше­ния за­да­чи счи­та­ем стро­ку из дан­но­го файла. С по­мо­щью ме­то­да string.ToWords разобьём стро­ку с раз­де­ли­те­лем A. После этого будем по­сле­до­ва­тель­но про­ве­рять длину каж­дой по­лу­чив­шей­ся стро­ки. Если длина по­лу­чив­шей­ся стро­ки боль­ше или равна 8 (по­сколь­ку не учи­ты­ва­ем первую и по­след­нюю буквы A) и стро­ка не со­дер­жит буквы B, будем уве­ли­чи­вать счётчик groups на еди­ни­цу.

 

При­ведём ре­ше­ние дан­ной за­да­чи на языке PascalABC.NET.

var

groups, i: integer;

s: string;

arr: array of string;

f: text;

begin

assign(f,'C:\24.txt');

reset(f);

groups := 0;

read(f, s);

arr := s.ToWords('A');

for i := 1 to arr.Length - 2 do

if (arr[i].Length >= 8) and (not arr[i].Contains('B')) then groups := groups + 1;

writeln(groups);

end.

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — 11138.

 

Ответ: 11138.

 

При­ме­ча­ние. Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

При­ведём ре­ше­ние на языке Python.

with open('24.txt') as f:

s = f.readline()

s = s.split('A')

ans = list(filter(lambda x: (not 'B' in x) and len(x) >= 8, s[1:-1]))

print(len(ans))

 

При­ведём дру­гое ре­ше­ние на языке Python.

with open('24.txt') as f:

s = f.readline()

s = s.split('A')

ans = sum(not 'B' in x and len(x) >= 8 for x in s)

print(ans)

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

a = open('24.txt').readline().split('A')[1:-1]

print(len([x for x in a if len(x)>=8 and not 'B' in x]))

 

При­ведём ре­ше­ние Ми­ха­и­ла Мит­ро­фа­но­ва (Вла­ди­мир) на языке Python.

f = open('24.txt').readline().replace('A','A*A').split('*')[1: -1]

count = 0

for x in f:

if len(x) >= 10 and x.count('B') == 0:

count += 1

print(count)

 

При­ведём ре­ше­ние Бо­ри­са Са­ве­лье­ва на языке Python.

f = open('24.txt')

ans = 0

f = f.readline().split('A')

for i in range (1,len(f)):

if len(f[i])>=8 and f[i].count('B')==0:

ans += 1

print(ans)


Аналоги к заданию № 46982: 47021 Все