Witam
Mam ciekawy problem z którym nie mogę się już uporać jakiś dłuższy czas, mianowicie chodzi o kombinatorykę. Mam kombinacje bez powtórzeń czyli:
0,1,2,3,4 //index 0
0,1,2,3,5
0,1,2,3,6
0,1,2,3,7
0,1,2,3,8 //index 4
0,1,2,3,9
0,1,2,3,10
0,1,2,4,5
0,1,2,4,6
0,1,2,4,7 //index 9
..
aż do
6,7,8,9,10
Czyli bodajże C(n,k) czyli C(10,5)
Napisałem sobie funkcje która mi oblicza index na podstawie podanej kombinacji, czyli mojIndex = func(0,1,2,3,8)
mojIndex == 4
wszystko jest ok, ale teraz jak napisać funkcje odwrotna czyli taka, która po podaniu mi indeksu zwróci kombinacje ?
Czyli comb = func(4)
comb = {0,1,2,3,8}
??
Ma ktoś jakieś pomysły ?
Ktos gdzies mi poradzil zebym uzyl tego:
https://secure.wikimedia.org/wikipedia/en/wiki/Combinatorial_number_system#Example
Probowalem srednio mi to chodzilo i nie bardzo moge zrozumiec do konca ...
Czy ma ktos jakis pomysl?
Chodzi mi o rozwiazanie jak najszybsze najlepiej za pomoca dzialania matematycznego, bo moge to zrobic przeciez w petli sprawdzajac index ale to zbyt dlugo trwa (bede mial wiecej kombinacji), oczywiscie moze byc petla itd ale jak najmniej chodzi mi o wydajnosc
Z gory dziekuje za wszelka pomoc i sugestie
Pozdrawiam