pyrob - робот на питоне
Установка пакетов
Команды робота
Команда | Описание |
---|---|
move_left() | Шаг влево |
move_right() | Шаг вправо |
move_up() | Шаг вверх |
move_down() | Шаг вниз |
free_left() free_lt() | Свободно слева? |
free_right() free_rt() | Свободно справа? |
free_up() | Свободно вверху? |
free_down() | Свободно внизу? |
fill_cell() | Закрасить клетку |
cell_is_filled() | Клетка закрашена? |
Состояния робота
Задача решена
#!/usr/bin/python3 from pyrob.api import * @task def example1(): # пишем решение тут: for i in range(9): move_right() move_down() if __name__ == '__main__': run_tasks()

Задача НЕ решена - робот не дошел до конечной точки
#!/usr/bin/python3 from pyrob.api import * @task def example1(): # пишем решение тут: for i in range(4): move_right() move_down() if __name__ == '__main__': run_tasks()

Задача НЕ решена - ошибка во время выполнения
#!/usr/bin/python3 from pyrob.api import * @task def example1(): # пишем решение тут: for i in range(9): move_right() move_down() if i == 6: z = 1 / 0 # делить на 0 нельзя! if __name__ == '__main__': run_tasks()

Задача НЕ решена - врезались в стену
#!/usr/bin/python3 from pyrob.api import * @task def example1(): # пишем решение тут: for i in range(10): move_right() move_down() if __name__ == '__main__': run_tasks()

while - цикл с условием
Задачи на команды робота
Задача №1: task_1_1
Дойти до конечной точки.
Задача №2: task_1_2
Дойти до конечной точки. Закрасить по дороге голубую клетку.
Цикл while - делаем пока
Описать теорию. Пример - дойти до стены внизу.if elif else - если / иначе
Дописать пример: если стоим на голубой клетке - закрасить. Дописать примеры - 1) если есть выход справа, то выходим; иначе никуда не идем (if); 2) есть выход справа или слева, идем куда есть выход (if-else). 3) задача на 4 выхода. Татьяна, как тебе идея? (ТД)Задачи с условиями
Задача №3: task_3_1
Дойти до стены. Расстояние до стены не известно.
Задача №4: task_3_3
С трёх сторон стены. Выйти в свободную сторону. Где выход не знаем. Робот должен найти выход и выйти.
Задачи: циклы с условием
Задача №5: task_5_2
Дойти до конца стены. Длина стены не известна.
Задача №6: task_5_3
Дойти до конца стены. Длина стены не известна.
Задача №7: task_5_4
Обойти стену. Размеры стены и расстояние до неё неизвестны. Стена одна.
Задача №8: task_5_7
Выйти из коридора. Есть проёмы сверху или снизу.
if внутри цикла
Задача №9: task_8_2
Закрасить клетки этого ряда, у которых НЕТ верхней стенки. Расстояние до правой стены не известно. TODO: сменить картинку, взять такую, где есть закрашенная клетка без верхней и без нижней стены. Ибо на этом рисунке только "верха нет, низ есть", что неправильно.
Задача №10: task_8_3
Закрасить клетки этого ряда, у которых есть верхняя или нижняя стена. Расстояние до правой стены не известно.
Задача №11: task_8_4
Закрасить клетки этого ряда, у которых есть обе стены (верхняя и нижняя). Расстояние до правой стены не известно.
Задача №12: task_8_6
Закрасить клетки этого ряда, у которых есть только нижняя стена. Расстояние до правой стены не известно.
Задача №13: task_8_10
Закрасить клетки вне коридора (сверху и снизу), если можно пойти и закрасить. Расстояние до правой стены не известно.
Задача №14: task_8_11
Закрасить клетки вне коридора (сверху и снизу), если можно пойти и закрасить. Закрасить клетки, у которых обе стены (сверху и снизу). Расстояние до правой стены не известно.
Урок 20 апреля
Функции
Для робота можно написать новые функции.Задача №24: task_2_1
Напишите функцию cross(), которая закрашивает 5 клеток как на картинке.Используя эту функцию закрасьте клетки, как на рисунке.

Задача №25: task_2_2
Возьмите функцию cross() из предыдущей задачи.Напишите функцию row_cross(n), которая закрашивает n крестов в ряд.
Используя эту функцию закрасьте клетки, как на рисунке.

Задача №26: task_2_4
Возьмите функции cross() и row_cross(n) из предыдущей задачи.Напишите функцию rect_cross(n, m), которая закрашивает m рядов по n крестов в ряд.
Используя эту функцию закрасьте клетки, как на рисунке. Подсказка 1: move_left(20) и move_down(4) будут передвигать робота на 20 клеток влево и на 4 вниз. Подсказка 2: можно написать функцию home, которая будет передвигать робота в начало ряда. Можно посчитать сколько клеток или написать условие "пока слева свободно".

Красим
Задача №20: task_4_3
Закрасить отмеченные клетки. Поле фиксированного размера.
Задача №21: task_4_11
Закрасить отмеченные клетки. Поле фиксированного размера.
Задача №22: task_5_10
Закрасить всё поле. Размеры поля неизвестны. Начинаем в левом верхнем углу. Заканчиваем в левом нижнем углу.
Задача №23: task_6_6
Закрасить коридоры и вернуться. Количество и длины коридоров не известны. Коридоры только вверху.
Еще больше функций
Задача №15: task_8_21
Перейти в противоположный угол. В начальный момент робот находится в углу, но не известно, в каком.
Задача №16: task_8_22
Дойти до конца тупика. Тупик имеет форму буквы Г (влево или вправо). Размеры тупика не известны.
Задача №17: task_8_27
Дойти вверх до закрашенной клетки. Перейти на вторую закрашенную клетку. Клетка может быть как справа, так и слева.
НЕ ДЕЛАТЬ
Задача №18: task_8_28
Выйти из ловушки. Где находится выход, не известно.

Оставшиеся рисунки к задачам
- task_7_5.png:
- task_7_6.png:
- task_7_7.png:
- task_8_18.png:
- task_8_30.png:
- task_9_3.png: