Задания
Версия для печати и копирования в MS Word

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

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

Че­ре­па­хе был дан для ис­пол­не­ния сле­ду­ю­щий ал­го­ритм: По­вто­ри 7 [Вперёд 10 На­пра­во 120].

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

 

ИЛИ

 

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

 

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

По­вто­ри 2 [Вперёд 10 На­пра­во 90 Вперёд 18 На­пра­во 90]

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

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

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

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

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

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

Ре­ше­ние.

За­ме­тим, что после семи по­вто­ре­ний по­сле­до­ва­тель­но­сти ко­манд [Вперёд 10 На­пра­во 120] по­лу­чит­ся рав­но­сто­рон­ний тре­уголь­ник с дли­ной сто­ро­ны, рав­ной 10. Не­об­хо­ди­мо под­счи­тать ко­ли­че­ство точек с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми. По­стро­им такой тре­уголь­ник, ис­поль­зуя си­сте­му про­грам­ми­ро­ва­ния «Кумир», вы­ста­вив мас­штаб сетки 1 к 1:

Всего точек с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми внут­ри тре­уголь­ни­ка  — 38.

 

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

count = 0

for x in range(1, 10):

for y in range(1, 10):

if -x / 3 ** 0.5 + 10 > y > x / 3 ** 0.5:

count += 1

print(count)

 

Ответ: 38.

 

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

from turtle import *

lt(90)

size=30

screensize(2000,2000)

tracer(0)

down()

for i in range(7):

fd(10*size)

rt(120)

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 7 do

begin

Forw(10); TurnRight(120);

end;

end.

ИЛИ

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

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

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

алг

нач

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

нц 2 раз

впе­ред (10)

впра­во (90)

впе­ред (18)

впра­во (90)

кц

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

впе­ред (5)

впра­во (90)

впе­ред (7)

влево (90)

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

нц 2 раз

впе­ред (10)

впра­во (90)

впе­ред (7)

впра­во (90)

кц

кон

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

 

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

c=0

for x in range(20):

for y in range(20):

if ((0 <= x <= 18) and (0 <= y <= 10)) or ((7 <= x <= 14) and (5 <= y <= 15)):

c+=1

print(c)

 

Ответ: 249.

Источники: