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

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

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

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

Ре­ше­ние.

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

Че­ре­па­ха ри­су­ет пра­виль­ный ше­сти­уголь­ник со сто­ро­ной 10.

Слева ше­сти­уголь­ник огра­ни­чен пря­мой x=0, спра­ва - x=10 · sqrt(3) (при­бли­жен­но 17.3), снизу - пря­мы­ми y=-x/sqrt(3) и y=x/sqrt(3)-10, а свер­ху - y=x/sqrt(3)+10 и y=-x/sqrt(3)+20.

Ко­ли­че­ство точек внут­ри ше­сти­уголь­ни­ка можно найти с по­мо­щью сле­ду­ю­щей про­грам­мы:

k=0

for x in range(18):

for y in range(-10,20):

if max(-x/3**0.5,x/3**0.5-10) <= y <= min(10+x/3**0.5,-x/3**0.5+20): k+=1

print(k)

 

 

Решим эту за­да­чу, ис­поль­зуя язык про­грам­ми­ро­ва­ния Python.

c = 0

for x in range(0, 20):

for y in range(-5, 15):

if x >= 0 and x <= 10 * 3**0.5 and \

y >= -1/(3**0.5)*x and y >= 1/(3**0.5)*x-10 and \

y <= 1/(3**0.5)*x+10 and y <= -1/(3**0.5)*x+20:

c += 1

print(c)

 

Ответ: 268.

 

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

from turtle import *

lt(90)

size=30

screensize(2000,2000)

tracer(0)

down()

for i in range(6):

fd(10*size)

rt(60)

up()

for x in range(-20,20):

for y in range(-20,20):

setpos(x*size,y*size)

dot(4,'red')

done()

 

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

uses turtle;

begin

down;

loop 6 do

begin

Forw(10); TurnRight(60);

end;

end.


Аналоги к заданию № 47392: 47394 Все