С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/664: Рейтинг темы: голосов - 664, средняя оценка - 4.63
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323

Ищем клад — 1

28.10.2018, 18:22. Показов 128349. Ответов 56
Метки нет (Все метки)

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

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

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

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

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

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

Добавлено через 33 минуты
Что тут делать хотя бы надо, я не понимаю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.10.2018, 18:22
Ответы с готовыми решениями:

Ищем клад — 2
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или output.txt Мы...

Ищем клад — 1
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан...

Ищем клад-1
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан...

56
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
03.11.2018, 21:00
Лучший ответ Сообщение было отмечено CyberGame как решение

Решение

Ну ты даешь, 2 минутная задача, даже для новичка все же в условии понятно
Лови код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
the_minimum_number_of_instructions = 0
x = int(input())
y = int(input())
x_y = [0, 0]
direction_of_movement = input()
if x == 0 and y == 0:
    print(0)
while direction_of_movement != 'стоп':
    steps = int(input())
    the_minimum_number_of_instructions += 1
    if direction_of_movement == 'север':
        x_y[1] += steps
    elif direction_of_movement == 'запад':
        x_y[0] -= steps
    elif direction_of_movement == 'юг':
        x_y[1] -= steps
    elif direction_of_movement == 'восток':
        x_y[0] += steps
    if int(x) == x_y[0] and int(y) == x_y[1]:
        print(the_minimum_number_of_instructions)
        break
    direction_of_movement = input()
думаю все понятно и без пояснений. Удачи)
2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
03.11.2018, 22:16
Я ни хрена в условии не понял, а переспрашивать бесполезно, по-моему.
Python
1
2
3
4
5
6
7
8
9
10
11
12
x_klad = int(input())
y_klad = int(input())
 
for i in range (abs(x_klad)):
    print ("восток" if x_klad > 0 else "восток")
for i in range (abs(y_klad)):
    print ("север" if y_klad > 0 else "юг")
 
 
##########################################
 
print("стоп")
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 08:48
Если, что я хотел сначала как kravam код написать, но потом понял что CyberGame, только недавно в Python и поэтому написал максимально понятно (на мой взгляд)
1
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
04.11.2018, 11:03  [ТС]
Glander, спасибо, а что означает запись x_y[0, 0] - массив какой-то?
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 11:15
Нет, это список состоящий из x и y (представь себе координатную плоскость x,y где x=0 и y=0 - начало координатной плоскости). И когда я обращаюсь к x_y[0], то обращаюсь к x, а если к x_y[1], то обращаюсь к y
1
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
04.11.2018, 11:18  [ТС]
Glander, списки мы еще не проходили. Слушай, а можно ли это заменить на x = 0, y = 0 и просто в цикле подставить?
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 11:23
Кстати, CyberGame, там кнопочки есть +1 спс и ответ, не забудь нажать, мне будет приятно)

Добавлено через 4 минуты
Без списков, вот пожалуйста:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
the_minimum_number_of_instructions = 0
x = int(input())
y = int(input())
x1 = 0
y1 = 0
direction_of_movement = input()
if x == 0 and y == 0:
    print(0)
while direction_of_movement != 'стоп':
    steps = int(input())
    the_minimum_number_of_instructions += 1
    if direction_of_movement == 'север':
        y1 += steps
    elif direction_of_movement == 'запад':
        x1 -= steps
    elif direction_of_movement == 'юг':
        y1 -= steps
    elif direction_of_movement == 'восток':
        x1 += steps
    if int(x) == x1 and int(y) == y1:
        print(the_minimum_number_of_instructions)
        break
    direction_of_movement = input()
