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

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

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

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

На­пра­во 180 Вперёд 5 На­пра­во 90 Вперёд 50 На­пра­во 90 Вперёд 5 По­вто­ри 5 [Дуга 5, 5, 0, 180].

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

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

Ре­ше­ние.

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

import turtle

t=turtle.Turtle()

t.reset()

t.seth(90)

t.width(2)

t.speed(20)

k = 10 #ко­эф­фи­ци­ент для уве­ли­че­ния мас­шта­ба

t.right(180)

t.forward(5*k)

t.right(90)

t.forward(50*k)

t.right(90)

t.forward(5*k)

for i in range(5):

t.seth(90)

t.circle(-5*k,180)

t.penup()

for x in range(0,-14,-1):

for y in range(-5,8):

t.goto(x*k , y*k )

t.dot(5)

turtle.mainloop()

 

По­счи­та­ем ко­ли­че­ство точек в одном сек­то­ре (75) и умно­жим их на ко­ли­че­ство сек­то­ров (5), плюс ко­ли­че­ство точек на гра­ни­це сек­то­ров (по че­ты­ре на гра­ни­цу). Ито­го­вый ответ 75 · 5 + 4 · 4  =  391.

 

Ответ: 391.

 

При­ведём ре­ше­ние Сер­гея Стре­лю­хи­на на языке Python.

from turtle import *

k = 5; speed(0); color('black','red'); hideturtle(); begin_fill()

rt(180); fd(5*k); rt(90); fd(50*k); rt(90); fd(5*k)

for i in range(5): circle(-5*k, 180); seth(0)

end_fill(); sc = getcanvas()

otv = ['in' if (h:=sc.find_overlapping(x,y,x,y)) and sc.itemcget(h[-1], 'fill')=='red' else 0

for x in range(-100*k,100*k,k) for y in range(-100*k,100*k,k)]

print(otv.count('in'))

 

При­ведём по­стро­е­ние ри­сун­ка Бо­ри­са Са­ве­лье­ва на языке КуМир.

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

алг

нач

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

впра­во (180)

впе­ред(5)

впра­во (90)

впе­ред(50)

впра­во (90)

впе­ред(5)

нц 5 раз

нц 180 раз

впе­ред(0.08725)

впра­во(1)

кц

впе­ред(0.08725)

впра­во(180)

кц

кон


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