[Date Index]
[Thread Index]
[Author Index]
Google's aptitude test equation
*To*: mathgroup at smc.vnet.net
*Subject*: [mg55004] Google's aptitude test equation
*From*: "Lorenzo Castelli" <gcastelli at NOSPAMracine.ra.it>
*Date*: Wed, 9 Mar 2005 06:34:29 -0500 (EST)
*Sender*: owner-wri-mathgroup at wolfram.com
Hi everybody, I have a little question about Mathematica (version 5.1).
Please note that I just began to use this program, so sorry if I'm missing
some trivial points.
As an exercise I've tried to resolve the Google's equation that appeared on
the web some time ago, using this page as a reference:
http://mathworld.wolfram.com/news/2004-10-13/google/
The text of the exercise is:
1. Solve this cryptic equation, realizing of course that values for M and E
could be interchanged. No leading zeros are allowed.
WWWDOT - GOOGLE = DOTCOM
I've implemented the solution in Mathematica in this way:
- Setup the problem:
prob = "wwwdot" - "google" == "dotcom"
- Setup the equation associated with the problem:
eqn = prob /. s_String :> FromDigits[ToExpression[Characters[s]], 10]
- Extract the variables of the equation:
vars = Union[Cases[eqn, _Symbol, Infinity]]
- Setup the constraints:
ineqs = And @@ (0 <= # <= 9 & /@ vars)
- Resolve the equation:
(sol = Reduce[eqn && ineqs, vars, Integers]) // Timing
This operation gives 449 solutions, calculated in roughly 13 seconds.
Only two of these solutions are correct, since I have to remove the
solutions which yield more than one variable to have the same value.
Obviously this task is pretty easy, so I should expect it to take just a
short time to compute.
And that is actually the case if use a code like this:
Select[sol, Unequal @@ (Part[#, 2] & /@ Cases[#, _Equal, 1]) &] // Timing
The two solutions are extracted in a fraction of a second.
On the contrary if I try to do that in the following way, Mathematica starts
a long session of evaluation and eventually crashes after some minutes:
Reduce[sol && Unequal @@ vars] // Timing
I understand that Reduce might be too general to perform this operation in
an efficient way, but I haven't been able to find a more suitable function.
Also I've noticed that if I change the constraints on the single variables
for the first Reduce in order to explicity consider that no leading zeros
are allowed (so just replacing the 0<=x<=9 with 0<x<=9 for the variables w,
g and d), the evaluation time jumps from 13 seconds to 40 seconds.
That's odd, as in this case the new solutions are obviously just an easily
computable subset of the previous ones.
So I don't really know if Reduce is actually the best function even in the
first usage.
Can you help me out?
Thanks,
Lorenzo Castelli
E-Mail: gcastelli at racine.ra.it
Prev by Date:
** Re: Mathematica can't calculate Fourier transform (Dirac mean position eigenfunction)**
Next by Date:
**Re: Setting the ResultFormat in a ASP.NET WebApplication.**
Previous by thread:
** Re: Canonical order...**
Next by thread:
**Re: Google's aptitude test equation**
| |