火柴棍等式
2019-08-22 本文已影响0人
RQrry
数字 0-9 可以以下数组对应的个数拼成
arr = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
现有 m 根(m<=24)火柴棍,将所有火柴棍用于拼成例如 A+B=C 的等式,
如果 A!=B,则 A+B=C 与 B+A=C 视为不同的等式(A、B、C 都大于 0)
const number = function (n) {
let num = 0;
const arr = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6];
while ((n/10 | 0) !== 0) {
num += arr[n%10];
n = n/10 | 0;
}
num += arr[n];
return num;
}
const main = function(m) {
let sum = 0;
for (let a=0; a<=1111; a++) {
for (let b=0; b<=1111; b++) {
let c = a + b;
if (number(a) + number(b) + number(c) === m-4) {
sum++;
console.log(a + ' + ' + b + ' = ' + c);
}
}
}
console.log('一共有 ' + sum + ' 个等式');
}
main(18);
结果为:
0 + 4 = 4
0 + 11 = 11
1 + 10 = 11
2 + 2 = 4
2 + 7 = 9
4 + 0 = 4
7 + 2 = 9
10 + 1 = 11
11 + 0 = 11
一共有 9 个等式