comparative-judgement
Version:
Comparative Judgement Algorithms
1 lines • 1.44 kB
JavaScript
/*! comparative-judgement - v0.2.2 - (c) 2015 ; Licensed GPL */!function(a,b){"object"==typeof exports?module.exports=b(require("underscore")):"function"==typeof define&&define.amd?define(["underscore"],b):a.cj=b(a._)}(this,function(a){"use strict";function b(b){b=a.sortBy(a.shuffle(b),function(a){return a.selected});var c,d=b.shift();return c=d.selected<=0?b.shift():a.find(b,function(b){return!a.contains(b.opponents,d._id)}),c||(c=b.shift()),[d,c]}function c(b,c,d){for(var e=require("..").statutils,f=0;f<b.length;f++)b[f].hasOwnProperty("trueScore")||(b[f].trueScore=0);c=c?c:20,d=d?d:1,b=a.sortBy(a.shuffle(b),function(a){return a.selected});var g,h,i=b.shift();if(i.selected<=0)g=b.shift();else{{i.trueScore?i.trueScore:0}h=a.filter(b,function(b){return!a.contains(b.opponents,i._id)}),0===h.length&&(h=b);var j=a.pluck(h,"trueScore"),k=i.comparisons;k>c&&(k=c);var l=e.calciPR(i.trueScore,j,k,c,d),m=e.sampleVector(l,Math.random());g=h[m]}return[i,g]}function d(b,c,d){var e,f=require("..").statutils,g=a.pluck(c,"_id"),h=f.k_combinations,i=h(g,2),j=a.filter(d,function(a){return a.judge==b}),k=a.pluck(j,"chosen"),l=a.pluck(j,"notChosen"),m=a.zip(k,l),n=a.filter(i,function(b){return!a.findWhere(m,b)&!a.findWhere(m,[b[1],b[0]])});e=n.length>0?a.shuffle(n).shift():a.shuffle(i).shift();var o=a.findWhere(c,{_id:e[0]}),p=a.findWhere(c,{_id:e[1]});return[o,p]}return{selectionAdaptive:c,selectionNonAdaptive:b,selectionByJudge:d}});