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

Ис­пол­ни­тель КО­РАБ­ЛИК «живет» в огра­ни­чен­ном пря­мо­уголь­ном во­до­е­ме-ла­би­рин­те, раз­де­лен­ном на клет­ки и изоб­ра­жен­ном на ри­сун­ке (вид свер­ху). Серые клет­ки  — ска­ли­стые бе­ре­га, свет­лые  — сво­бод­ное про­стран­ство, без­опас­ное для пе­ре­дви­же­ния КО­РАБ­ЛИ­КА. По краю во­до­е­ма-ла­би­рин­та также на­хо­дят­ся скалы с на­не­сен­ны­ми на них но­ме­ра­ми и бук­ва­ми для удоб­ства иден­ти­фи­ка­ции кле­ток.

Си­сте­ма ко­манд ис­пол­ни­те­ля КО­РАБ­ЛИК:

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

При вы­пол­не­нии любой из этих ко­манд КО­РАБ­ЛИК пе­ре­ме­ща­ет­ся на одну клет­ку со­от­вет­ствен­но (по от­но­ше­нию к на­блю­да­те­лю): вверх ↑, вниз ↓, влево ←, впра­во →. Че­ты­ре ко­ман­ды про­ве­ря­ют ис­тин­ность усло­вия от­сут­ствия стены у каж­дой сто­ро­ны той клет­ки, где на­хо­дит­ся КО­РАБ­ЛИК (также по от­но­ше­нию к на­блю­да­те­лю):

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

Цикл

ПОКА <усло­вие> ко­ман­да

вы­пол­ня­ет­ся, пока усло­вие ис­тин­но, иначе про­ис­хо­дит пе­ре­ход на сле­ду­ю­щую стро­ку.

При по­пыт­ке пе­ре­дви­же­ния на любую серую клет­ку КО­РАБ­ЛИК раз­би­ва­ет­ся о скалы.

Сколь­ко кле­ток при­ве­ден­но­го ла­би­рин­та со­от­вет­ству­ют тре­бо­ва­нию, что, стар­то­вав в ней и вы­пол­нив пред­ло­жен­ную ниже про­грам­му, КО­РАБ­ЛИК не разо­бьет­ся?

 

НА­ЧА­ЛО

ПОКА <спра­ва сво­бод­но> впра­во

ПОКА <слева сво­бод­но> влево

вверх

влево

КОНЕЦ

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

Ре­ше­ние.

Раз­бить­ся Ко­раб­лик может толь­ко при вы­пол­не­нии ко­манд "вверх" и "влево". Начав из любой клет­ки строк 1, 3, 4, 5, 7, столб­ца А и кле­ток E6−J6 ко­раб­лик разобьётся, вы­пол­няя ко­ман­ду влево. Стар­то­вав из кле­ток С2, E2, G2, I2, K2, M2, O2, O4, O6, O8 ко­раб­лик уце­ле­ет. Таким об­ра­зом, усло­вию удо­вле­тво­ря­ет 10 кле­ток.

 

Ответ: 10.

Раздел кодификатора ФИПИ: 1.6.2 Вы­чис­ли­мость. Эк­ви­ва­лент­ность ал­го­рит­ми­че­ских мо­де­лей
Гость 17.12.2013 12:12

Здрав­ствуй­те. Мне ка­жет­ся, что в ре­ше­ние по­па­дут все клет­ки, огра­ни­чен­ные ска­ла­ми слева и спра­ва (в этом слу­чае ко­раб­лик во­об­ще не будет дви­гать­ся). Это клет­ки A2-A7, C2-C6, E2-E5, G2-G4, I2-I3, K2, M2, O2, O4, O6, O8. В общем таких кле­ток 26.

Во-вто­рых, если учесть, что ко­раб­лик всё-таки будет дви­гать­ся, то мы можем взять клет­ки A8-I8 (9 кле­ток). Стар­то­вав из любой из этих кле­ток, ко­раб­лик за­кон­чит пер­вый цикл в точке I8. А потом смо­жет 2 раза вы­пол­нить 2-ой цикл, не раз­бив­шись.

26+9=35.

Т.е. кле­ток, со­от­вет­ству­ю­щих тре­бо­ва­нию, 35.

Ис­правь­те, по­жа­луй­ста, если оши­ба­юсь.

Петр Мурзин

Вы не учли, что по­след­ние две ко­ман­ды: "вверх" и "впра­во" не вхо­дят в циклы. По­это­му ваше ре­ше­ние не­вер­но.