Я ищу код C или Python для реализации любой из двух функций псевдокода:
function 1:
list1 = [0,1,2] #any list of single-integer elements
list2 = [0,3,4]
list3 = [0,2,4]
function1(list1, list2, list3)
>>> (0,3,2),(0,3,4),(0,4,2),(1,0,2),(1,0,4),(1,3,0),(1,3,2),(1,3,4),
(1,4,0),(1,4,2),(2,0,4),(2,3,0),(2,3,4),(2,4,0)
По сути, он генерирует все допустимые перестановки, как определено наличием a) одного элемента из каждого списка и b) отсутствием элементов с одинаковым значением.
function 2:
list1 = [(0,1),(0,2),(0,3)] #any list of double-integer tuples
list2 = [(0,4),(1,4),(2,4)]
function2(list1, list2)
>>> ((0,1),(2,4)) , ((0,2),(1,4)) , ((0,3),(1,4)) , ((0,3),(2,4))
Функция 2 генерирует любую перестановку, в которой есть один кортеж из каждого списка и нет элементов внутри каждого повторяемого кортежа.
Я посмотрел на справку по Python itertools и не смог найти ничего, что повторяло бы эти псевдофункции. Есть идеи?
Спасибо
Mike