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

Ищем клад — 1

28.10.2018, 18:22. Показов 128421. Ответов 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
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru