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

Ис­пол­ни­тель Че­ре­па­ха дей­ству­ет на плос­ко­сти с де­кар­то­вой си­сте­мой ко­ор­ди­нат. В на­чаль­ный мо­мент Че­ре­па­ха на­хо­дит­ся B на­ча­ле ко­ор­ди­нат, её го­ло­ва на­прав­ле­на вдоль по­ло­жи­тель­но­го на­прав­ле­ния оси ор­ди­нат, хвост опу­щен. При опу­щен­ном хво­сте Че­ре­па­ха остав­ля­ет на поле след в виде линии. В каж­дый кон­крет­ный мо­мент из­вест­но по­ло­же­ние ис­пол­ни­те­ля и на­прав­ле­ние его дви­же­ния. У ис­пол­ни­те­ля су­ще­ству­ет 5 ко­манд: Под­нять хвост, озна­ча­ю­щая пе­ре­ход к пе­ре­ме­ще­нию 6eз ри­со­ва­ния; Опу­стить хвост, озна­ча­ю­щая пе­ре­ход в режим ри­со­ва­ния; Вперёд n (где n  — целое число), вы­зы­ва­ю­щая пе­ре­дви­же­ние Че­ре­па­хи на n еди­ниц в том на­прав­ле­нии, куда ука­зы­ва­ет её го­ло­ва; Назад n (где n  — целое число), вы­зы­ва­ю­щая пе­ре­дви­же­ние в про­ти­во­по­лож­ном го­ло­ве на­прав­ле­нии; На­пра­во t (где t  — целое число), вы­зы­ва­ю­щая из­ме­не­ние на­прав­ле­ния дви­же­ния на t гра­ду­сов по ча­со­вой стрел­ке, На­ле­во t (где t  — целое число), вы­зы­ва­ю­щая из­ме­не­ние на­прав­ле­ния дви­же­ния на t гра­ду­сов про­тив ча­со­вой стрел­ки. За­пись По­вто­ри k [Ко­ман­да1 Ко­ман­да2 ... Ко­ман­даS] озна­ча­ет, что по­сле­до­ва­тель­ность из S ко­манд по­вто­рит­ся k раз.

 

Че­ре­па­хе был дан для ис­пол­не­ния сле­ду­ю­щий ал­го­ритм:

По­вто­ри 2 [Вперёд 14 На­ле­во 270 Назад 12 На­пра­во 90]

Под­нять хвост

Вперёд 9 На­пра­во 90 Назад 7 На­ле­во 90

Опу­стить хвост

По­вто­ри 2 [Вперёд 13 На­пра­во 90 Вперёд 6 На­пра­во 90].

 

Опре­де­ли­те, сколь­ко точек с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми на­хо­дят­ся внут­ри объ­еди­не­ния фигур, огра­ни­чен­но­го за­дан­ны­ми ал­го­рит­мом ли­ни­я­ми, вклю­чая точки на ли­ни­ях

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

Ре­ше­ние.

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

Вы­бе­ри­те мас­штаб сетки рав­ным 1, за­пу­сти­те про­грам­му для ис­пол­ни­те­ля Че­ре­па­ха.

ис­поль­зо­вать Че­ре­па­ха

алг

нач

опу­стить хвост

нц 2 раз

впе­ред(14)

влево(270)

назад(12)

впра­во(90)

кц

под­нять хвост

впе­ред (9)

впра­во(90)

назад (7)

влево(90)

опу­стить хвост

нц 2 раз

впе­ред (13)

впра­во(90)

впе­ред (6)

впра­во(90)

кц

кон

После вы­пол­не­ния про­грам­мы счи­та­ем точки: 251.

 

Ответ: 251.

 

При­ведём по­стро­е­ние ри­сун­ка на языке Python.

from turtle import *

m = 20 # Мас­штаб

tracer(0)

screensize(5000, 5000) # уве­ли­чим раз­мер окна

pd() # опус­ка­ем хвост

left(90) # по­во­ра­чи­ва­ем го­ло­ву в сто­ро­ну

# по­ло­жи­тель­но­го на­прав­ле­ния оси ор­ди­нат

# Ал­го­ритм

for i in range(2):

forward(14 * m)

left(270)

backward(12 * m)

right(90)

pu() # под­ни­ма­ем хвост

forward(9 * m)

right(90)

backward(7 * m)

left(90)

pd() # опус­ка­ем хвост

for i in range(2):

forward(13 * m)

right(90)

forward(6 * m)

right(90)

pu()# под­ни­ма­ем хвост

# Про­став­ле­ние точек

for x in range(-10, 100):

for y in range(-10, 110):

goto(x * m, y * m)

dot(3)

done()

 

При­ведём ана­ли­ти­че­ское ре­ше­ние Алек­сандра Коз­ло­ва.

Фор­маль­но вы­пол­ним ко­ман­ды (можно на листе):

По­вто­ри 2 [Вперёд 14 На­ле­во 270 Назад 12 На­пра­во 90]:

Вперёд 14: (0,0)→(0,14) На­ле­во 270°: Назад 12: (0,14)→(-12,14) На­пра­во 90°: те­перь на­прав­ле­ние  — вниз (270°).

Вывод: Цикл стро­ит пря­мо­уголь­ник с ко­ор­ди­на­та­ми вер­шин (0,0),(0,14),(-12,14),(-12,0)

Ана­ло­гич­но вы­пол­ня­ем сле­ду­ю­щие ко­ман­ды: сме­ща­ем­ся в точку с ко­ор­ди­на­та­ми: (-7,9) и стро­им новый пря­мо­уголь­ник с ко­ор­ди­на­та­ми вер­шин: (-7, 9), (-7, 22), (-1, 22), (-1, 9)

 

Для на­хож­де­ния пло­ща­ди плос­ко­сти с ри­сун­ком не­об­хо­ди­мо его вы­со­ту умно­жить на ши­ри­ну 22 · 12, но нам не­об­хо­ди­мо найти не пло­щадь, а ко­ли­че­ство точек, ле­жа­щих на его плос­ко­сти. Для этого учтем, что на любом от­рез­ке точек все­гда боль­ше на 1 сле­до­ва­тель­но, ко­ли­че­ство точек на всей плос­ко­сти ри­сун­ка равно 23 · 13 = 299. Оста­ет­ся по вер­ши­нам кле­то­чек под­счи­тать ко­ли­че­ство точек не при­над­ле­жа­щих ри­сун­ку.

 

Окон­ча­тель­но по­лу­ча­ем 299 – (8*5+8) = 251.

 

a=0 # на­хо­дим раз­мер всего ри­сун­ка в точ­ках

for x in range(-12, 1):

for y in range(0, 23):

a+=1

b=0 # на­хо­дим ко­ли­че­ство ис­клю­ча­е­мых точек слева от кон­ту­ра ри­сун­ка

for x in range(-12, -7):

for y in range(15, 23):

b+=1

c=0 # на­хо­дим ко­ли­че­ство ис­клю­ча­е­мых точек спра­ва от кон­ту­ра ри­сун­ка

for x in range(0, 1):

for y in range(15, 23):

c+=1

# на­хо­дим ко­ли­че­ство точек ле­жа­щих на кон­ту­ре и внут­ри его

print(a-(b+c))

 

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

from turtle import *

m = 12

tracer(0)

lt(90)

for i in range(2):

fd(14 * m)

lt(270)

bk(12 * m)

rt(90)

pu()

fd(9 * m)

rt(90)

bk(7 * m)

lt(90)

pd()

for i in range(2):

fd(13 * m)

rt(90)

fd(6 * m)

rt(90)

pu()

hxs = 0

k = 0

for x in range(-12, 1):

for y in range(0, 23):

hxs += 1

goto(x * m, y * m)

dot(5)

if (x<-7 and y>=15) or (x>-1 and y>=15):

dot(5,'red')

k+=1

print(hxs,' - ',k,' = ',hxs-k)

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва с по­мо­щью элек­трон­ных таб­лиц.

Пер­вые пять столб­цов оза­глав­ли­ва­ем: x, y, угол, дви­же­ние, по­во­рот. За­пи­сы­ва­ем на­зва­ния в ячей­ки A1:E1.

В ячей­ки A2:C2 за­пи­сы­ва­ем на­чаль­ное со­сто­я­ние че­ре­па­хи: 0, 0, 90.

Далее за­пол­ня­ем столб­цы «дви­же­ние» и «по­во­рот». В стол­бец «дви­же­ние» за­пи­сы­ва­ем па­ра­метр ко­ман­ды «впе­ред». Для ко­ман­ды назад пишем её па­ра­метр со зна­ком минус.

В стол­бец «по­во­рот» за­пи­сы­ва­ем па­ра­метр ко­ман­ды «на­пра­во». Для ко­ман­ды «на­ле­во» пишем её па­ра­метр со зна­ком минус.

Таким об­ра­зом, в одной стро­ке мы за­да­ем сразу две ко­ман­ды: дви­же­ние и по­во­рот. Если нам нужно что-то одно, то вто­рым па­ра­мет­ром мы ука­зы­ва­ем 0.

В ячей­ку A3 за­пи­сы­ва­ем фор­му­лу =A2+D2*COS(РА­ДИ­А­НЫ(C2)), в ячей­ку B3 = фор­му­лу =B2+D2*SIN(РА­ДИ­А­НЫ(C2)), а в ячей­ку C3 - фор­му­лу =ОСТАТ(C2-E2;360). Раз­мно­жа­ем эти три ячей­ки до конца нашей про­грам­мы и на одну строч­ку ниже.

Циклы ре­а­ли­зу­ем, за­пи­сы­вая груп­пу ко­манд тре­бу­е­мое число раз.

Если по­стро­ить по пер­вым двум столб­цам диа­грам­му X-Y, «точки и линии», то мы уви­дим путь че­ре­па­хи.

 

При­ведём по­стро­е­ние ри­сун­ка Сер­гея Донец на PascalABC.NET:

uses turtle;

begin

down;

loop 2 do begin

Forw(14);TurnLeft(270);Forw(-12);TurnRight(90);

end;

up;

Forw(9);TurnRight(90);Forw(-7);TurnLeft(90);

down;

loop 2 do begin

Forw(13);TurnRight(90);Forw(6);TurnRight(90);

end;

end.

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2026 по ин­фор­ма­ти­ке