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

Ищем клад — 1

28.10.2018, 18:22. Показов 128297. Ответов 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
05.11.2018, 12:37
Студворк — интернет-сервис помощи студентам
Странный тест какой-то в условии написано: Команда «стоп» означает остановку. А здесь стопа нет...

Добавлено через 1 минуту
А когда вот этот код отправлял:
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
56
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)
        print('север')
какой тест?
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
05.11.2018, 13:15  [ТС]
Glander, тоже самую ошибку давал.
0
0 / 0 / 0
Регистрация: 16.10.2018
Сообщений: 19
05.11.2018, 13:24
Я видимо тебя не так понял. Ты ж сам говорил, что с Яндекса. Я знаю, что 2-ой, сам ведь оттуда. Чего-то не понимать - нормально, и обычно помощи просят у других, у меня ведь не к тебе обращение, а к тому, кто сомневается в политике Яндекса)
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
05.11.2018, 13:26
Лучший ответ Сообщение было отмечено CyberGame как решение

Решение

Попробуй так
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
56
57
58
59
60
try:
    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 != 'стоп' or 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)
            print('север')
except EOFError:
    print(the_minimum_number_of_instructions)
    print(move)
1
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
05.11.2018, 13:38  [ТС]
Glander, ничего себе, засчитал. Спасибо тебе огромное, что не бросил меня . До конца, теперь можешь объяснить, что за try(), except.
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
05.11.2018, 16:13
CyberGame эту конструкцию используют как исключения, а исключения необходимы для того, чтобы сообщать программисту об ошибках. Т.е. например мы не можем делить число на ноль и тогда нам и нужна это конструкция, чтобы сказать: 'извини чувак, но на ноль делить нельзя'. Я думаю пока тебе этого хватит, но если очень интересно, то вот ссылка: https://pythonworld.ru/tipy-da... henij.html

Добавлено через 2 часа 10 минут
CyberGame, не забудь этот ответ отметить как правильный, а то кто-нибудь запутается в этой большой теме(все-таки 3 страницы))
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
05.11.2018, 18:36  [ТС]
Glander, Слушай, мне нужна помощь по многим задачкам, к завтрашнему дню не успеваю, до завтра 23:59, поможешь хотябы просто задания расшифровать. За небольшое вознаграждение?
0
14 / 11 / 3
Регистрация: 12.04.2018
Сообщений: 51
05.11.2018, 18:59
CyberGame, насчет этого в личку
0
4 / 3 / 1
Регистрация: 28.02.2019
Сообщений: 21
20.09.2019, 15:32
сделай плз без нажатий энтер. Чтобы сразу выводило
0
20.09.2019, 15:40

Не по теме:

araama2016, некропостинг (добавление комментариев в древние темы) запрещено, если я правильно помню.

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.09.2019, 15:55
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
(добавление комментариев в древние темы) запрещено, если я правильно помню.
Нет. У тем нет понятия старые/новые (для форума). Так что можно поднимать/комментить темы с самых истоков. Другой вопрос - надо ли?
0
1 / 1 / 0
Регистрация: 03.08.2020
Сообщений: 21
12.10.2020, 19:41
полностью рабочий код
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
56
57
58
59
60
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 = 'запад'
        if int(x) == x1 and int(y) == y1:
            print(the_minimum_number_of_instructions)
            print(move)
            break
        direction_of_movement = input()
else:
    if x == 0 and y == 0:
        print(0)
        print("север")
0
0 / 0 / 0
Регистрация: 04.01.2021
Сообщений: 2
08.01.2021, 23:46
InferusAnima, ты Магистр Питона. СПАСИБО. Кудда флажок? (Я тут недавно)
0
1 / 1 / 1
Регистрация: 17.09.2018
Сообщений: 3
12.03.2021, 08:48
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
x = int(input()) # x клада
y = int(input()) # y клада
xy_map = [x, y] # список клада
t = 0 # переменная для сторон света
p = ['север', 'запад', 'юг', 'восток'] # стороны света
xy = [0, 0] # координаты пирата
comand = '' # вводимые команды
a = 0 # счетчик
while xy != xy_map:
    comand = input()
    a += 1
    if t == 4:
        t = 0
    if t == -1:
        t = 3
    if comand == "вперёд":
        xyt = int(input())
        if t == 0:
            xy[1] += xyt
        if t == 1:
            xy[0] -= xyt
        if t == 2:
            xy[1] -= xyt
        if t == 3:
            xy[0] += xyt
    if comand == "налево":
        t += 1
    if comand == "направо":
        t -= 1
    if comand == "разворот":
        t += 2
    if comand == "стоп":
        break
print(a)
print(p[t])
1
2 / 2 / 0
Регистрация: 14.10.2021
Сообщений: 6
06.11.2021, 11:45
Программа работает правильно!
Всё выводит правильно!

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
x_klad = int(input())
y_klad = int(input())
x = 0
y = 0
c = 0            #Мин. кол-во указаний карты
z = 1            #Направление (Север - 1, Восток - 2, Юг - 3, Запад - 4)
while True:
    if (x == x_klad) and (y == y_klad):
        break
    else:
        a = input()
        if a == "вперёд":
            b = int(input())
            if z == 1:
                y += b
            elif z == 3:
                y -= b
            elif z == 2:
                x += b
            elif z == 4:
                x -= b
            c += 1
        elif a == "направо":
            if z == 4:
                z = 1
            else:
                z += 1
            c += 1
        elif a == "налево":
            if z == 1:
                z = 4
            else:
                z -= 1
            c += 1
        elif a == "разворот":
            if (z == 3) or (z == 4):
                z -= 2
            else:
                z += 2
            c += 1
print(c)
if z == 1:
    print("север")
elif z == 2:
    print("восток")
elif z == 3:
    print("юг")
elif z == 4:
    print("запад")
0
8 / 8 / 0
Регистрация: 27.11.2021
Сообщений: 28
28.07.2022, 12:04

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
x1, y1, x, y, count, world_side = 0, 0, int(input()), int(input()), 0, 'север'
while not (x1 == x and y1 == y):
    command = input()
    count += 1
    if command == 'вперёд':
        n = int(input())
        if world_side in 'западюг':
            n *= -1
        if world_side in 'западвосток':
            x1 += n
        else:
            y1 += n
    elif (command == 'налево' and world_side == 'север') \
            or (command == 'направо' and world_side == 'юг')\
            or (command == 'разворот' and world_side == 'восток'):
        world_side = 'запад'
    elif (command == 'налево' and world_side == 'юг') \
            or (command == 'направо' and world_side == 'север')\
            or (command == 'разворот' and world_side == 'запад'):
        world_side = 'восток'
    elif (command == 'налево' and world_side == 'восток') \
            or (command == 'направо' and world_side == 'запад') \
            or (command == 'разворот' and world_side == 'юг'):
        world_side = 'север'
    else:
        world_side = 'юг'
print(count, world_side, sep='\n')
0
0 / 0 / 0
Регистрация: 11.01.2025
Сообщений: 5
12.01.2025, 18:45
Рабочий код, у меня приняли





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
56
57
x_klad = int(input())
y_klad = int(input())
 
x_dir = 0
y_dir = 0
 
direction = 0
count = 0
steps = 0
look = 0
 
while True:
    try:
        comand = input()
 
    except EOFError:
        break
        
    if comand == 'вперёд':
        t = int(input())
        if direction == 0:
            y_dir += t
        elif direction == 1:
            x_dir += t
        elif direction == 2:
            y_dir -= t
        else:
            x_dir -= t
            
        if x_klad == x_dir and y_klad == y_dir and count == 0:
            count = steps + 1
            look = direction
 
    elif comand == 'налево':
        direction = (direction - 1) % 4
 
    elif comand == 'направо':
        direction = (direction + 1) % 4
 
    elif comand == 'разворот':
        direction = (direction + 2) % 4
 
    steps += 1
 
print(count)
 
if look == 0:
    print('север')
 
elif look == 1:
    print('восток')
 
elif look == 2:
    print('юг')
 
elif look == 3:
    print('запад')
Миниатюры
Ищем клад — 1  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2025, 18:45
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru