Я на самом деле не знаю R, но вот как я подойду к этой проблеме:
Найдите, сколько элементов каждого типа, т.е.
4 X 0
2 X 1
2 X 3
2 X 4
Сортировка по частоте (котораявыше уже есть).
Начните с наиболее частого значения, которое занимает 4 из 10 мест.Определите уникальные комбинации из 4 значений в 10 доступных местах.(0,1,2,3), (0,1,2,4), (0,1,2,5), (0,1,2,6) ... (0,1,2,9), (0,1,3,4), (0,1,3,5) ... (6,7,8,9)
Переходите ко второму наиболее частому значению, оно занимает2 из 6 доступных мест, и определите его уникальные комбинации из 2 из 6. (0,1), (0,2), (0,3), (0,4), (0,5), (1,2), (1,3) ... (4,6), (5,6)
Затем 2 из 4: (0,1), (0,2), (0,3),(1,2), (1,3), (2,3)
И остальные значения, 2 из 2: (0,1)
Затем вам нужно объединить их вкаждая возможная комбинация.Вот некоторый псевдокод (я убежден, что для этого есть более эффективный алгоритм, но он не должен быть слишком плохим):
lookup = (0,1,3,4)
For each of the above sets of combinations, example: input = ((0,2,4,6),(0,2),(2,3),(0,1))
newPermutation = (-1,-1,-1,-1,-1,-1,-1,-1,-1,-1)
for i = 0 to 3
index = 0
for j = 0 to 9
if newPermutation(j) = -1
if index = input(i)(j)
newPermutation(j) = lookup(i)
break
else
index = index + 1