Top.Mail.Ru
Ответы

ИНФОРМАТИКА РЕШИТЬ СРОЧНО

Паша ходил по лесу с игрушечным луком, который ему подарили на Новый Год, и стрелял в деревья. Но одна стрела полетела куда-то мимо, Паша пошёл за ней и увидел, что попал на поляну с рапторами. Более того, оказалось, что некоторые рапторы держат в зубах стрелы разных форм и размеров. Причём все стрелы расположены горизонтально в одной плоскости, но у одних наконечник направлен влево, а другие перевёрнуты, и наконечник у них смотрит вправо. Паша хочет как можно быстрее забрать свою стрелу и уйти оттуда. Помогите по образцу стрелы Паши найти раптора, который держит такую же стрелу. Стрела всегда состоит из трёх последовательных частей: наконечника, древка и оперения. Если стрела повёрнута влево, то сначала будет наконечник из произвольного числа символов '<', потом древко из произвольного числа символов '-, потом оперение из символов ''. Если она повернута вправо, то сначала оперенье '=', потом древко'' и наконечник в другую сторону: '>'. Гарантируется, что есть хотя бы по одному символу каждого вида. Формат входных данных В первой строке образец Пашиной стрелы строка из символов '<', '>', '-', '='. Длина строки не превышает 100 символов. Во второй строке вводится целое число № количество рапторов со стрелами (0 <= N <= 103). Затем следуют № строк, задающих стрелы рапторов. Формат такой же, как у образца, в каждой строке не больше 100 символов. Формат результата Выведите номер раптора из входного списка с подходящей стрелой. Считайте, что рапторы нумеруются с нуля. Если таких несколько, выведите минимальный номер. Если подходящих нет, выведите -1.

По дате
По рейтингу
Аватар пользователя
Мудрец
4мес

DeepSeek-R1:

Для решения задачи необходимо найти стрелу раптора, которая идентична образцу Пашиной стрелы. Каждая стрела может быть направлена влево или вправо и состоит из трёх частей: наконечника, древка и оперения. Для определения совпадения необходимо проверить точное соответствие строки стрелы раптора с образцом.

### Алгоритм решения:
1. Считать образец стрелы Паши.
2. Считать количество стрел рапторов.
3. Для каждой стрелы раптора проверить, совпадает ли она с образцом.
4. Если найдено совпадение, вывести индекс первого подходящего раптора.
5. Если совпадений нет, вывести -1.

### Решение:

123456789101112131415
 pattern = input().strip()  
 
n = int(input())  
 
for i in range(n):  
 
    s = input().strip()  
 
    if s == pattern:  
 
        print(i)  
 
        exit()  
 
print(-1)  
Аватар пользователя
Мастер
4мес

Чтобы решить задачу, нужно определить, в каком направлении ориентирована стрела Паши и затем сравнить её с стрелами рапторов.

1. Сначала определим, какие символы есть в образце:
- Если первый символ '<', стрела направлена влево.
- Если первый символ '>', стрела направлена вправо.

2. Разделим образец на части:
- Для стрелы, направленной влево: сначала идут '<', затем '-' и в конце ''.
- Для стрелы, направленной вправо: сначала '=' потом '-', а потом '>'.

3. Затем, для каждой стрелы раптора, также разделим на части и проверим, совпадают ли они с частями стрелы Паши в зависимости от направления.

4. Если найдем совпадение, запоминаем номер раптора. В конце выводим номер первого найденного раптора или -1, если совпадений не оказалось.

Примерный код для выполнения данной логики:

sample_arrow = input().strip()
N = int(input().strip())
raptor_arrows = [input().strip() for _ in range(N)]

found_index = -1

# Определение части стрелы Паши
if sample_arrow[0] == '<':
# Определение левой стрелы
left_tip = sample_arrow.split('-', 1)[0]
left_body = sample_arrow.split(left_tip + '-', 1)[1].split('', 1)[0]
left_fletching = sample_arrow.split(left_tip + '-' + left_body)[-1]
else:
# Определение правой стрелы
right_fletching = sample_arrow.split('-', 1)[0]
right_body = sample_arrow.split(right_fletching + '=', 1)[1].split('>', 1)[0]
right_tip = sample_arrow.split(right_fletching + '=' + right_body)[-1]

# Поиск подходящей стрелы у рапторов
for i in range(N):
raptor_arrow = raptor_arrows[i]
if raptor_arrow[0] == '<':
# Левый
raptor_left_tip = raptor_arrow.split('-', 1)[0]
raptor_left_body = raptor_arrow.split(raptor_left_tip + '-', 1)[1].split('', 1)[0]
raptor_left_fletching = raptor_arrow.split(raptor_left_tip + '-' + raptor_left_body)[-1]

if left_tip == raptor_left_tip and left_body == raptor_left_body and left_fletching == raptor_left_fletching:
found_index = i
break
else:
# Правый
raptor_right_fletching = raptor_arrow.split('-', 1)[0]
raptor_right_body = raptor_arrow.split(raptor_right_fletching + '=', 1)[1].split('>', 1)[0]
raptor_right_tip = raptor_arrow.split(raptor_right_fletching + '=' + raptor_right_body)[-1]

if right_fletching == raptor_right_fletching and right_body == raptor_right_body and right_tip == raptor_right_tip:
found_index = i
break

print(found_index)

Этот код позволяет найти номер раптора с подходящей стрелой или вывести -1, если таких рапторов нет.