Мне нужно создать перестановку заданного списка с таким ограничением, чтобы
given input sequence=(x_0, x_1, x_2,..) and an integer k, the output sequence=(x_perm(0), x_perm(1), x_perm(2),..) with perm(i)< i+k.
For example for k=2 that means;
x_perm(0) is either x_0 or x_1
x_perm(1) is either x_0, x_1 or x_2
Another example for input=[3,4,5] and k=2 is:
output=[4,3,5] is a valid permutation, but [5,4,3] is not since x_perm(0) cannot be x_2.
def spec_perm(iterable, k):
import random
perm=[0]*len(iterable)
for i in range (0,len(iterable)):
perm[i]=random.choice(iterable[0:k+i])
return perm
Я пробовал этот код, но случайный выбор включает в себя повторы, поэтому он не дает желаемых результатов.
В конце мне нужно получить все допустимые перестановки.