wayne 发表于 2013-3-3 10:45:33

10# chyanog
这个容易解释。
这个Mathematica应该是用通用算法解出来的,具体应该就是线性规划。
如果你还加了互不相等的条件的话,那么这个线性规划的约束条件 一下子就多了C(9,2) =36个不等式,加上原先的9个(或者10个), 就是46个。

一个是10个方程的线性规划,
一个是46个方程的线性规划,
应该高下立判了吧

wayne 发表于 2013-3-3 10:58:11

11# wayne
加了互不相等的条件,Mathematica的AAS(算法自动选择) 不一定仍然使用线性规划算法。
在找不到匹配算法的时候, Mathematica只能brute force了

wayne 发表于 2013-3-3 11:18:12

:lol
基于hujunhua的代码,
我稍稍做了改动,经过漫长的等待,Mathematica终于解出答案了,
发现Mathematica好容易被骗哦,:tip: 。
f = FromDigits;(*函数名缩写*)v = {c, d, e, g, l, m, o, t, w};
x = {w, w, w, d, o, t};
y = {g, o, o, g, l, e};
z = {d, o, t, c, o, m};
solv = Solve == f + f + Sin^2 && wayne == 0 && And @@ (0 <= # <= 9 & /@ v), Flatten[{v, wayne}], Integers];
sele = Select] == 9 &];
f /@ {x, y, z} /. sele

chyanog 发表于 2013-3-3 16:04:21

11# wayne
Oh,知道了

chyanog 发表于 2013-3-7 16:40:03

Solve有些时候很慢,记得仿真论坛有过一道题,用Solve似乎就不适合
用1到9这九个数不重不漏组成等式( )/( )( )+( )/( )( )+( )/( )( )=1Compile[{}, Module[{a, b, c, d, e, f, g, h, i},
    Do[{a, b, c, d, e, f, g, h, i} = x;
   If[a < d < g && a/(10 b + c) + d/(10 e + f) + g/(10 h + i) == 1,
      Print@x], {x, Permutations@Range@9}]]][] // Timing
页: 1 [2]
查看完整版本: WWWDOT - GOOGLE = DOTCOM