LOKI + IDUN + ODIN = THOR 1543 + 3082 + 5032 = 9657 1583 + 3042 + 5032 = 9657 2174 + 4693 + 1643 = 8510 2194 + 4673 + 1643 = 8510 3104 + 4567 + 1547 = 9218 3164 + 4507 + 1547 = 9218
(Terrible) source code
const start = Date.now(); const solutions = []; // no leading 0's, start at 1 for (let L = 1; L < 10; L++) { // no leading 0's, start at 1 for (let O = 1; O < 10; O++) { for (let K = 0; K < 10; K++) { // no leading 0's, start at 1 for (let I = 1; I < 10; I++) { for (let D = 0; D < 10; D++) { for (let U = 0; U < 10; U++) { for (let N = 0; N < 10; N++) { // no leading 0's, start at 1 for (let T = 1; T < 10; T++) { for (let H = 0; H < 10; H++) { for (let R = 0; R < 10; R++) { const potentialSolution = { L, O, K, I, D, U, N, T, H, R }; const loki = Number(`${L}${O}${K}${I}`); const idun = Number(`${I}${D}${U}${N}`); const odin = Number(`${O}${D}${I}${N}`); const thor = Number(`${T}${H}${O}${R}`); const uniqueNumbersUsed = new Set( Object.values(potentialSolution) ); if ( Object.values(potentialSolution).length === uniqueNumbersUsed.size ) { if (loki + idun + odin === thor) { console.log( `Found solution after ${Date.now() - start}ms`, potentialSolution ); solutions.push(potentialSolution); } } } } } } } } } } } } console.log({ solutions }); console.log(`Duration: ${Date.now() - start}ms`);