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

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

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

За­да­ние 24

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

Ре­ше­ние.

Для ре­ше­ния за­да­чи счи­та­ем стро­ку из дан­но­го файла. С по­мо­щью ме­то­да string.ToWords разобьём стро­ку с раз­де­ли­те­лем E. После этого будем по­сле­до­ва­тель­но про­ве­рять длину каж­дой по­лу­чив­шей­ся стро­ки. Если длина по­лу­чив­шей­ся стро­ки боль­ше или равна 10 (по­сколь­ку не учи­ты­ва­ем первую и по­след­нюю буквы E) и стро­ка не со­дер­жит буквы F, будем уве­ли­чи­вать счётчик 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('E');

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

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

writeln(groups);

end.

 

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

 

Ответ: 9655.

 

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

 

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

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

s = f.readline()

s = s.split('E')

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

print(len(ans))

 

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

f = open('24.txt').readline().split('E')

print(len([x for x in f[1:-1] if len(x)>=10 and not 'F' in x]))

 

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

f = open('24.txt').readline().split('E')

c = 0

for i in f:

if len(i) >= 10 and i.count('F') == 0:

c += 1

print(c)


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