Найти - Пользователи
Полная версия: Графический исполнитель "Робот"
Начало » Python для новичков » Графический исполнитель "Робот"
1 2 3 4 None 28 29 30 31
Prorokius
В Pascal'e и КуМир'e тоже есть робот исполнитель
И в них есть команды:
FreeFromRight – возвращает True если справа от Робота свободно; (Pascal)
если справа свободно то (КуМир)
Нужна точно такая же команда в Python3, которая будет проверять свободно ли с нужной мне стороны. Я же нашел только команду, которая проверяет есть ли стена wall_is_on_the_left() если слева стена, возвращает True, иначе — False
Есть идеи?
Заранее благодарен за помощь
py.user.next
В КуМире многие команды избыточны, то есть их можно заменить другими.
http://test.kumir.su/Syntax%20Kumir.htm

Так, например, если слева стена, то уже ясно, что слева не свободно. Зачем отдельную команду иметь “слева свободно”, если можно просто применить отрицание (даже не имея операции отрицания)? То есть система команд избыточна.

Prorokius
Я же нашел только команду, которая проверяет есть ли стена wall_is_on_the_left()
Ну потому там и нет этой команды. Есть операция отрицания (not), которую можно применить к команде “слева стена”.

Можешь себе сделать команду, основав её уже на существующих командах. Это надо отнаследоваться от робота и добавить ему метод, который тебе нужен. А лучше, конечно, агрегацию сделать - создать класс с нужными методами, к которому через инициализацию подключать исполнителя Робот. И при исполнении команды она будет просто передаваться Роботу в виде одной команды или нескольких.
Prorokius
py.user.next
В КуМире многие команды избыточны, то есть их можно заменить другими.http://test.kumir.su/Syntax%20Kumir.htmТак, например, если слева стена, то уже ясно, что слева не свободно. Зачем отдельную команду иметь “слева свободно”, если можно просто применить отрицание (даже не имея операции отрицания)? То есть система команд избыточна.

Операция отрицания-то, что было нужно мне
А про агрегацию я даже не в курсе. Всего вторая лекция по Python'y у меня
Спасибо за просвещение в операцию отрицания
Vladimirv
py.user.next
Так, например, если слева стена, то уже ясно, что слева не свободно. Зачем отдельную команду иметь “слева свободно”, если можно просто применить отрицание (даже не имея операции отрицания)? То есть система команд избыточна.
Затем, что слева может быть ящик, другой робот и также стена. Ящик и робот могут переместиться, а со стеной это не произойдет и например, ждать бессмысленно. В крайнем случае в стене можно сделать проход, если это какая-то боевая симуляция. Так что отдельная функция просто необходима.
py.user.next
Исполнитель Робот
http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html

Команды робота
Команда Описание
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

Короче, это такой робот, который ходит по полю, где могут быть только стены, и который может только закрашивать клетки.

Ещё на КуМир'е вариант
https://en.ppt-online.org/338661
https://en.ppt-online.org/32585
Prorokius
py.user.next
Исполнитель Роботhttp://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html
Еще один вопрос по этому роботу
У меня есть задание http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html#id46 (Задача №16: task_8_22)
Я пишу такое
while not wall_is_above():
move_up()
else:
if wall_is_the_right():
*тут хочу написать, пока нет стены слева-иди влево, как это реализовать? в Python'e нет же do … while*
То есть мне нужно использовать выше цикл, вложенный в условие
Помоги, пожалуйста, как это реализовать?
Да и вообще, хотя бы пример легкий, как использовать цикл, вложенный в условие, никак не могу допереть, ибо там несколько заданий с такими задачами (использовать цикл, вложенный в условие)
py.user.next
Дойти до конца тупика. Тупик имеет форму буквы Г (влево или вправо). Размеры тупика не известны.
Сначала надо пройти вверх до упора. Потом надо определить сторону, куда поворачивает тупик. Потом надо идти в правильную сторону.
Это while + if + while.

while не_наверху
идти_вверх
if справа_свободно
while не_в_правом_конце
идти_вправо
else
while не_в_левом_конце
идти_влево
sdl5
py.user.next
Исполнитель Робот
http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html
Всем привет. У меня возникли проблемы с задачей №10: task_8_3 (Закрасить клетки. Расстояние до стены не известно.) не получается сделать все правильно. Помогите с решением.

py.user.next
sdl5
У меня возникли проблемы с задачей №10: task_8_3 (Закрасить клетки. Расстояние до стены не известно.)
Закрашиваются только те клетки, сверху или снизу которых есть стена.
if сверху_стена or снизу_стена
закрасить_клетку
while справа_свободно
идти_вправо
if сверху_стена or снизу_стена
закрасить_клетку
sdl5
Есть Задача №21: task_4_11. Нашел похожую для КуМира. А как будет выглядеть решение для задачи #21 на питоне?
 Ряд
{
int n; 	   
направо;
цикл ( n=1; n<=6; n=n+1 )   
    {
    повтори (  n  )
        {
        вперед ( 1 );
        посади;
        }
  направо;
  вперед ( 1 );
  налево;
  назад (  n  );
  }
    }
направо; вперед ( 1 ); налево;
назад ( n );
}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB