Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Skating=
- {
- validate:function(r){return!0},
- fillArrayWithValue:function(r,t)
- {
- var n=Array.apply(null,new Array(r));
- return n.map(function(r,n)
- {return{index:n,value:t}}
- )
- },
- judges:3,
- calc:function(r)
- {
- var t=[];
- if(Skating.validate(r))
- {
- var n=[],e={},a=0;
- for(var u in r)
- if(r.hasOwnProperty(u))
- {var i=new Dancer(u);
- i.index=a,i.points=r[u],i.updateSum(),t.push(i),a++
- }
- for(var u=0;u<t.length+1;u++)
- {for(var o=[],l=0;l<t.length;l++)
- o.push([]);
- n.push(o)
- }
- for(var u=1;u<=t.length;u++)
- e[u]=[];
- for(var s=1,h=Math.floor(Skating.judges/2)+1,v=t.length,u=0;v>u;u++)
- n[0][u]="1"+(0==u?"":"-"+(u+1));
- for(var f=1;v>=f;f++)
- {
- for(var c=Skating.fillArrayWithValue(t.length,0),u=0;u<t.length;u++)
- for(var d=t[u].points,l=0;l<d.length;l++)
- d[l]<=f&&c[u].value++;
- for(var g=[],u=0;u<c.length;u++)
- c[u].value>=h&&!t[u].excluded&&(t[u].majority=c[u].value,g.push(t[u]));
- for(var p=0;p<c.length;p++)
- n[p+1][f-1]=t[p].excluded?"-":c[p].value;
- if(1==g.length)
- console.log(g[0].num+" -- "+s+" place"),
- e[s].push(g[0].num),
- s++,t[g[0].index].excluded=!0;
- else
- {
- g.sort(function(r,t){return t.value-r.value});
- for(var m={},u=0;u<g.length;u++)
- void 0===m[g[u].majority]?m[g[u].majority]=[g[u]]:m[g[u].majority].push(g[u]);
- var y=Object.keys(m);
- for(y.sort(function(r,t){return t-r});y.length>0;)
- {
- var x=m[y.shift()];
- x.sort(function(r,t){return t.sum-r.sum});
- for(var j={},u=0;u<x.length;u++)
- void 0===j[x[u].sum]?j[x[u].sum]=[x[u]]:j[x[u].sum].push(x[u]);
- var k=Object.keys(j);
- k.sort(function(r,t){return+t-+r});
- for(var u=0;u<k.length;u++)
- {
- for(var S=j[k[u]],l=0;l<S.length;l++)
- e[s].push(S[l].num),
- t[S[l].index].excluded=!0;
- s++
- }
- }
- }
- }
- return{places:e,table:n}
- }
- }
- },
- Dancer=function(r)
- {
- var t=this;
- this.index=0,
- this.num=r,
- this.points=[],
- this.sum=0,
- this.updateSum=function()
- {
- for(var r=0,n=0;n<t.points.length;n++)
- r+=t.points[n];
- t.sum=r
- },
- this.majority=0,
- this.excluded=!1
- };
Advertisement
Add Comment
Please, Sign In to add comment