Ashotik Craig
Мастер
(1113)
1 год назад
def count_points(ship_coords, R, pegasus_coords, N, commands):
def distance(coord1, coord2):
return sum((x1 - x2) ** 2 for x1, x2 in zip(coord1, coord2)) ** 0.5
def is_within_range(coords):
return distance(coords, ship_coords) <= R
visited_points = set()
current_coords = ship_coords
for _ in range(N):
command = commands[_]
current_coords = (current_coords[0] + command[0], current_coords[1] + command[1], current_coords[2] + command[2])
visited_points.add(current_coords)
if is_within_range(current_coords):
visited_points.add(pegasus_coords)
break
return len(visited_points)
input_data1 = (0, 0, 0, 400)
input_data2 = (0, 0, 0, 4)
input_data3 = (0, 0, 0, 400)
ship_coords = (0, 0, 100)
pegasus_coords = (4, 0, 0)
N = 3
commands1 = [(3, 3, 3), (2, -3, -3), (-6, 0, 0)]
commands2 = [(3, 3, 3), (2, -3, -3), (-6, 0, 0)]
commands3 = [(3, 3, 3), (2, -3, -3), (-6, 0, 0)]
result1 = count_points(input_data1, ship_coords, pegasus_coords, N, commands1)
result2 = count_points(input_data2, ship_coords, pegasus_coords, N, commands2)
result3 = count_points(input_data3, ship_coords, pegasus_coords, N, commands3)
print(result1)
print(result2)
print(result3)
Исполнитель Говорун действует в трехмерном пространстве с декартовой системой координат. Исполнитель Говорун умеет исполнять только одну команду Перелететь на (a,b,c) (где a, b, c - целые числа), перемещающую исполнителя Говоруна из точки с координатами (x, y, z) в точку с координатами (x+a, y+b, z+c). Если числа a, b, c положительные, то значения соответствующей координаты увеличивается, если отрицательные - уменьшается. Исполнитель Говорун был запущен с корабля "Синяя чайка" (координаты корабля - целые числа) по определенному маршруту с сигналом SOS. Исполнитель не может удаляться от корабля "Синяя чайка" на расстояние более, чем R.
Определите сколько различных точек с целочисленными координатами принадлежит траектории Говоруна до завершения его миссии, считая начальную и конечную точки. Миссия исполнителя завершается, если:
- выполнены все команды;
- исполнитель нашел корабль "Пегас" (то есть точка с координатами корабля принадлежит траектории исполнителя);
- исполнитель удалился от корабля "Синяя чайка" на расстояние большее, чем R.
Входные данные:
1-я строка содержит координаты корабля "Синяя чайка" и расстояние R (все числа целые и по модулю не более 106, R - натуральное);
2-я строка содержит координаты корабля "Пегас"
3-я строка содержит число N - количество команд (N ≤ 105).
В следующих N строках записаны параметры для команд исполнителя - три целых числа.
Выходные данные
Ответ на задачу - количество различных целочисленных точек, в которых успеет побывать Исполнитель до завершения программы
1)
0 0 0 400
0 0 100
3
3 3 3
2 -3 -3
-6 0 0
2)
0 0 0 4
0 0 100
3
3 3 3
2 -3 -3
-6 0 0
3)
0 0 0 400
4 0 0
3
3 3 3
2 -3 -3
-6 0 0