function BinCoef( n, k )
{
var product = 1;
var i = 1;
while( i <= k )
{
product *= (n + 1 - i)/i;
i++;
}// while
return product;
}// BinCoef
function IndexOf( n, k, kombinacija )
{
var index = 0;
var m = 1;
while( m <= kombinacija.length )
{
index += BinCoef( n-kombinacija[m-1], k - m + 1 );
m++;
}// while
return BinCoef( n, k ) - index;
}// IndexOf
function GetIndex()
{
var n = 33;
var k = 7;
var kombinacija = [
[27,28,29,30,31,32,33],
[27,28,29,30,31,33,32],
[2,5,19,20,22,26,30],
[2,5,19,20,22,26,31],
[2,5,19,20,22,26,32],
[2,5,19,20,22,26,33],
[2,5,19,20,22,27,28],
[2,5,19,20,22,27,29],
[1,2,3,4,5,6,7]
];
var index;
var i = 0;
while( i < kombinacija.length )
{
index = IndexOf( n, k, kombinacija[i] );
alert( "{" + kombinacija[i] + "}\nindex = " + index );
i++;
}// while
}// GetIndex
Moguća je optimizacija jer se BinCoef može računati "u letu".