如何蛮力算术拼图?

Col*_*nic 8 algorithm math

一位朋友分享了这个难题:

如何从数字1,5,6,7中制作21?

您可以使用加法,减法,乘法和除法以及括号的操作.您必须使用每个号码一次.

两天后我终于在纸上解决了这个问题.毫无疑问,计算机可以在一秒钟内强制执行所有解决方案.

怎么样?我尝试生成所有字符串,a.b.c.d插入字母的数字和点的操作,但它错过了我的解决方案.


奖金谜题:

  • 如何从1,5,6,7做出11?
  • 如何从1,5,6,7做出16?

AnT*_*AnT 9

一个明显的方法是:

  1. 你从一个S四个数字的向量开始:S = ( 1, 5, 6, 7 )
  2. 选择任意两个数字ab从中S删除S
  3. 应用任意算术运算ab,从而获得新的号码c(照顾零,以避免分裂和验证的严格划分,如果这个问题需要它)
  4. 包括c进入S,从而获得S'
  5. 从第1步继续,现在用来S'代替S

在步骤2(选择两个数字)和步骤3(选择操作)执行强力分支.应该重复该循环,直到S减少到仅1个元素,这是该特定强力分支的结果.

括号未明确使用,但隐含存在.

如果一个分支以21in 结尾S,则您有一个解决方案,此时您可以终止或继续分支以搜索其他解决方案.