arrow-utils
Version:
arrow-utils library binds array and object methods.Complex Array and Object operations are made simple
1 lines • 712 B
JavaScript
function get_Possible_Permutation(r){var n=r[0],t=r.splice(1,r.length-1),e=[];function u(r,n){var e=t[r];t[r]=t[n],t[n]=e}return function r(i){if(1==i){var o=Array.from(t);o.unshift(n),o.push(n),e.push(o)}else for(var f=0;f!=i;++f)r(i-1),u(i%2?0:f,i-1)}(t.length),e}function sorter(r,n){return r.distance-n.distance}function reducer(r,n){return r+n}exports.GetOptimizedRoute=function(r,n){var t=Array.from(n);return get_Possible_Permutation(n).map(function(n){var e=n[1],u=r[0].find(function(r,n){return t[n]==e}),i=[];return i.push(u),n.forEach(function(e,u){if(0!=u&&1!=u){var o=n[u-1],f=t.indexOf(o),c=r[f].find(function(r,n){return t[n]==e});i.push(c)}}),{route:n,distance:i.reduce(reducer)}}).sort(sorter)};