Пусть N = 4, тогда у меня 4, выбираю 2 = 6 расстояний, набор
Код: Выделить всё
{(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)}
Мне нужно взять N и вывести список всех такие 3-звездочки и все треугольники. Они могут находиться в одном списке или в разных списках вывода.
Есть ли быстрый способ сделать это? Я использую Python, поэтому у меня есть доступ к мультииндексу pandas, который, я думаю, может быть полезен.
До сих пор я пробовал использовать очень наивный подход, где я просто повторяю 6 переменные от 1 до NC2 и используйте индикаторную функцию, чтобы выделить все треугольники. Еще мне удалось выделить 3 звезды с помощью мультииндекса:
Код: Выделить всё
edges = list(itertools.combinations(range(N),2))
mi = pd.MultiIndex.from_tuples(edges)
# all 3 pairs share 1 index
for i in range(c):
core = mi[i]
arr = np.bitwise_xor(mi.get_level_values(0) == core[0], mi.get_level_values(1) == core[1])
for (outer1, outer2) in itertools.combinations(mi[arr], 2):
if outer1[0] in outer2 or outer1[1] in outer2:
print(core, outer1, outer2)
Я уверен, что есть простой способ сделать это, но я просто не могу этого сделать. обдумай это, поэтому любая помощь будет оценена по достоинству. Спасибо
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-pattern