Well, unless I missed something, this is nothing all that challenging, really:
Code:
<!DOCTYPE html>
<html>
<head>
<title>Beustiality</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
table {
border: 2px solid #ccc;
}
td {
border: 1px solid #555;
}
#good, #bad {
vertical-align: top;
}
</style>
<script type="text/javascript">
// Cedric Beust's Challenge Script (c)2012 John Davenport Scheuer
// as first seen in http://www.dynamicdrive.com/forums/
// username: jscheuer1 - This Notice Must Remain for Legal Use
function beust(){
var count = 0, max = 10000, good = [], r = [], bad = {}, str, t, ok, gap = [0, 0];;
while(count < max){
ok = true;
str = (++count).toString(10);
t = str.split('');
for(var i = 0; i < t.length; ++i){
for (var j = t.length - 1; j > -1; --j){
if(j !== i && t[j] === t[i]){
bad[str] = count - good[good.length -1];
ok = false;
break;
}
if(!ok){break;}
}
}
if(ok){good.push(str);}
}
for(var p in bad){
if(gap[1] < bad[p]){
gap = [p, bad[p]];
}
r.push(p);
}
return {max: max, gnum: good.length, good: good.join(', '), bnum: r.length, bad: r.join(', '), biggest: gap[1] + ', from: ' + (gap[0] - gap[1] + 1) + ' to: ' + gap[0]};
}
</script>
</head>
<body>
<table>
<tr>
<th colspan=2 id="title"></th>
</tr>
<tr>
<th>Good</th><th>Bad</th>
</tr>
<tr>
<td id="totg"></td><td id="totb"></td>
</tr>
<tr>
<td id="good"></td><td id="bad"></td>
</tr>
</table>
<script type="text/javascript">
(function(){
var data = beust();
document.getElementById('title').innerHTML = 'Cedric\'s Challenge to: ' + data.max;
document.getElementById('totg').innerHTML = 'Total Good: ' + data.gnum;
document.getElementById('totb').innerHTML = 'Total Bad: ' + data.bnum + '<br>Largest gap was: ' + data.biggest + ', inclusive';
document.getElementById('good').innerHTML = data.good;
document.getElementById('bad').innerHTML = data.bad;
})();
</script>
</body>
</html>
Demo:
http://home.comcast.net/~jscheuer1/side/beust.htm
But other languages are apparently much more efficient at math, see:
http://beust.com/weblog/2008/08/28/c...lenge-wrap-up/
Bookmarks