What is your hint or solution suggestion?
Summary
Challenge: 24 game
function solve24 (numStr) {
let arr = Array.from(numStr, Number);
let tmp;
let validExp = false;
// Function to swap variables' content.
function swap(index1, index2) {
tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
}
// Generate arrays of permutations using the algorithm.
const validateMathExpression = (arr) => {
const [a,b,c,d] = arr
if( (a*b*c*d) === 24 ) return `${a}*${b}*${c}*${d}`;
else if( a+b+c+d === 24 ) return `${a}+${b}+${c}+${d}`;
else if( a-b+c+d === 24 ) return `${a}-${b}+${c}+${d}`;
else if( a+b-c+d === 24 ) return `${a}+${b}-${c}+${d}`;
else if( a+b+c-d === 24 ) return `${a}+${b}+${c}-${d}`;
else if( (a*b)/(c-d) === 24 ) return `(${a}*${b})/(${c}-${d})`;
else if( (a-b/c)*d === 24 ) return `(${a}-${b}/${c})*${d}`;
else if( (a+b)*(c+d) === 24 ) return `(${a}+${b})*(${c}+${d})`;
}
function generate(int) {
if (int === 1 && !validExp) {
validExp = validateMathExpression(arr)
} else {
for (let i = 0; i != int; ++i) {
generate(int - 1);
swap(int % 2 ? 0 : i, int - 1);
}
}
}
generate(arr.length)
return validExp? validExp : "no solution exists"
}
Link to the challenge: