afryca.ase.Snippet Library distance var distance = (typeof exports === "undefined")?(function distance() {}):(exports); if(typeof global !== "undefined") { global.distance = distance; } distance.kemeny = function kemeny(r1, r2) { var result; if ((r1 != null) && (r2 != null)) { if (r1.length == r2.length) { result = 0; var v1; var v2; var n = r1.length; for (var l = 0; l < (n - 1); l++) { for (var k = l + 1; k < n; k++) { v1 = r1[l] - r1[k]; // v1{(0,equals),(<0,o(l)0,o(l)>o(k)} v2 = r2[l] - r2[k]; // v2{(0,equals),(<0,o(l)0,o(l)>o(k)} if ((v1 < 0) && (v2 > 0)) { result += 1; } else if ((v1 > 0) && (v2 < 0)) { result += 1; } else if ((v1 == 0) && (v2 != 0)) { result += 0.5; } else if ((v1 != 0) && (v2 == 0)) { result += 0.5; } } } } } return result; } distance.normalizeKemeny = function normalizeKemeny(kemeny, numberOfElements) { var result; if (numberOfElements > 0) { result = (2 * kemeny) / (numberOfElements * (numberOfElements - 1)); } return result; } distance.normalizedKemeny = function normalizedKemeny(r1, r2) { return distance.normalizeKemeny(distance.kemeny(r1, r2), r1.length); } distance