任给一个可解的组合, 我们总是想得到 全部 的解法. 有些解法是不同的, 有些则明显 等价, 有些则没有那么明显.
我们在这里讨论简化冗余的解法的“理论”,也就是, 我们在所有的等价解法中, 只给出一个代表. 最后, 在所有的等价的解法中,我们给出最 简约的那个解法.

记号:

a, b, c, d 是数字 (1,2,3 等), x, y, z, w 是表达式 如: 1, 1 + 2, (1 + 2 × 6) /5, 等.
如果两个表达式 x 和 y 等价, 则写做 x ↔ y, 比如: a + b ↔ b + a, a - (b - c) ↔ a + c - b 等.
如果两个表达式 x 和 y 等价,并且我们给予 y 优先权, 因为y更简约或者更易于人机交互, 则写做 x → y . 比如: a - (b - c) ↔ a + c - b , 不过我们给予后者优先权, 所以我们有 a - (b - c) → a + c - b
± 是 + 或者 -, 同时 ×/ 是 × 或 /.

第一部分: 算数运算的等价关系

这部分都是很基本的等价关系. 1 × 2 × 3 × 4 和 (4 × 3 × ( 2 × 1)) 明显完全一样,不过多数人会喜欢第一种解法,因为解法一比较简洁.
第一部分的规则可以用一句话概括:把数字换成变量, 如果两个表达式对于任意 整数变量都有一样的值, 那么这两个表达式等价. 例如: 对于组合 {1,2,3,4} 和以下两个表达式: (3 + 2 + 1) × 4 和 4 × (1 + 2 + 3) : , 我们先把 1 换作 a, 2 换作 b, 3 换作 c 同时 4 换作 d, 现在这两个表达式变为 (c + b + a) × d 和 d × ( a + b + c). 对任何的整数组合 {a,b,c,d}, 这两个表达式都有一样的值. 所以我们知道这两个表达式等价. 在 (3 + 2 + 1) × 4 和 4 × (1 + 2 + 3) 中, 我们更喜欢前者因为对某些人机交互系统它更简洁(还记得计算器吗?), 因为输入(3 + 2 + 1) × 4 无需输入括号. 也就是 4 × (1 + 2 + 3) → (3 + 2 + 1) × 4. 一个判断两个等价表达式优先权的通用规则是: 我们把比较复杂的部分放到左边.
在给出第一部分的具体规则之前, 我们需要最后一个注脚: 对表达式 x 和 y (别忘了 x 可以是 a + b), 当我们写出 x ×/ y, 如果需要的话,我们在 x 或 y 外面加上括号.

(1) 交换律:    x ± y ↔ ± y + x         x × y ↔ y × x         x ×/ y ×/ z ↔ x ×/ z ×/ y
优先权 1: - 和 / 在最右边, 例如. - a + b → b - a, a / b × c → a × c / b
优先权 2: 复杂的表达式放在最左边, 例如. c + a × b → a × b + c, a × (b + c) → (b + c) × a ...

(2) 结合律:     x + y ± z ↔ ( x + y ) ± z ↔ x + (y ± z )         x × y ×/ z ↔ ( x × y ) ×/ z ↔ x × (y ×/ z )         ( x / y ) / z ↔ x / y / z
优先权: 括号比较少的, 比如: (a + b) + c → a + b + c, (a / b) / c → a / b / c .

(3) + 和 - 的交换性, 以及 × 和 / 的交换性:     x - (y - z) ↔ x + z - y         x × z / y ↔ x/(y/z)         x /(y × z) ↔ x/y/z
优先权: 括号比较少的, 例如. a - (b - c) → a + c - b, a/(c/b) → a × b / c

(4) 减号越少越好:     a - (b - c) ×/ d ↔ a + (c - b) ×/ d, 注意: 这条规则不被规则(3) 包含.
优先权: 通过规则 (3) 的优先权我们有: a - (b - c) ×/ d → (c - b) ×/ d + a

(5)平局的情况: a × b × c × d 还是 d × c × b × a, (a + b) × (c + d) 还是 (d + c) × (a + b)?
优先权: 无所谓啦. 我喜欢大的数字在最左边, 也就是: 1 × 2 × 3 × 4 → 4 × 3 × 2 × 1, (1 + 2) × (5 + 3) → (5 + 3) × (2 + 1)

第二部分: 表达式的值是 0 或 1 的特殊情况

(6) 1 的 乘法/除法 :     x × y ↔ x / y, 如果表达式 y 的值是 1.
优先权: x × y, 例如: (13 + 11) / (5 - 4) → (13 + 11) × (5 - 4). 类似的: (12 + 6 × 2) / 1 → (12 + 6 × 2) × 1.

(7) 表达式 × z 的位置, 当 z 的值是 1 的时候: 如果 z = 1, 我们有: x + y × z ↔ x × z + y ↔ (x + y ) × z
优先权: (x + y ) × z 因为其对称性

(8) 特别的组合 {a, b, c, c} : a × b × c /c ↔ a × b + c - c, 以及 ( a + b ) × c /c ↔ a + b + c - c .
优先权: a × b + c - c 或者 a + b + c - c

(8.b) 最后的组合 {a, b, 1, 1} : a × b × 1 × 1 ↔ a × b + 1 - 1, 以及 ( a + b ) × 1 × 1 ↔ a + b + 1 - 1 .
优先权: a × b + 1 - 1 或者 a + b + 1 - 1

(8.c) 游戏中有 24的情况 : 这种情况只有当你玩大游戏时,有24这种大的数字存在才有意义.
24 × x / y → 24 + x - y, 这里 x 和 y 是两个有同样值的表达式
24 + a - b - c → 24 + b + c - a
24 + c - x 比 x + 24 - c 有优先级, 这里 x 是一个有两个数字的表达式, 当然 c 和 x 有同样的值.
这三条看起来很随意的规则减少了许多多余的解法当24在游戏之中。

(8.d) 游戏中有 23 或者 25的情况 : 这种情况只有当你玩大游戏时,有23,25这种大的数字存在才有意义.
如果这四个数是 23 a b c=a+b 那么我们有下面2个解法:
c/(a+b) + 23 ↔ (a+b)/c + 23
(a+b)/c + 23 比 c/(a+b) + 23 有优先级.
同理 25 - (a+b)/c 有优先级.

关于 & 站图