function checker(flag, myRand) { return function (rand) { function stage1() { var a = Array.apply(null, new Array(Math.floor(Math.random() * 20) + 10)).map(function () {return Math.random() * 0x10000;}); var b = rand(a.length); if (!Array.isArray(b)) { print("You're a cheater!"); return false; } if (b.length < a.length) { print("hmm.. too short.."); for (var i = 0, n = a.length - b.length; i < n; i++) { delete b[b.length]; b[b.length] = [Math.random() * 0x10000]; } } else if (b.length > a.length) { print("hmm.. too long.."); for (var i = 0, n = b.length - a.length; i < n; i++) Array.prototype.pop.apply(b); } for (var i = 0, n = b.length; i < n; i++) { if (a[i] != b[i]) { print("ddang~~"); return false; } } return true; } function stage2() { var a = Array.apply(null, new Array((myRand() % 20) + 10)).map(function () {return myRand() % 0x10000;}); var b = rand(a.length); if (!Array.isArray(b)) { print("You're a cheater!"); return false; } if (b.length < a.length) { print("hmm.. too short.."); for (var i = 0, n = a.length - b.length; i < n; i++) { delete b[b.length]; b[b.length] = [Math.random() * 0x10000]; } } else if (b.length > a.length) { print("hmm.. too long.."); for (var i = 0, n = b.length - a.length; i < n; i++) Array.prototype.pop.apply(b); } for (var i = 0, n = b.length; i < n; i++) { if (a[i] != b[i]) { print("ddang~~"); return false; } } return true; } print("stage1"); if (!stage1()) return; print("stage2"); if (!stage2()) return; print("awesome!"); return flag; }; }} 2014-05-31 09:05:21 UTC [sa.mur.ai :: #javascriptjail] superno: Array.isArray = function(){return true;}; 2014-05-31 09:05:23 UTC [sa.mur.ai :: #javascriptjail] superno: check(function(l){b = {}; i=0; Object.defineProperty(b, "length", {get : function(){ i++; if(i==3){return 0}else{return l;} },enumerable : true,configurable : true}); return b;});