Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Напишите пожалуйста простую и не длинную команду для робота! Python

Григорий Грушинский Ученик (59), открыт 2 дня назад
Задача № 2
Робот находится где-то в квадрате 2×2. Если там есть хотя бы одна закрашенная клетка, робот должен прийти в левый верхний угол. Если закрашенных клеток нет, то в правый нижний.
2 ответа
Анатолий Зяблин Просветленный (37226) 2 дня назад
Как то так
 if any_painted():  # Проверяем, есть ли закрашенные клетки 
while not (x == 1 and y == 1): # Двигаемся к левому верхнему углу (1,1)
if x > 1: move_left()
if y > 1: move_up()
else: # Иначе двигаемся к правому нижнему углу (2,2)
while not (x == 2 and y == 2):
if x < 2: move_right()
if y < 2: move_down()
vladyslav.vladyslavyshe Знаток (296) 2 дня назад
Вот простая и короткая команда для робота на Python (в среде вроде "Робот Карел" или "Pixel", где есть функции типа wall_is_beneath(), cell_is_filled(), move_up() и т.п.):

python
Copy
Edit
if cell_is_filled():
go_to_left_top()
else:
go_to_right_bottom()
Если нужно — могу расписать сами функции go_to_left_top() и go_to_right_bottom() (в 2–3 строки). Напиши, если робот перемещается по конкретным командам типа move_up(), move_left() и т.д.
Григорий ГрушинскийУченик (59) 2 дня назад
Секунду, напишу доступные команды
Григорий ГрушинскийУченик (59) 2 дня назад
move_left()
Сделать шаг влево
move_right()
Сделать шаг вправо
move_up()
Сделать шаг вверх
move_down()
Сделать шаг вниз
fill_cell()
Закрасить клетку
free_from_up()
Проверить, свободно ли сверху
free_from_down()
Проверить, свободно ли снизу
free_from_left()
Проверить, свободно ли слева
free_from_right()
Проверить, свободно ли справа
wall_from_up()
Проверить, есть ли стена сверху
wall_from_down()
Проверить, есть ли стена снизу
wall_from_left()
Проверить, есть ли стена слева
wall_from_right()
Проверить, есть ли стена справа
cell_is_filled()
Проверить, закрашена ли клетка
cell_is_clean()
Проверить, чиста ли клетка
vladyslav.vladyslavyshe Знаток (296) Григорий Грушинский, Отлично! Тогда вот короткая рабочая программа для задачи: python Copy Edit if cell_is_filled(): move_left() move_up() elif free_from_left() and cell_is_filled(): move_left() move_up() elif free_from_up() and cell_is_filled(): move_left() move_up() elif free_from_left(): move_left() if cell_is_filled(): move_up() move_left() else: move_right() move_down() move_right() else: move_down() move_right() Но это можно упростить, если робот заранее обходит все клетки 2×2 и проверяет:
Похожие вопросы