JavaScript
var prods=
{
gl1kCottonCandy:{createProgram:1,shaderSource:1,createShader:1,compileShader:1,attachShader:1,linkProgram:1,useProgram:1,enableVertexAttribArray:1,getUniformLocation:1,bindBuffer:1,createBuffer:1,bufferData:1,vertexAttribPointer:1,drawArrays:1,uniform1f:1}, gl1kCottonCandySansUniforms:{createProgram:1,shaderSource:1,createShader:1,compileShader:1,attachShader:1,linkProgram:1,useProgram:1,enableVertexAttribArray:1,getUniformLocation:1,bindBuffer:1,createBuffer:1,bufferData:1,vertexAttribPointer:1,drawArrays:1}, magister:{attachShader:1,createProgram:1,linkProgram:1,createBuffer:1,bindBuffer:1,bufferData:1,viewport:1,createShader:1,shaderSource:1,compileShader:1,useProgram:1,getAttribLocation:1,getUniformLocation:1,uniform1f:1,uniform2f:1,vertexAttribPointer:1,enableVertexAttribArray:1,drawArrays:1},
magisterSansUniforms:{attachShader:1,createProgram:1,linkProgram:1,createBuffer:1,bindBuffer:1,bufferData:1,viewport:1,createShader:1,shaderSource:1,compileShader:1,useProgram:1,getAttribLocation:1,getUniformLocation:1,vertexAttribPointer:1,enableVertexAttribArray:1,drawArrays:1} };
var hashMethods =
{
jed:function(a){return a[1]+a[7]},
p01: function(a){return a.match(/^..|[A-Z]|\df$/g).join('')},
daeken:function(a){return a.slice(1,-5).replace(/[ntalruicoh]/ig,'')}
}
function testHashingUniqueness( obj, hashMethod , methodsUsed )
{
var k,
l,
gain=-hashMethod.toString().length,
isUniqueEnough = true;
keys={},
uniques=[],
collisions=[];
for(k in obj)
{
l=hashMethod(k);
keys[l]?keys[l].push(k):keys[l]=[k];
if(methodsUsed[k])methodsUsed[k]=l;
}
// check uniqueness
for(k in methodsUsed)
{
l= hashMethod (k);
var unique = keys[l].length==1;
gain += k.length-l.length;
isUniqueEnough &= unique;
gain &= -isUniqueEnough ;
l=...