Created
February 29, 2012 01:30
-
-
Save shinout/1936818 to your computer and use it in GitHub Desktop.
cap, cup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function unique(arr) { | |
var ret = []; | |
for(var i=0, l=arr.length; i<l; i++) { | |
for(var j=i+1; j<l; j++) { | |
if (arr[i] === arr[j]) j = ++i; | |
} | |
ret.push(arr[i]); | |
} | |
return ret; | |
}; | |
function cup(arr) { | |
return unique(Array.prototype.concat.apply([], arr)); | |
} | |
function cap(arr) { | |
if (!arr.length) return []; | |
var current = ret = arr.shift(), target; | |
var n = 0, len = arr.length; | |
while(n < len) { | |
ret = [], target = arr[n++]; | |
for(var i=0, l=current.length; i<l; i++) { | |
for(var j=0, l2=target.length; j<l2; j++) { | |
if (current[i] === target[j]) ret.push(current[i]); | |
} | |
} | |
current = ret; | |
} | |
return unique(ret); | |
}; | |
var sample1 = [ | |
[1,6,9,4,5,2,2,4], | |
[3,6,3,6,6,2,3], | |
[1,8,9,4,2,8,3,2], | |
[1,2,2,9,5,5,4,6], | |
[0,1,9,6,5,4,2,6], | |
[2,7,9,8,1,1,3,7], | |
[4,3,7,0,1,8,2,7] | |
]; | |
console.log(sample1.slice()); | |
console.log(cap(sample1.slice())); | |
console.log(cup(sample1.slice())); | |
var N = 10000; | |
console.time("cap"); | |
for (var i=0; i<N; i++) var v1 = cap(sample1.slice()) | |
console.timeEnd("cap"); | |
console.time("cup"); | |
for (var i=0; i<N; i++) var v1 = cup(sample1.slice()) | |
console.timeEnd("cup"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment