Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.02.2024
Сообщений: 1

Программа для оптимального перемещения робота в заданную клетку

17.02.2024, 15:30. Показов 1219. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
Робот находится на клеточном поле без стен. Программа для робота составлена из команд движения move_right(), move_left(), move_down(), move_up() и циклов for с одним неотрицательным параметром, внутри которых может быть любое количество команд движения. Вложенных циклов в программе нет. Названия переменных цикла for — из одного символа.
Гарантируется, что программа верна, в ней нет синтаксических ошибок и могут встречаться пустые строки. Они нужны, чтобы визуально разделить код на несколько частей.
Каждая команда движения перемещает робота в соседнюю клетку в соответствующем направлении. Производители робота пошли навстречу программистам и добавили четыре команды вида move_right(N), которая передвигает робота в нужном направлении на N шагов (N — положительное целое число больше 1).
Последняя строка в программе — комментарий, который начинается с символа #. Других таких строк в программе нет.
Эту программу для робота надо сократить и заменить её на более короткую и при этом перемещающую робота в ту же клетку.
Ваша задача — написать на Python программу, которая это сделает.
Вашей программе на вход даётся несколько строк на Python со строкой-комментарием в конце.
Требуется вывести код программы, которая составлена по тем же правилам, что и исходная, перемещает робота в ту же клетку и имеет наименьшее возможное количество строк.
Если такую короткую программу можно составить разными способами с одинаковым количеством строк, выведите любой подходящий вариант. В каждой строке ответа разрешается ставить только одну команду движения или заголовок цикла for.

Мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
code = input()
a = b = 0
 
def move_right (n = 1):
    a += n
 
def move_left (n = 1):
    a -= n
 
def move_up (n = 1):
    b += n
 
def move_down (n = 1):
    b -= n  
    
result = []
if a != 0:
    result.append(f'{"move_right(abs(a))" if a>0 else "move_left(abs(a))"}')
if b != 0:
    result.append(f'{"move_up(abs(b))" if b>0 else "move_down(abs(b))"}')
        
for i in range(len(result)):
    print (result[i])
Помогите найти ошибки, пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2024, 15:30
Ответы с готовыми решениями:

Минимизировать штраф перехода в заданную клетку
Задана матрица натуральных чисел A(n,m). За каждый проход через клетку (i,j) взымается штраф A(i,j). Необходимо минимизировать штраф и ...

Функция перемещения робота
Нужна функция getLocation, которая будет принимать массив начальных координат coordinates (в виде ), массив истории команд роботу commands...

Перемещения робота (switch)
Робот может перемещаться в четырех направлениях ("С" — север, "3" — запад. "Ю" — юг, "В" — восток) и принимать три цифровые...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
17.02.2024, 17:04
Цитата Сообщение от Mila_Ray Посмотреть сообщение
Мой код:
- тут не ошибки нужно искать, а просто написать заново. Решение должно быть таким:

1) прочитать программу
2) выполнить ее и определить, в какой клетке окажется робот после исполнения программы
3) построить короткую программу и вывести ее
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.02.2024, 13:35
Цитата Сообщение от Mila_Ray Посмотреть сообщение
def move_right (n = 1):
    a += n
global не хватает.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
18.02.2024, 14:31
Вот решение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2024, 14:31
Помогаю со студенческими работами здесь

Реализация перемещения робота в 4 направлениях
Помоготе сделать программу для решения этой задачи: Робот может перемещаться в четырех направлениях («С» — север, «З» — запад, «Ю» —...

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

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

Выяснить можно ли попасть ладьей в заданную клетку поля
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru