Если с правой стороны от робота стена остаться на месте иначе сделать шаг вправо

Обновлено: 28.04.2024

В этой работе вам предстоит управлять учебным графическим исполнителем "Робот".

Робот живёт на прямоугольном клеточном поле, по периметру огороженном стенами. Между клетками тоже могут встречаться стены.

Возможные состояния клетки:

  • пустая;
  • помечена для закрашивания;
  • закрашена.
  • клетка, отмеченная чёрной точкой, куда робот должен прийти после выполнения алгоритма.

Команды робота

Команда Описание
move_left(n=1) Пройти n клеток влево (по умолчанию n = 1)
move_right(n=1) Пройти n клеток вправо (по умолчанию n = 1)
move_up(n=1) Пройти n клеток вверх (по умолчанию n = 1)
move_down(n=1) Пройти n клеток вниз (по умолчанию n = 1)
wall_is_above() если сверху стена, возвращает True, иначе — False
wall_is_beneath() если снизу стена, возвращает True, иначе — False
wall_is_on_the_left() если слева стена, возвращает True, иначе — False
wall_is_on_the_right() если справа стена, возвращает True, иначе — False
fill_cell() Закрасить текущую клетку
cell_is_filled() Возвращает True, если текущая клетка закрашена
mov(r, v) Поместить значение v в регистр r

Как запустить Робота

Скачайте и разархивируйте файлы Робота в любое место в своей домашней папке.

Увидеть условие первой задачи можно, запустив в этой папке из консоли

Решение пишется прямо в файл task_1.py , который можно открыть любым текстовым редактором (например, gedit или PyCharm).

Для быстрой самопроверки ваших решений в этой папке есть файл all_tasks.py , который запустит все программы подряд и проверит их корректность.

Как решать задачи для Робота

Для решения каждой задачи, если больше ничего не сказано, требуется выполнить условия:

Дана функция, вычисляющая значение переменной y в зависимости от переменной x. Дан интервал целых чисел, которые может принимать переменная x. Необход … имо написать программу на языке Python, которая выведет в текстовый файл result.txt значения переменной y для каждого из предложенных x. Точность значений у при распечатке установить в 3 знака после запятой. Кодировка в текстовом файле должна быть Unicode. Путь к входному и выходному файлу в коде программы нужно сделать относительным. Исходные данные Список значений x, подготавливается заранее в текстовом файле source_data.txt Текстовый файл с исходными данными должен содержать исходную информацию следующего вида: x=-3 x=-2 x=-1 ………….. Выходные данные В текстовый файл result.txt должны быть выведены результаты в следующем формате: При x = -3 значение y = 2.348 При x = -2 значение y = 7.928 При x = -1 значение y = -6.122 При x = 0 значение y = -4.115 При x = 1 значение y = -7.254 Функция y(x) рассчитать значения в целочисленном интервале [-12, 5]

Рисунок построен с использованием палитры 512 цветов на экране монитора графическим разрешением 1024 х 768. Чему равен объем памяти необходимы хранени … я этого рисунка?​

Задача 1 Вася и его одноклассница Эмилия играют в слова, Вася загадывает слово, пишет его первую и последнюю буквы, а между ними – столько точек, скол … ько букв пропущено. Эмилия должна угадать СЛОВО, Дано слово. Выведи, как записал его Вася, Ввод Вывод секунда | са мяу му

ПОМОГИТЕ 1. Створіть два будь-яких списки і зв'яжіть їх із змінними. (0,5 б.) 2. Вийміть з першого списку другий елемент. (0,5 б.) 3. Змініть в другом … у списку останній об'єкт. Виведіть список на екран. (1 б.) 4. З'єднайте обидва списки в один, присвоївши результат новій змінній. Виведіть отриманий список на екран. (1 б.) 5. Допишіть spysok2 до spysok1. Виведіть отриманий список на екран. (1 б.) 6. Добавте до spysok2 новий елемент. Виведіть отриманий список на екран. (1 б.) 7. Знайдіть довжини списків. (1,5 б.) 8. Умова (1 б.) Знайдіть довжини списків А і В. Надайте довжині нове значення та виведіть в такому форматі: lengthA = 4 lengthB = 1 9. Умова (1,5 б.) Знайдіть довжину списку С та вкладеного списку в ньому: C = [ 0, 3, 2,[14,'aa',3] 4, 7 ] 10. Умова(1,5 б.) Створіть список years_list, що містить рік, в який ви народилися, і кожен наступний рік аж до вашого п’ятого дня народження. Виведіть на екран, у якому із років вам виповнилося 3 роки? Пам’ятайте, у перший рік вам було 0 років. Виведіть довжину списку.

Вопрос №1 ? 1 балл Алгоритм, в котором команды выполняются многократно, называется ____________. линейным алгоритмом циклом неполным ветвлением разве … твлением Вопрос №2 ? 1 балл Синтаксис цикла со счетчиком выглядит так: for i in: команда while i in range(n): команда for i in range(n): команда if. else Вопрос №3 ? 1 балл Какой условный оператор используют для реализации неполного разветвления? if . else print else If Вопрос №4 ? 1 балл Какой условный оператор используют для реализации полной разветвления? if . else if print else Вопрос №5 ? 1 балл Повторять до тех пор, пока не будет выполнено определенное условие, возможно благодаря циклу _____________. if if…else while for

Рассмотрим новую задачу для Робота. Надо посадить цветы во всех клетках вдоль стены, где нет прохода, а если в этом месте есть проход, войти в него и обработать грядку в самом начале прохода.

alt

Для решения этой задачи нам надо научить Робота выполнять разные действия в зависимости от окружающей обстановки. Это можно изобразить на схеме

alt

Словами это можно сформулировать так: если есть проход (условие выполняется), то выполни одну группу команд, если нет – выполни другие команды. В программе для этой цели используется специальный условный оператор если

налево;
вперед(1);
посади;
назад(1);
направо;

Таким образом, мы определили два варианта действий Робота - первый работает тогда, когда обнаружен проход, а второй – когда справа стена.

Правила использования условного оператора

  1. Условный оператор состоит из двух частей; первая часть начинается ключевым словом если, после которого в скобках записывается условие.
  2. Если это условие верно (или истинно), то выполняется группа команд, стоящая ниже в фигурных скобках (блок-если).
  3. Вторая часть (блок-иначе) начинается со слова иначе и выполняется в том случае, когда условие в скобках ложно.
  4. Нельзя отделять блок-если и блок-иначе, поскольку они составляют единый оператор.
  5. Условие ставится только в заголовке блока-если.
  6. Блок-иначе может отсутствовать, если он не нужен; в этом случае мы говорим, что условный оператор записан в сокращенной форме.
  7. Чтобы было удобнее разбираться в программе, используют отступы так же, как и в циклах: тело блока-если и блока-иначе сдвигается вправо на 2-3 символа.

Немного изменим задачу – пусть теперь Роботу надо обрабатывать только по 1 клетке в начале каждого прохода. Таким образом, в блоке-иначе не осталось ни одной команды – если прохода нет, ничего делать не надо. Поэтому можно использовать сокращенную форму условного оператора – без второй части:

налево;
вперед(1);
посади;
назад(1);
направо;

Что такое сложные условия?

Рассмотрим еще одну задачу для Робота. Ему требуется обработать только те клетки, которые ограничены стенами с двух сторон и остановиться, когда на пути встретится стенка.

alt

Сначала можно сформулировать алгоритм на русском языке – иди вперед, пока не появится стена впереди. Если в какой-то момент справа от Робота стена И слева стена, надо посадить цветы в грядку.

В этом словесном алгоритмах мы объединяли логические команды Робота с помощью операции И, получив из двух простых условий одно сложное условие. То же самое можно делать и в программе:

если ( справа_стена И слева_стена )

Сложное условие – это условие, состоящее из двух или более простых условий, объединенных с помощью логических операций:

НЕ отрицание

И логическое умножение

ИЛИ логическое сложение

Правила использования сложных условий

    1. Простейшими условиями являются логические команду исполнителей (например, слева_стена) и логические отношения между числами. > 5, 2+n < x
      не равно a != b
    1. В условии “равно” ставится два знака равенства; чтобы не запутаться, надо запомнить, что если переменная изменяется (оператор присваивания), то надо ставить один знак “=“, а если не меняется (логическое отношение), то два.
    2. Сложные условия составляются из нескольких простых; простые условия объединяются с помощью логических операций.
    3. Операция "И" требует одновременного выполнения двух условий, например:
      сверху_стена И снизу_стена
    4. Операция "ИЛИ" обозначается требует выполнения хотя бы одного из двух условий (или обоих вместе), например:
      сверху_стена ИЛИ снизу_стена
    5. Иногда удобно использовать логическую операцию “НЕ”, которая отрицает значение логического выражения, например условия
      a = a)
      означают одно и то же.
    6. Устанавливается такой приоритет (старшинство) логических отношений и операций:
      сначала выполняются операции в скобках, затем .
      операции “НЕ”, затем .
      логические отношения (>, =, операции “И” и в последнюю очередь
      операции “ИЛИ”.

    Для изменения порядка выполнения операций используются скобки.

    Использован материал из книги "Алгоритмы и исполнители", автор Поляков К.

    Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.

    У Робота есть девять команд. Четыре команды – это команды-приказы:

    вверх вниз влево вправо

    При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.

    Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

    Ещё четыре команды – это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:

    сверху свободно снизу свободно слева свободно справа свободно

    Эти команды можно использовать вместе с условием «eсли», имеющим следующий вид:

    если условие то

    Здесь условие – одна из команд проверки условия.

    Последовательность команд – это одна или несколько любых команд-приказов.

    Например, для передвижения на одну клетку вправо, если справа нет стенки и закрашивания клетки, можно использовать такой алгоритм:

    если справа свободно то

    В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:

    если (справа свободно) и (не снизу свободно) то

    Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:

    нц пока условие

    Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:

    нц пока справа свободно


    Выполните задание.
    На бесконечном поле имеются две вертикальные стены одинаковой длины, расположенные точно одна напротив другой. Длина стен неизвестна. Расстояние между стенами неизвестно. Робот находится справа от первой стены в клетке, расположенной у её нижнего края.

    Пока слева стена шаг вверх
    Шаг вниз, закрасить клетку
    Пока справа свободно шаг вправо закрасить клетку


    Задание 12 № 5804

    Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает в себя 4 команды-приказа и 4 команды проверки условия.

    вверхвнизвлевовправо

    При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →.

    Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится, и программа прервётся.

    Другие 4 команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:

    сверху свободноснизу свободнослева свободносправа свободно

    ПОКА условие

    последовательность команд

    выполняется, пока условие истинно.

    ЕСЛИ условие

    ТО команда1

    ИНАЧЕ команда2

    выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

    Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

    ПОКА справа свободно ИЛИ снизу свободно

    ЕСЛИ справа свободно

    ИНАЧЕ вниз

    При данной программе РОБОТ поступает следующим образом: сперва РОБОТ проверяет, свободна ли клетка справа или снизу от него. Если это так, то РОБОТ переходит к первому действию внутри цикла. В этом цикле если у правой стороны клетки, в которой находится РОБОТ, нет стены, он двигается вправо, в противном случае он перемещается вниз. После этого возвращается к началу внешнего цикла.

    Проанализировав эту программу, приходим к выводу, что РОБОТ не может разбиться.

    Проверив все клетки по выведенному нами правилу движения РОБОТА, выясняем, что число клеток, удовлетворяющих условию задачи, равно 24: C1-F1, E2-F2, E3-F3, A4-F4, A5-F5 и C6-F6.

    Читайте также: