火柴棍等式

数字 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 个等式

你可能感兴趣的:(火柴棍等式)