T.T.T.#2: Equal to 24
This commit is contained in:
55
t-dot-t-t-number-2-equal-to-24/prepare_data.js
Normal file
55
t-dot-t-t-number-2-equal-to-24/prepare_data.js
Normal file
@@ -0,0 +1,55 @@
|
||||
|
||||
function equalTo24(a,b,c,d) {
|
||||
// const ops = [
|
||||
// (a, b) => a + b,
|
||||
// (a, b) => a - b,
|
||||
// (a, b) => a * b,
|
||||
// (a, b) => a / b
|
||||
// ];
|
||||
const ops = [
|
||||
(a, b) => `(${a}+${b})`,
|
||||
(a, b) => `(${a}-${b})`,
|
||||
(a, b) => `(${a}*${b})`,
|
||||
(a, b) => `(${a}/${b})`,
|
||||
];
|
||||
const opsLen = ops.length;
|
||||
const arr = [a, b, c, d];
|
||||
let res = [];
|
||||
for (let i = 0; i < 3; ++i) {
|
||||
for (let iop = 0; iop < opsLen; ++iop) {
|
||||
for (let j = 0; j < 2; ++j) {
|
||||
for (let jop = 0; jop < opsLen; ++jop) {
|
||||
for (let kop = 0; kop < opsLen; ++kop) {
|
||||
let n = [...arr.slice(0, i), ops[iop](arr[i], arr[i+1]), ...arr.slice(i+2)];
|
||||
n = [...n.slice(0, j), ops[jop](n[j], n[j+1]), ...n.slice(j+2)];
|
||||
const resStr = ops[kop](n[0], n[1]);
|
||||
if (eval(resStr) === 24) {
|
||||
res.push(resStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
let res = [];
|
||||
|
||||
for (let i = 1; i <= 13; ++i) {
|
||||
for (let j = 1; j <= 13; ++j) {
|
||||
for (let k = 1; k <= 13; ++k) {
|
||||
for (let l = 1; l <= 13; ++l) {
|
||||
let arr = [i, j, k, l];
|
||||
arr.sort((a, b) => a - b);
|
||||
let codes = equalTo24(i, j, k, l);
|
||||
if (codes.length) {
|
||||
if (!res[arr[0]]) res[arr[0]] = [];
|
||||
if (!res[arr[0]][arr[1]]) res[arr[0]][arr[1]] = [];
|
||||
if (!res[arr[0]][arr[1]][arr[2]]) res[arr[0]][arr[1]][arr[2]] = [];
|
||||
if (!res[arr[0]][arr[1]][arr[2]][arr[3]]) res[arr[0]][arr[1]][arr[2]][arr[3]] = codes[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user