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

Ис­пол­ни­тель Че­ре­па­ха дей­ству­ет на плос­ко­сти с де­кар­то­вой си­сте­мой ко­ор­ди­нат. В на­чаль­ный мо­мент Че­ре­па­ха на­хо­дит­ся в на­ча­ле ко­ор­ди­нат, её го­ло­ва на­прав­ле­на вдоль по­ло­жи­тель­но­го на­прав­ле­ния оси ор­ди­нат, хвост опу­щен. При опу­щен­ном хво­сте Че­ре­па­ха остав­ля­ет на поле след в виде линии. В каж­дый кон­крет­ный мо­мент из­вест­но по­ло­же­ние ис­пол­ни­те­ля и на­прав­ле­ние его дви­же­ния. У ис­пол­ни­те­ля су­ще­ству­ет две ко­ман­ды: Вперёд r (где r  — по­ло­жи­тель­ное число), вы­зы­ва­ю­щая пе­ре­дви­же­ние Че­ре­па­хи на рас­сто­я­ние, рав­ное r, в том на­прав­ле­нии, куда ука­зы­ва­ет её го­ло­ва; На­пра­во m (где m  — целое число), вы­зы­ва­ю­щая из­ме­не­ние на­прав­ле­ния дви­же­ния на m гра­ду­сов по ча­со­вой стрел­ке.

За­пись По­вто­ри k [Ко­ман­да 1 Ко­ман­да 2 ... Ко­ман­да S] озна­ча­ет, что по­сле­до­ва­тель­ность из S ко­манд по­вто­рит­ся k раз.

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

На­пра­во 90 По­вто­ри 4 [Вперёд 4 ко­рень из: на­ча­ло ар­гу­мен­та: 5 конец ар­гу­мен­та На­пра­во 150 Вперёд 4 ко­рень из: на­ча­ло ар­гу­мен­та: 5 конец ар­гу­мен­та На­пра­во 300].

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

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

Ре­ше­ние.

Для ре­ше­ния будем ис­поль­зо­вать среду про­грам­ми­ро­ва­ния КуМир. Уста­но­вить зна­че­ние сетки 1.

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

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

алг

нач

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

впра­во(90)

нц 4 раз

впе­ред(4*5**0.5)

впра­во(150)

впе­ред(4*5**0.5)

впра­во(300)

кц

кон

 

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

 

Ответ: 99.

 

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

from turtle import *

screensize(3000, 3000)

tracer(0)

m = 30

left(90)

right(90)

for i in range(4):

forward(4 * (5 ** 0.5) * m)

right(150)

forward(4 * (5 ** 0.5) * m)

right(300)

penup()

for x in range(-40, 40):

for y in range(-40, 40):

setpos(x * m, y * m)

dot(3, 'red')

done()

 

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

uses turtle;

begin

down;

TurnRight(90);

loop 4 do

begin

Forw(4*sqrt(5)); TurnRight(150);

Forw(4*sqrt(5)); TurnRight(300);

end;

end.