Experimental testing
HTML
<script src="https://fonts.googleapis.com/css?family=Open+Sans|Roboto+Mono"></script>
<button id="button">Stop</button>
<h1>Stats</h1>
<pre id="res">Raw: <span id="success">0</span> out of <span id="trials">0</span>
Rate: <span id="pct">0</span>%</pre>
<h1>Successes</h1>
<pre id="valid"></pre>
CSS
body {
padding-left: 1em;
}
h1 {
margin: 0;
font-family: 'Open Sans';
}
pre {
margin: 0;
font-family: 'Roboto Mono', monospace;
}
#res {
font-size: 3em;
}
button {
font-size: 2em;
}
JavaScript
alert = x => {
try {
new Function(x); // Throws `SyntaxError` if invalid syntax
success++; // If no error is thrown, increment
spans.success.textContent = success;
spans.valid.textContent = x + '\n' + spans.valid.textContent;
} catch (e) { }
spans.trials.textContent = i;
spans.pct.textContent = (success / i * 100).toFixed(2);
};
var success, i, spans = {
success: document.getElementById('success'),
trials: document.getElementById('trials'),
pct: document.getElementById('pct'),
valid: document.getElementById('valid')
}, intervalId = null, button = document.getElementById('button');
success = i = 0;
function start() {
if (intervalId === null) {
intervalId = setInterval(_ => {
i++;
a="a=q;a=a.replace('q',uneval(a));for(b=c='a';d=a.split(c),c=d[Math.random()*~-d.length+1|0][0];b+=c);alert(b)";a=a.replace('q',uneval(a));for(b=c='a';d=a.split(c),c=d[Math.random()*~-d.length+1|0][0];b+=c);alert(b)
// Above from http://codegolf.stackexchange.com/a/98146/48878
}, 1);
}
button.onclick = stop;
button.textContent = 'Stop';
}
function stop() {
if (intervalId !== null) {
clearInterval(intervalId);
intervalId = null;
}
button.onclick = start;
button.textContent = 'Start';
}
start();