javascript numeric palendrome generator
HTML
<p>A palindrome is a word, phrase, number, or other sequence of units that may be read the same way in either direction. Here, I add a number to the number in reverse ( IE: 56 + 65 ) until I get one.</p>
<table border="1">
<tr id="head">
<td></td>
</tr>
<tr id="normal">
<td></td>
</tr>
<tr id="reverse">
<td></td>
</tr>
<tr id="aggregate">
<td></td>
</tr>
<tr id="palendrome">
<td></td>
</tr>
</table>
JavaScript
var num = Math.ceil((Math.random() * 100) + 100).toString();
//num = "89"; // should be 24 tries
//num = "196"; // http://en.wikipedia.org/wiki/Lychrel_number, http://www.jasondoucette.com/196.html, around 33 the values start to differ from the url
var rev = reverse(num);
var agg = aggregate(num, rev);
var idx = 0;
var max = 50;
$('#head td').text(idx);
$('#normal td').text(num);
$('#reverse td').text(rev);
$('#aggregate td').text(agg);
isPalendrome(agg);
function isPalendrome(agg){
idx ++;
if(parseInt(agg) === parseInt(reverse(agg.toString()))){
$('#palendrome td').text("palendrome on " + idx).attr("colspan", idx);
} else {
// didn't match, so take aggregate and repeat
if(idx > max) {
$('#palendrome td').text("no palendrome in " + max + " attempts").attr("colspan", idx);
return;
}
num = agg;
rev = parseInt(reverse(num.toString()));
agg = aggregate(num, rev);
$('#head').append("<td>" + idx + "</td>");
$('#normal').append("<td>" + num + "</td>");
$('#reverse').append("<td>" + rev + "</td>");
$('#aggregate').append("<td>" + agg + "</td>");
isPalendrome(agg)
}
}
function reverse(s){
var tmp = s.split("").reverse().join("");
while(tmp.charAt(0) == '0') { tmp = tmp.substr(1,99999); }
return tmp;
}
function aggregate(a, b){
return parseInt(a) + parseInt(b);
}