Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- использовать Робот
- алг
- нач
- цел а
- цел б
- размер_поля (а,б)
- закрасить_уголок_V(а,б)
- кон
- алг закрасить_уголок_V (арг цел длина_левого_луча, арг цел длина_правого_луча)
- дано длина_левого_луча > 1 и длина_правого_луча > 1
- нач
- цел к
- к:=int((длина_левого_луча+1)/3)
- цел д
- д:=int((длина_правого_луча+1)/3)
- цел п
- нц д раз
- нц к-2 раз
- закрасить_ряд("вниз", 1)
- вниз
- вправо
- закрасить
- вправо
- вверх
- закрасить_ряд("вверх", 1)
- вправо
- вправо
- кц
- закрасить_ряд("вниз", 1)
- вниз
- вправо
- закрасить
- вправо
- вверх
- закрасить_ряд("вверх", 1)
- п := дойти_до_стены("влево")
- идти_кол_во_шагов("вниз",3)
- кц
- нц к-2 раз
- закрасить_ряд("вниз", 1)
- вниз
- вправо
- закрасить
- вправо
- вверх
- закрасить_ряд("вверх", 1)
- вправо
- вправо
- кц
- закрасить_ряд("вниз",1)
- вниз
- вправо
- закрасить
- вправо
- вверх
- закрасить_ряд("вверх", 1)
- кон
- |Дойти до стены в заданном направлении
- алг цел дойти_до_стены(арг лит направление)
- | робот в произвольной клетке, направление перемещения
- дано направление = "вверх" или направление ="вниз" или направление = "влево" или направление = "вправо"
- | робот рядом со стеной в указанном направлении; кол-во пройденных шагов
- надо стена_рядом(направление)
- нач
- знач := 0
- нц пока не стена_рядом(направление)
- перейти_на_клетку(направление)
- знач := знач + 1
- кц
- кон
- |Определить, имеется ли рядом стена в заданном направлении
- алг лог стена_рядом(арг лит направление)
- | робот в произвольной клетке, направление поиска стены
- дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
- надо | признак наличия стены в заданном направлении
- нач
- выбор
- при направление = "влево": знач := слева стена
- при направление = "вправо": знач := справа стена
- при направление = "вверх": знач := сверху стена
- при направление = "вниз": знач := снизу стена
- все
- кон
- |Перейти на клетку в заданном направлении. Считается, что стены не мешают роботу передвигаться
- алг перейти_на_клетку(арг лит направление)
- | робот в произвольной клетке; известно направление перемещения;
- | предполагается, что стены не мешают роботу перемещаться
- дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
- надо | робот в позиции, отстоящей от исходной на одну клетку в заданном направлении
- нач
- выбор
- при направление = "влево": влево
- при направление = "вправо": вправо
- при направление = "вверх": вверх
- при направление = "вниз": вниз
- все
- кон
- |Сменить направление робота на противоположное
- алг сменить_на_противоположное(аргрез лит направление)
- дано |направление движения робота
- надо |противоположное направление
- нач
- выбор
- при направление = "влево": направление := "вправо"
- при направление = "вправо": направление := "влево"
- при направление = "вверх": направление := "вниз"
- при направление = "вниз": направление := "вверх"
- все
- кон
- |Закрасить до стены в заданном направлении
- алг цел закрасить_до_стены(арг лит направление)
- | робот в произвольной клетке, направление перемещения
- дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
- надо стена_рядом(направление) | закрашен ряд в заданном направлении;
- | робот рядом со стеной в указанном направлении; кол-во закрашенных клеток
- нач
- закрасить; знач := 1
- нц пока не стена_рядом(направление)
- перейти_на_клетку(направление)
- закрасить; знач := знач + 1
- кц
- кон
- |Идти в заданном направлении заданное кол-во шагов.
- |Считается, что стены не мешают роботу передвигаться
- алг идти_кол_во_шагов(лит направление, цел кол_во_шагов)
- | робот в произвольной позиции, известно направление движения и кол-во шагов; стены не мешают роботу передвигаться
- дано кол_во_шагов >= 0 и (направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо")
- надо | робот в позиции, удаленной от исходной на заданное кол-во шагов
- нач
- нц кол_во_шагов раз
- | Переходим на следующую клетку
- перейти_на_клетку(направление)
- кц
- кон
- |Закрасить ряд в заданном направлени и заданной длины
- алг закрасить_ряд(лит направление, цел длина)
- | робот на краю ряда; длина и направление закраски ряда
- дано длина > 0 и (направление = "вверх" или направление ="вниз" или направление = "влево" или направление = "вправо")
- надо | закрашенный ряд; робот на другом краю ряда
- нач
- закрасить
- нц длина-1 раз
- | Переходим на следующую клетку
- перейти_на_клетку(направление)
- закрасить
- кц
- кон
- |Вычислить размер поля
- алг размер_поля (рез цел ширина, рез цел высота)
- дано слева стена и сверху стена | робот в левом вехнем углу поля; в верхней строке и левом столбце нет внутренних стен
- надо ширина > 0 и высота > 0 | ширина и высота поля; робот в левом верхнем углу поля
- нач
- цел кол_во_шагов
- | расчет ширины поля
- ширина := дойти_до_стены("вправо")
- |возврат в начальную клетку
- кол_во_шагов := дойти_до_стены("влево")
- |расчет высоты поля
- высота := дойти_до_стены("вниз")
- |возврат в начальную клетку
- кол_во_шагов := дойти_до_стены("вверх")
- кон
- |Нахождение минимума
- алг цел минимум(арг цел знач1, арг цел знач2)
- дано | два целых числа
- надо | минимальное значение из двух
- нач
- если (знач1 < знач2) то
- знач := знач1
- иначе
- знач := знач2
- все
- кон
- |Нахождение максимума
- алг цел максимум(арг цел знач1, арг цел знач2)
- дано | два целых числа
- надо | максимальное значение из двух
- нач
- если (знач1 > знач2) то
- знач := знач1
- иначе
- знач := знач2
- все
- кон
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement