Задания
Версия для печати и копирования в MS Word
Тип Д18 C3 № 4637
i

Вы­бе­ри­те ОДНО из пред­ло­жен­ных ниже за­да­ний: 15.1 или 15.2.

 

15.1. Ис­пол­ни­тель Робот умеет пе­ре­ме­щать­ся по ла­би­рин­ту, на­чер­чен­но­му на плос­ко­сти, раз­би­той на клет­ки. Между со­сед­ни­ми (по сто­ро­нам) клет­ка­ми может сто­ять стена, через ко­то­рую Робот прой­ти не может. У Ро­бо­та есть де­вять ко­манд. Че­ты­ре ко­ман­ды  — это ко­ман­ды-при­ка­зы:

вверх    вниз    влево    впра­во

При вы­пол­не­нии любой из этих ко­манд Робот пе­ре­ме­ща­ет­ся на одну клет­ку со­от­вет­ствен­но: вверх ↑, вниз ↓, влево ←, впра­во →. Если Робот по­лу­чит ко­ман­ду пе­ре­дви­же­ния сквозь стену, то он раз­ру­шит­ся.

Также у Ро­бо­та есть ко­ман­да за­кра­сить, при ко­то­рой за­кра­ши­ва­ет­ся клет­ка, в ко­то­рой Робот на­хо­дит­ся в на­сто­я­щий мо­мент.

Еще че­ты­ре ко­ман­ды  — это ко­ман­ды про­вер­ки усло­вий. Эти ко­ман­ды про­ве­ря­ют, сво­бо­ден ли путь для Ро­бо­та в каж­дом из че­ты­рех воз­мож­ных на­прав­ле­ний:

свер­ху сво­бод­но   снизу сво­бод­но   слева сво­бод­но   спра­ва сво­бод­но

Эти ко­ман­ды можно ис­поль­зо­вать вме­сте с усло­ви­ем «eсли», име­ю­щим сле­ду­ю­щий вид:

если усло­вие то

по­сле­до­ва­тель­ность ко­манд

все

 

Здесь усло­вие — одна из ко­манд про­вер­ки усло­вия. По­сле­до­ва­тель­ность ко­манд  — это одна или не­сколь­ко любых ко­манд-при­ка­зов. На­при­мер, для пе­ре­дви­же­ния на одну клет­ку впра­во, если спра­ва нет стен­ки, и за­кра­ши­ва­ния клет­ки можно ис­поль­зо­вать такой ал­го­ритм:

если спра­ва сво­бод­но то

впра­во

за­кра­сить

все

 

В одном усло­вии можно ис­поль­зо­вать не­сколь­ко ко­манд про­вер­ки усло­вий, при­ме­няя ло­ги­че­ские связ­ки и, или, не, на­при­мер:

если (спра­ва сво­бод­но) и (не снизу сво­бод­но) то

впра­во

все

 

Для по­вто­ре­ния по­сле­до­ва­тель­но­сти ко­манд можно ис­поль­зо­вать цикл «пока», име­ю­щий сле­ду­ю­щий вид:

нц пока  усло­вие

по­сле­до­ва­тель­ность ко­манд

кц

 

На­при­мер, для дви­же­ния впра­во, пока это воз­мож­но, можно ис­поль­зо­вать сле­ду­ю­щий ал­го­ритм:

нц пока спра­ва сво­бод­но

впра­во

кц

 

Вы­пол­ни­те за­да­ние.

Робот на­хо­дит­ся в левом верх­нем углу ого­ро­жен­но­го про­стран­ства, име­ю­ще­го форму пря­мо­уголь­ни­ка. Раз­ме­ры пря­мо­уголь­ни­ка не­из­вест­ны. Где-то по­се­ре­ди­не пря­мо­уголь­ни­ка есть вер­ти­каль­ная стена, раз­де­ля­ю­щая пря­мо­уголь­ник на две части. В этой стене есть про­ход, при этом про­ход не яв­ля­ет­ся самой верх­ней или самой ниж­ней клет­кой стены. Точ­ное рас­по­ло­же­ние про­хо­да также не­из­вест­но. Одно из воз­мож­ных рас­по­ло­же­ний стены и про­хо­да в ней при­ве­де­но на ри­сун­ке (робот обо­зна­чен бук­вой «Р»):

 

На­пи­ши­те для Ро­бо­та ал­го­ритм, пе­ре­ме­ща­ю­щий ро­бо­та в пра­вый ниж­ний угол пря­мо­уголь­ни­ка (см. ри­су­нок):

 

Ал­го­ритм дол­жен ре­шать за­да­чу для про­из­воль­но­го раз­ме­ра поля и лю­бо­го до­пу­сти­мо­го рас­по­ло­же­ния стен внут­ри пря­мо­уголь­но­го поля. При ис­пол­не­нии ал­го­рит­ма Робот не дол­жен раз­ру­шить­ся.

 

Ал­го­ритм может быть вы­пол­нен в среде фор­маль­но­го ис­пол­ни­те­ля или  за­пи­сан в тек­сто­вом ре­дак­то­ре. Со­хра­ни­те ал­го­ритм в фор­ма­те про­грам­мы Кумир или в тек­сто­вом файле. На­зва­ние файла и ка­та­лог для со­хра­не­ния Вам со­об­щат ор­га­ни­за­то­ры эк­за­ме­на.

 

15.2. На­пи­ши­те про­грам­му для ре­ше­ния сле­ду­ю­щей за­да­чи. На кон­троль­ной ра­бо­те по ал­геб­ре уче­ни­кам 9 клас­са было пред­ло­же­но 10 при­ме­ров. Не­удо­вле­тво­ри­тель­ная оцен­ка вы­став­ля­ет­ся, если пра­виль­но ре­ше­но менее по­ло­ви­ны при­ме­ров. Сколь­ко не­удо­вле­тво­ри­тель­ных оце­нок было по­лу­че­но уче­ни­ка­ми? Если хотя бы один из уче­ни­ков пра­виль­но решил все за­да­чи, вы­ве­ди­те YES, иначе вы­ве­ди­те NO. Про­грам­ма по­лу­ча­ет на вход ко­ли­че­ство уче­ни­ков в клас­се N (1 ≤ N ≤ 30), затем для каж­до­го уче­ни­ка вво­дит­ся ко­ли­че­ство пра­виль­но ре­шен­ных при­ме­ров.

 

При­мер ра­бо­ты про­грам­мы:


Вход­ные дан­ные

Вы­ход­ные дан­ные

4

3

9

2

8

2

NO

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

Ре­ше­ние.

15.1. Сле­ду­ю­щий ал­го­ритм вы­пол­нит тре­бу­е­мую за­да­чу.

нц

пока спра­ва сво­бод­но

впра­во

кц

нц

пока не спра­ва сво­бод­но

вниз

кц

нц

пока спра­ва сво­бод­но

впра­во

кц

нц

пока снизу сво­бод­но

вниз

кц

 

15.2. Ва­ри­ант ре­ше­ния на языке Пас­каль.

var a, success, count, N, i: integer;

begin

count:= 0;

readln(N);

for i := 1 to N do begin

readln(a);

if a < 5 then count := count + 1;

if a = 10 then success := 1;

end;

writeln(count);

if success = 1 then writeln('YES')

else writeln('NO');

end.

 

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

count = 0

top = 0

n = int(input())

for i in range(1, n + 1):

a = int(input())

if a < 5:

count += 1

if a == 10:

top = 1

print(count)

if top == 1:

print('YES')

else:

print('NO')

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­ния 15.1Баллы
Ал­го­ритм пра­виль­но ра­бо­та­ет при всех до­пу­сти­мых ис­ход­ных дан­ных2
При всех до­пу­сти­мых ис­ход­ных дан­ных верно сле­ду­ю­щее:

1) вы­пол­не­ние ал­го­рит­ма за­вер­ша­ет­ся, и при этом Робот не

раз­би­ва­ет­ся;

2) за­кра­ше­но не более 10 лиш­них кле­ток;

3) оста­лись не­за­кра­шен­ны­ми не более 10 кле­ток из числа тех,

ко­то­рые долж­ны были быть за­кра­ше­ны

1
За­да­ние вы­пол­не­но не­вер­но, т. е. не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 1 или 2 балла0
Мак­си­маль­ный балл2

 

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­ния 15.2Баллы
Пред­ло­же­но вер­ное ре­ше­ние. Про­грам­ма пра­виль­но ра­бо­та­ет на всех при­ведённых выше те­стах. Про­грам­ма может быть за­пи­са­на на любом языке про­грам­ми­ро­ва­ния2
Про­грам­ма выдаёт не­вер­ный ответ на одном из те­стов, при­ведённых выше. На­при­мер, ре­ше­ние, в ко­то­ром не­вер­но за­да­но усло­вие от­бо­ра чисел: if (a mod 8 = 0) or (a > 9) and (a < 100), вы­даст не­пра­виль­ный ответ на тесте № 11
Про­грам­ма выдаёт на те­стах не­вер­ные от­ве­ты, от­лич­ные от опи­сан­ных в кри­те­рии на 1 балл0
Мак­си­маль­ный балл2
Раздел кодификатора ФИПИ: