kustiktm_kirill
@kustiktm_kirill
Покоряю мир Python'а

Можно ли сократить код с помощью numpy?

monitors = []
pairs = 0

for i in range(int(input())):
    wh = input().split()
    for monitor in monitors:
        if len(set(wh) & set(monitor)) > 0:
            pairs += 1
    monitors.append(wh)

print(pairs)


Есть такой код. Вводится кол-во элементов, после чего сами элементы из 2-х чисел через пробел. Надо найти количество возможных пар. Условие - у элементов этой пары должно быть одно общее число.

Пример работы:
4
4 5
2 4
6 4
2 3

Ответ - 4
Пары - 4 5 и 2 4, 4 5 и 6 4, 2 4 и 6 4, 2 4 и 2 3
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vindicar
Какие числа могут быть в парах? Если любые, то дело осложняется.
Если же небольшие целые положительные, то можно посчитать так.
Строишь двумерный массив, где первый индекс - первое число из пары, второй - второе.
Заполняешь нулями, потом увеличиваешь элемент на единицу каждый раз, когда встречена такая пара.
Если две пары имеют общее число, они будут лежать на одной строке или на одном столбце.
Тогда если пара не имеет общих чисел с другими, то сумма значений на её строке и её столбце будет 1.
Если две пары имеют общее число, то сумма значений на их общем строке/столбце будет 2. И так далее.
Отсюда вывод: для каждой строки и каждого столбца посчитай сумму значений минус 1 (но ограничь снизу по нулю!). Просуммируй полученные числа, и получишь ответ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы