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);
                }
              }
            }
          }
       ...