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

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

19.10.2018, 15:10. Показов 1969. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru