function result(a,b, op){
if(op == '+'){
return a + b;
}
if(op == '-'){
return a - b;
}
if(op == '*'){
return a * b;
}
if(op == '/'){
return a / b;
}
}
function check(a, b, op){
if(op == '/' && b == 0){
return false;
}
return true;
}
function arrayCopy(a)
{
var b = [];
for(var i = 0; i < a.length; i++){
b.push(a[i]);
}
return b;
}
function arrayRemove(a,n, r)
{
var b = [];
for(var i = 0; i < a.length; i++){
if(n == i){
b.push(r);
}else if((n+1) != i ){
b.push(a[i]);
}
}
return b;
}
function arrayDel(a, n)
{
var b = [];
for(var i = 0; i < a.length; i++){
if(n != i){
b.push(a[i]);
}
}
return b;
}
function cal(a, op, list, oplist, ord)
{
if(op.length < 1){
return ;
}
var op2 = arrayCopy(op);
for(var i = 0; i < op2.length; i++){
var a2 = arrayCopy(a);
if(check(a2[i], a[i+1], op2[i])){
var r = result(a2[i], a[i+1], op2[i]);
var ss = "("+a2[i] + op2[i] + a[i+1]+" = "+r+ ")"
ord.push(ss);
if(op.length == 1 && r == 24){
console.log(list, oplist, ord);
}else{
var a3 = arrayRemove(a2, i, r);
var op3 = arrayDel(op2, i);
cal(a3, op3, list, oplist, ord);
}
ord.pop();
}
}
}
function optest(a){
var op = ['+', '-','*','/'];
var b = [];
for(var i = 0; i < 4; i++){
b.push(op[i]);
for(var j = 0; j < 4; j++){
b.push(op[j]);
for(var k = 0; k < 4 ; k++){
b.push(op[k]);
var out = [];
cal(a, b, a, b, out);
b.pop();
}
b.pop();
}
b.pop();
}
}
function test(a,b){
if(b.length > 0){
for(var j = 0; j < b.length; j++){
a.push(b[j]);
var c = [];
for(var i = 0; i < b.length; i++){
if(i != j){
c.push(b[i]);
}
}
test(a, c);
a.pop();
}
}else{
optest(a);
}
}
function test24(list){
var a = [];
test(a, list);
}
test24([1, 2, 3, 4]);