3
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
04.11.2018, 11:52  [ТС]
Glander, кхм, задачку то вы не решили. смотри пример
Ввод
9
-2
Вперед
9
Налево
Вперед
2
=========
Вот так нужно было.
На подобие вашей, я уже делал.
Блин, внимательней условия прочитайте. Пожалуйста помогите(

Добавлено через 27 минут
Поднимаю!
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 12:33
Все переделал, вроде работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
the_minimum_number_of_instructions = 0
x = int(input())
y = int(input())
x1 = 0
y1 = 0
move = 'север'
direction_of_movement = input()
while direction_of_movement != 'стоп':
    if int(x) == x1 and int(y) == y1:
        print(the_minimum_number_of_instructions)
        print(move)
        break
    else:
        the_minimum_number_of_instructions += 1
        if direction_of_movement == 'вперёд':
            steps = int(input())
            if move == 'север':
                y1 += steps
            elif move == 'запад':
                x1 -= steps
            elif move == 'юг':
                y1 -= steps
            elif move == 'восток':
                x1 += steps
        elif direction_of_movement == 'направо':
            if move == 'север':
                move = 'восток'
            elif move == 'восток':
                move = 'юг'
            elif move == 'юг':
                move = 'запад'
            elif move == 'запад':
                move = 'север'
        elif direction_of_movement == 'налево':
            if move == 'север':
                move = 'запад'
            elif move == 'запад':
                move = 'юг'
            elif move == 'юг':
                move = 'восток'
            elif move == 'восток':
                move = 'север'
        elif direction_of_movement == 'разворот':
            if move == 'север':
                move = 'юг'
            elif move == 'юг':
                move = 'север'
            elif move == 'запад':
                move = 'восток'
            elif move == 'восток':
                move = 'запад'
        direction_of_movement = input()
else:
    if x == 0 and y == 0:
        print(0)
Добавлено через 5 минут
добавь в 56 строчку print('север')
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
04.11.2018, 13:40
Цитата Сообщение от CyberGame Посмотреть сообщение
Ввод
9
-2
Вперед
9
Налево
Вперед
2
это сумбур какой-то. И в какую точку мы так придём, позвольте спросить?
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 14:47
это косячный пример он привел...(В условии сказано:Гарантируется, что карта приводит к кладу). Я сделал как в условии написано. Вот нормальный пример:
-2
9
вперёд
9
налево
вперёд
2
разворот
стоп
Вывод моего кода:3
запад
все нормально работает

Добавлено через 42 секунды
А судя по его примеру мы к кладу не придем...
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
04.11.2018, 15:01
Glander, а у тебя где ввод?
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 15:06
пример = ввод

Добавлено через 3 минуты
Если так принципиально:
Ввод:
2
9
вперёд
9
налево
вперёд
2
разворот
стоп
Вывод:
3
запад
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
04.11.2018, 15:33
Я вот не пойму, а почему такой ввод? Если я правильно понимаю, вводом должно быть только координаты клада. Два числа. Как у меня. Всё! Остальное не пойми зачем нужно вводить.
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 18:09
А, ты не понимаешь... Так вот в условии говорится, что ты находишься в точке (0,0) и ты должен попасть в точку с кладом(которая не находится в (0,0), но чтобы туда попасть ты должен ввести команды чтобы передвигаться и попасть в точку с кладом (т.е. еще ввод (направление (вперед и сколько шагов)и повороты (налево, направо или развернуться))). Надеюсь понятно объяснил.

Добавлено через 2 минуты
Если мне не веришь посмотри
Формат ввода
Сначала вводятся два числа на отдельных строчках(это ввод): координаты клада по оси икс (запад-восток) и игрек (юг-север).
Затем следует некоторое количество указаний карты(и это тоже ввод). Каждое указание карты состоит из одного слова и, возможно, одного натурального числа на отдельной строке. Слово — одно из набора: «вперёд», «налево», «направо», «разворот» или «стоп».
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
04.11.2018, 20:02  [ТС]
Glander, всё вроде правильно, только не работают примеры:
Ввод
-2
9
вперёд
9
налево
вперёд
2
разворот
вперёд
17
стоп
ВЫВОД
3
запад

Ввод
0
1
вперёд
2
разворот
вперёд
1
ВЫВОД
3
юг

Сам переделал, почти работает. Только он выводит не ту переменную the minimum number...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
direction_of_movement = input()
while direction_of_movement != 'стоп':
    if (int(x) == x1 and int(y) == y1) and direction_of_movement == 'стоп':
        break
    else:
        the_minimum_number_of_instructions += 1
        if direction_of_movement == 'вперёд':
            steps = int(input())
            if move == 'север':
                y1 += steps
            elif move == 'запад':
                x1 -= steps
            elif move == 'юг':
                y1 -= steps
            elif move == 'восток':
                x1 += steps
        elif direction_of_movement == 'направо':
            if move == 'север':
                move = 'восток'
            elif move == 'восток':
                move = 'юг'
            elif move == 'юг':
                move = 'запад'
            elif move == 'запад':
                move = 'север'
        elif direction_of_movement == 'налево':
            if move == 'север':
                move = 'запад'
            elif move == 'запад':
                move = 'юг'
            elif move == 'юг':
                move = 'восток'
            elif move == 'восток':
                move = 'север'
        elif direction_of_movement == 'разворот':
            if move == 'север':
                move = 'юг'
            elif move == 'юг':
                move = 'север'
            elif move == 'запад':
                move = 'восток'
            elif move == 'восток':
                move = 'запад'
        direction_of_movement = input()
else:
    if x == 0 and y == 0:
        print(0)
        print('север')
print(the_minimum_number_of_instructions)
print(move)
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 20:18
А чем мой вариант плох? У меня эти примеры правильно работают
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 20:25
Вот скрины:

Изображения
 
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
04.11.2018, 20:30
во втором нужно пару enter'ов нажать и будет вам вывод (это нормально, что вывод такой не переживай)

Добавлено через 2 минуты
И то, что ты переделал 100% работать не будет т.к. во-первых тыы должен запросить координаты клады,
во вторых the_minimum_number_of_instructions ты вывести не сможешь, т.к. он находится в цикле и еще много других ошибок...
Так, что не советую менять мой код)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2018, 20:30
Помогаю со студенческими работами здесь

Ищем клад
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан...

Ищем клад — 1
Задача

Ищем клад - 1
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан...

Ищем клад — 1
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан...

Ищем клад
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0). Нам известно, где закопан клад, но этого...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru