ОГЭ В КОМПЬЮТЕРНОМ ВИДЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На бес­ко­неч­ном поле есть го­ри­зон­таль­ная и вер­ти­каль­ная стены. Пра­вый конец го­ри­зон­таль­ной стены со­еди­нен с верх­ним кон­цом вер­ти­каль­ной стены. Длины стен не­из­вест­ны. В каж­дой стене есть ровно один про­ход, точ­ное место про­хо­да и его ши­ри­на не­из­вест­ны. Робот на­хо­дит­ся в клет­ке, рас­по­ло­жен­ной не­по­сред­ствен­но под го­ри­зон­таль­ной сте­ной у ее ле­во­го конца. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния стен и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

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

При ис­пол­не­нии ал­го­рит­ма Робот не дол­жен раз­ру­шить­ся, вы­пол­не­ние ал­го­рит­ма долж­но за­вер­шить­ся. Ко­неч­ное рас­по­ло­же­ние Ро­бо­та может быть про­из­воль­ным. Ал­го­ритм дол­жен ре­шать за­да­чу для лю­бо­го до­пу­сти­мо­го рас­по­ло­же­ния стен и лю­бо­го рас­по­ло­же­ния и раз­ме­ра про­хо­дов внут­ри стен. Ал­го­ритм может быть вы­пол­нен в среде фор­маль­но­го ис­пол­ни­те­ля или за­пи­сан в тек­сто­вом ре­дак­то­ре. Со­хра­ни­те ал­го­ритм в файле.

15.2 На­пи­ши­те про­грам­му, ко­то­рая в по­сле­до­ва­тель­но­сти на­ту­раль­ных чисел опре­де­ля­ет ко­ли­че­ство чисел, крат­ных 4, но не крат­ных 7. Про­грам­ма по­лу­ча­ет на вход ко­ли­че­ство чисел в по­сле­до­ва­тель­но­сти, а затем сами числа. В по­сле­до­ва­тель­но­сти все­гда име­ет­ся число, крат­ное 4 и не крат­ное 7. Ко­ли­че­ство чисел не пре­вы­ша­ет 1000. Вве­ден­ные числа не пре­вы­ша­ют 30 000. Про­грам­ма долж­на вы­ве­сти одно число: ко­ли­че­ство чисел, крат­ных 4, но не крат­ных 7.