2 лазерных луча количество пересечений в зеркальной проблемеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 2 лазерных луча количество пересечений в зеркальной проблеме

Сообщение Anonymous »

У меня есть алгоритмическая проблема, которую я не смог решить. Буду признателен за любую помощь с этим
Основная проблема:
Два лазерных луча, синий и красный цвет, застреляются в зеркало и отскочивают вокруг. Найдите количество пересечений между ними. Пример: < /p>

Код: Выделить всё

red = [2, 7, 8, 15, 20]
blue = [3, 4, 5, 7, 10, 16, 21]

Should give me 7

Код: Выделить всё

red = [10, 20, 30]
blue = [1, 10, 20]

Should give me 3

моя попытка и проблема
Я был способен решить второй пример, настраивая пары, и gantersing и ga. Но это не сработает для первого примера, так как существует 2 пересечения между Red = [2] и Blue = [3] . Я окружил эту часть на картинке. Любое предложение о том, что я должен сделать, будет оценено.

Код: Выделить всё

def count_intersections(red, blue):
intersections = 0

# 0 as the starting point
red_points = [0] + red
blue_points = [0] + blue

# Create intervals for red beam
red_intervals = []
for i in range(len(red_points) - 1):
if i % 2 == 0:
red_intervals.append((red_points[i], red_points[i + 1], "Top"))
else:
red_intervals.append((red_points[i], red_points[i + 1], "Bottom"))

# Create intervals for blue beam
blue_intervals = []
for i in range(len(blue_points) - 1):
if i % 2 == 0:
blue_intervals.append((blue_points[i], blue_points[i + 1], "Top"))
else:
blue_intervals.append((blue_points[i], blue_points[i + 1], "Bottom"))

# Check all red intervals against all blue intervals
for r_start, r_end, r_start_pos in red_intervals:
for b_start, b_end, b_start_pos in blue_intervals:

# Check if the intervals overlap and the paths cross
if (r_start = b_end) or (r_start >= b_start and r_end 

Подробнее здесь: [url]https://stackoverflow.com/questions/79601482/2-laser-beams-number-of-intersections-in-a-mirror-problem[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • 2 лазерных луча количество пересечений в зеркальной проблеме
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • 2 лазерных луча количество пересечений в зеркальной проблеме
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • 2 лазерных луча количество пересечений в зеркальной проблеме
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Задача LeetCode: количество лазерных лучей в банке
    Anonymous » » в форуме C++
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Задача LeetCode: количество лазерных лучей в банке
    Anonymous » » в форуме C++
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»