Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
12 / 10 / 3
Регистрация: 09.10.2018
Сообщений: 49

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

19.10.2018, 15:10. Показов 1943. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан клад, но этого мало: остров полон опасностей, и нужно перемещаться строго по указаниям карты, которая, к счастью, тоже имеется в нашем распоряжении. Мы хотим найти клад как можно скорее.

Известны координаты клада и указания, которым нужно следовать, чтобы его найти. Каждое указание карты состоит из одного слова и, возможно, одного натурального числа. Слово — одно из набора: «вперёд», «налево», «направо», «разворот» или «стоп».

После слова «вперёд» следует количество шагов, которое следует пройти в том направлении, куда мы в данный момент смотрим. Слова «налево» или «направо» означают, что нужно изменить направление взгляда под прямым углом, «разворот» — что прямо на обратное. Команда «стоп» означает остановку.

Найдите минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу.

Формат ввода
Сначала вводятся два числа на отдельных строчках: координаты клада по оси икс (запад-восток) и игрек (юг-север).
Затем следует некоторое количество указаний карты. Каждое указание карты состоит из одного слова и, возможно, одного натурального числа на отдельной строке. Слово — одно из набора: «вперёд», «налево», «направо», «разворот» или «стоп».

Формат вывода
Программа выводит на отдельных строках минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу, и направление взгляда в этот момент (одно из: «север», «юг», «запад», «восток»). Гарантируется, что карта приводит к кладу.

Пример 1
Ввод
-2
9
вперёд
9
налево
вперёд
2
разворот
вперёд
17
стоп

вывод
3
запад

Добавлено через 4 часа 58 минут
Я так понял, никто не поможет?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2018, 15:10
Ответы с готовыми решениями:

Найдите минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан...

Найти минимальное расстояние, которое нужно найти, чтобы убить всех мобов с 2х выстрелов
Помогите пожалуйста решить задачу! На вход даются координаты 4х точек на плоскости. В них стоят 4 моба. Необходимо найти минимальное...

Определить минимальное количество монет которое нужно потратить чтобы число камней начало делиться нацело на 5
На столе лежит n камней. За 1 монетку вы можете сделать одну из следующих операций: 1. Забрать со стола один камень. Вы не можете...

1
0 / 0 / 0
Регистрация: 10.10.2018
Сообщений: 4
23.11.2018, 12:08
naprav = ['север', 'восток', 'юг', 'запад']
naprav2 = naprav[0]
nap = 0
x = int(input())
y = int(input())
y2 = 0
x2 = 0
if x >= 0:
n_x = naprav[1]
else:
n_x = naprav[3]
x *= -1
if y >= 0:
n_y = naprav[0]
else:
n_y = naprav[2]
y *= -1
deist = ''
kol_d = 0
kon_d = 'не_выполнено'
while deist != 'стоп':
if x - x2 == 0:
if y - y2 == 0:
kon_d = 'выполнено'
if kon_d != 'выполнено':
deist = input()
if deist == 'налево':
kol_d += 1
if nap == 0:
nap = 3
naprav2 = naprav[nap]
else:
nap -= 1
naprav2 = naprav[nap]
if deist == 'разворот':
kol_d += 1
if nap >= 2:
if nap == 3:
nap = 1
naprav2 = naprav[nap]
else:
nap = 0
naprav2 = naprav[nap]
else:
nap += 2
naprav2 = naprav[nap]
if deist == 'направо':
kol_d += 1
if nap == 3:
nap = 0
naprav2 = naprav[nap]
else:
nap += 1
naprav2 = naprav[nap]
if deist == 'вперёд':
if naprav2 == naprav[1] or naprav2 == naprav[3]:
if naprav2 == n_x:
x2 = int(input())
else:
x2 = int(input())
x2 *= -1
x -= x2
kol_d += 1
if x < 0:
x *= -1
if n_x == naprav[1]:
n_x = naprav[3]
else:
n_x = naprav[1]
if x == 0:
if y == 0:
kon_d = 'выполнено'
if naprav2 == naprav[0] or naprav2 == naprav[2]:
if naprav2 == n_y:
y2 = int(input())
else:
y2 = int(input())
y2 *= -1
y -= y2
kol_d += 1
if y < 0:
y *= -1
if n_y == naprav[0]:
n_y = naprav[2]
else:
n_y = naprav[0]
if y == 0:
if x == 0:
kon_d = 'выполнено'
else:
break
print(kol_d)
print(naprav2)

Добавлено через 22 секунды
решение сложное, но рабочее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2018, 12:08
Помогаю со студенческими работами здесь

Какое минимальное количество действий нужно выполнить над первым словом, чтобы оно совпадало со вторым?
Дано два слова. Какое минимальное количество действий нужно выполнить над первым словом,чтобы оно совпадало со вторым

Найти минимальное количество купюр, которое необходимо использовать, чтобы выдать сумму в n гривен
В банкомате имеются в достаточном количестве купюры номиналом 10, 20, 50, 100, 200 и 500 гривен. Найти минимальное количество купюр,...

Определить минимальное количество пролетов, которое нужно проехать чтобы определить неисправные индикаторы
Подскажите пожалуйста что-нибудь. На сайте acm.timus.ru при проверке задачи вылетает ошибка Wrong answer. Сама задача...

Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета
Написал код для одной задачи. Ответ выдает он вроде правильный. Но на сайте при тестировании моего алгоритма, он проходит тест на 31%...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru