PPP
by Daniel Cheung
HTML
<pre> AB
-CD
---
EF
+GH
---
PPP
</pre>
<p>Enter P:</p>
<input id="p" type="number" max="9" min="0">
<button id="go">Run test</button>
<pre id="output"></pre>
JavaScript
$(function(){
$("#go").click(function(){
var isfound = false;
var a,b,c,d,e,f,g,h;
var o = $("#output");
var digits = [0,1,2,3,4,5,6,7,8,9];
var p = $("#p").val();
var ppp = parseInt(p+p+p);
o.text("");
if (parseInt(p) > 9 || parseInt(p) == 0 || p.trim() == "") {
o.text("invalid p");
return false;
} else {
digits = take(digits, parseInt(p));
}
for (var nd = 10; nd <= 99; nd++) {
//console.log("test P: " + p + ", GH: " + nd);
var D = String(nd);
if (D[0] !== D[1] && D[0] !== p && D[1] !== p) {
//console.log("test P: " + p + ", GH: " + nd);
var d1 = digits.slice(0);
g = parseInt(D[0]);
h = parseInt(D[1]);
//console.log(d1);
if (!(istaken(d1, g) || istaken(d1, h))) {
take(d1, g);
take(d1, h);
//console.log(d1);
var nc = ppp - nd;
var C = String(nc);
e = parseInt(C[0]);
f = parseInt(C[1]);
if (nc < 100 && C[0] !== C[1] && !(istaken(d1, e) || istaken(d1, f))) {
take(d1, e);
take(d1, f);
//console.log(d1);
for (var nb = 10; nb < 99; nb++) {
var d2 = d1.slice(0);
var B = String(nb);
c = parseInt(B[0]);
d = parseInt(B[1]);
if (B[0] !== B[1] && !(istaken(d2, c) || istaken(d2, d))) {
take(d2, c);
take(d2, d);
var na = nc + nb;
var A = String(na);
a = parseInt(A[0]);
b = parseInt(A[1]);
if (A[0] !== A[1] && na > nb && !(istaken(d2, a) || istaken(d2, b))) {
take(d2, a);
take(d2, b);
//console.log("A: " + d2);
isfound = true;
o.text(o.text() + "\nA:"+a+" B:"+b+" C:"+c+" D:"+d+" E:"+e+" F:"+f+" G:"+g+" H:"+h+" P:"+p);
}
}
}
}
...