Euler Problem 24
by Andrew Poes
HTML
<!-- A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:
012 021 102 120 201 210
What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9? -->
CSS
.print {
position: relative;
display: inline-block;
background-color: black;
color: white;
font-family: Helvetica, Helvetica-Neue, sans-serif;
font-weight: bold;
font-size: 24px;
letter-spacing: -1.5px;
padding: 4px 8px;
}
body {
background-color: #eeeeee;
}
}
input {
padding: 20px;
}
}
JavaScript
if (typeof Math.factorial === "undefined") {
Math.factorial = function factorial (n) {
if (n == 0 || n == 1)
return 1;
if (Math.factorial.f[n] > 0)
return Math.factorial.f[n];
else
return Math.factorial.f[n] = factorial(n-1) * n;
};
Math.factorial.f = [];
}
$(document).ready(function() {
var digits = "I'm awesome!".split('').reverse();
//var digits = "0123456789".split('');
var nDigits = digits.length-1;
var target = Math.factorial(digits.length) - 1;
var s = '';
while (nDigits >= 0) {
var f = Math.factorial(nDigits);
var index = (target / f)<<0;
index %= digits.length;
var digit = digits[index];
digits.splice(index, 1);
s += digit.toString();
nDigits = nDigits - 1;
}
print(s);
})
function print() {
var args = Array.prototype.slice.apply(arguments)
var str = ""
for (arg of args) {
str += arg + ", "
}
str = str.substring(0, str.length - 2)
var el = newel(str)
$("body").append(el)
$("body").append("</br>")
}
function newel(str) {
var el = document.createElement("div")
$(el).html(str)
$(el).addClass("print")
return el
}