module.exports = compareCells var min = Math.min function compareInt(a, b) { return a - b } function compareCells(a, b) { var n = a.length , t = a.length - b.length if(t) { return t } switch(n) { case 0: return 0 case 1: return a[0] - b[0] case 2: return (a[0]+a[1]-b[0]-b[1]) || min(a[0],a[1]) - min(b[0],b[1]) case 3: var l1 = a[0]+a[1] , m1 = b[0]+b[1] t = l1+a[2] - (m1+b[2]) if(t) { return t } var l0 = min(a[0], a[1]) , m0 = min(b[0], b[1]) return min(l0, a[2]) - min(m0, b[2]) || min(l0+a[2], l1) - min(m0+b[2], m1) case 4: var aw=a[0], ax=a[1], ay=a[2], az=a[3] , bw=b[0], bx=b[1], by=b[2], bz=b[3] return (aw+ax+ay+az)-(bw+bx+by+bz) || min(aw,ax,ay,az)-min(bw,bx,by,bz,bw) || min(aw+ax,aw+ay,aw+az,ax+ay,ax+az,ay+az) - min(bw+bx,bw+by,bw+bz,bx+by,bx+bz,by+bz) || min(aw+ax+ay,aw+ax+az,aw+ay+az,ax+ay+az) - min(bw+bx+by,bw+bx+bz,bw+by+bz,bx+by+bz) default: var as = a.slice().sort(compareInt) var bs = b.slice().sort(compareInt) for(var i=0; i