/* game of forfeits - JS worker */ var com = com||{}; com.unitedCoders = com.unitedCoders || {}; com.unitedCoders.forfeits = { testShort: function() { com.unitedCoders.forfeits.shortCodeSolution(100); }, shortCodeSolution : function(n){ var sum=0, res=[]; for (var i=0; i<=n; i++){ var sum = 0, x=i; while(x>0){ sum += x%10; x = Math.floor(x/10); } if (!(i%7===0||i.toString().indexOf("7")!==-1|| sum%7===0||sum.toString().indexOf("7")!==-1)) res.push(i); } return res; }, testClean: function() { com.unitedCoders.forfeits.cleanCodeSolution(100); }, cleanCodeSolution : function(n){ for (var i=0, res=[]; i <= n; i++) { if (!(containsSeven(i) || isMultipleOfSeven(i) || sumContainsSeven(i) || sumIsMultipleOfSeven(i))) { res.push(i); } } return res; function containsSeven (n) { return String(n).indexOf("7") !== -1; } function isMultipleOfSeven (n) { return n % 7 === 0; } function sumContainsSeven (n) { return containsSeven(sumOfDigits(n)); } function sumIsMultipleOfSeven (n) { return isMultipleOfSeven(sumOfDigits(n)); } function sumOfDigits (n) { var sum = 0; while (n > 0) { sum += n % 10; n = Math.floor(n / 10); } return sum; } }, evalFunction: function(text) { try { var fn = eval("com.unitedCoders.forfeits.yourSolution = function(n){"+text+"};"); return typeof(fn)==="function"; } catch (err) { return false; } }, testYour: function() { com.unitedCoders.forfeits.yourSolution(100); }, yourSolution : function(n) { return []; }, runTest: function(testFunction) { //console.info("testing...");//+ document.getElementById("fn_text").value); var resultNode = document.getElementById("fn_result"); var parsed = testFunction || this.evalFunction(document.getElementById("fn_text").value); if (!parsed) { if (resultNode) resultNode.innerHTML = "Function could not parsed!"; return false; } var max = 100 + Math.floor(Math.random()*100); var std = this.cleanCodeSolution(max); var your = this.yourSolution(max); if (!(your instanceof Array)) { if (resultNode) resultNode.innerHTML = "your result should be instanceof Array"; return false; } if (typeof(std)!==typeof(your)) { if (resultNode) resultNode.innerHTML = "typeof(std): "+(typeof(std))+", but typeof(your): "+(typeof(your)); return false; } if (std.length!==your.length) { if (resultNode) resultNode.innerHTML = "cleanCodeSolution.length: "+(std.length)+", but yourSolution.length: "+(your.length); if (resultNode) resultNode.innerHTML += "
 std: "+(std.join(","))+"\nyour: "+(your.join(",")+"
"); return false; } if (std.join(",") !== your.join(",")) { if (resultNode) resultNode.innerHTML = "std: "+(std)+" != "+(your); return false; } if (resultNode) resultNode.innerHTML = "Function is correct!"; document.getElementById("jslitmus_container").style.visibility = "visible"; return true; } };