如何编写程序来解决多个问题?

toy*_*toy 1 java math

1到7之间的数字是否相等?A =,B =,C =,D =,E =,F =,G =

鉴于:

  1. A!=ㅤ2
  2. A + B = F.
  3. C - D = G.
  4. D + E = 2F
  5. E + G = F.

规则是:

  • 所有变量(A,B,C,D,E,F,G)等于1到7之间的整数值
  • 没有变量(A,B,C,D,E,F,G)彼此相等,即将使用所有七个值,不重复使用整数

Dr.*_*ius 5

Mathematica中:

 Reduce[ a != 2 && f == a + b && g == c - d && f == (d + e)/2 && f == e + g && 
        First[And @@@ {0 < # < 8 & /@ {a, b, c, d, e, f, g}}], 
        {a, b, c, d, e, f, g}, Integers]  
Run Code Online (Sandbox Code Playgroud)

解决方案:

(a == 1 && b == 1 && c == 4 && d == 3 && e == 1 && f == 2 && g == 1) || 
(a == 1 && b == 2 && c == 5 && d == 4 && e == 2 && f == 3 && g == 1) || 
(a == 1 && b == 2 && c == 7 && d == 5 && e == 1 && f == 3 && g == 2) || 
(a == 1 && b == 3 && c == 6 && d == 5 && e == 3 && f == 4 && g == 1) || 
(a == 1 && b == 4 && c == 7 && d == 6 && e == 4 && f == 5 && g == 1) || 
(a == 3 && b == 1 && c == 6 && d == 5 && e == 3 && f == 4 && g == 1) ||
(a == 3 && b == 2 && c == 7 && d == 6 && e == 4 && f == 5 && g == 1) || 
(a == 4 && b == 1 && c == 7 && d == 6 && e == 4 && f == 5 && g == 1) 
Run Code Online (Sandbox Code Playgroud)

因此,具有七种不同值的唯一解决方案是:

 (a == 3 && b == 2 && c == 7 && d == 6 && e == 4 && f == 5 && g == 1) 
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想直接从Mathematica得到答案,还需要做更多的工作,因为"所有价值观都不同"的条件通常很难写下来.这里是:

k = {a, b, c, d, e, f, g}; 
Reduce[
  a != 2 && f == a + b && g == c - d && f == (d + e)/2 && f == e + g && 
  First[And @@@ {0 < # < 8 & /@ k}] && 
  Times@(Sequence @@ (Subsets[k, {2}] /. {x_, y_} -> (x - y))) != 0, k, Integers]
Run Code Online (Sandbox Code Playgroud)

结果

 (a == 3 && b == 2 && c == 7 && d == 6 && e == 4 && f == 5 && g == 1) 
Run Code Online (Sandbox Code Playgroud)