|


Crypto-Number Puzzle
Date: 01/21/97 at 08:56:18
From: Ivan
Subject: Good luck with this one!
I received this problem when I was still attending secondary school.
I still haven't figured it out.
A simple adding sum like one gets to do in one's third or is it
second school year? But... the digits are hidden by alphanumeric
symbols. Each symbol represents a digit. When all the symbols have
been exchanged for digits, the sum should work:
O N E
T W O
T W O
T H R E E
+ T H R E E
-------------------
E L E V E N
The answer should look something like:
0 3 1
4 8 0
4 8 0
4 5 6 1 1
+ 4 5 6 1 1
-----------------
1 9 1 2 1 3
The values of each letter are: 0 = O, 1 = E, 2 = V, 3 = N, 4 = T,
5 = H, 6 = R, 7 not used, 8 = W, 9 = L. It is incorrect unfortunately
because 031 + 480 + 480 + 45611 + 45611 does not equal 191213.
According to the teacher who gave us the problem, it does have a
solution. I never got around to asking him what it was.
Ivan Smit
Date: 01/21/97 at 23:00:16
From: Doctor Mitteldorf
Subject: Re: Good luck with this one!
Dear Ivan,
Thanks for the puzzle. I haven't solved one of these crypto-number
puzzles since I was eleven years old and my dad gave me:
SEND + MORE = MONEY
It's not hard to write a program that finds solutions the dumb way,
by checking every possible permutation of the digits. In fact, on my
Pentium 133, the attached program only takes 2 minutes to run.
You might like to try it, or better still, try making it more
efficient by eliminating some of the searches that you can tell in
advance are unproductive.
I got three independent solutions, but two of them have E = 0, which
is not so elegant, since we don't usually write numbers with leading
zeros. The unique "elegant" solution is:
391
803
803
84611
84611
------
171219
Here's a program listing in Turbo Pascal:
program Eleven;
{Solve the cryptogram ONE
TWO
TWO
THREE
THREE
-----
ELEVEN}
var o,n,e,t,w,h,r,l,v :longint;
s,outstr :string;
fout :text;
procedure TryOne;
var x,y :longint;
begin
o:=ord(outstr[1])-48;
n:=ord(outstr[2])-48;
e:=ord(outstr[3])-48;
t:=ord(outstr[4])-48;
w:=ord(outstr[5])-48;
h:=ord(outstr[6])-48;
r:=ord(outstr[7])-48;
l:=ord(outstr[8])-48;
v:=ord(outstr[9])-48;
if 102*o + 10*n + 23*e + 20200*t + 20*w + 2000*h + 200*r
= 101010*e + 10000*l + 100*v + n
then begin
assign(fout,'ELEVEN.TXT'); append(fout);
writeln(fout,'o=',o);
writeln(fout,'n=',n);
writeln(fout,'e=',e);
writeln(fout,'t=',t);
writeln(fout,'w=',w);
writeln(fout,'h=',h);
writeln(fout,'r=',r);
writeln(fout,'l=',l);
writeln(fout,'v=',v);
writeln(fout,'n=',n);
writeln(fout);
writeln(fout,' ',o,n,e);
writeln(fout,' ',t,w,o);
writeln(fout,' ',t,w,o);
writeln(fout,' ',t,h,r,e,e);
writeln(fout,' ',t,h,r,e,e);
writeln(fout,'--------');
writeln(fout,e,l,e,v,e,n);
writeln(fout);
writeln(' ', o,n,e);
writeln(' ', t,w,o);
writeln(' ', t,w,o);
writeln(' ',t,h,r,e,e);
writeln(' ',t,h,r,e,e);
writeln('--------');
writeln(e,l,e,v,e,n);
close(fout);
end;
end;
procedure Permute_it(s :string);
var ss :string;
i,len :integer;
begin
len:=length(s);
if (len=0) then
TryOne
else for i:=1 to len do
begin
outstr:=outstr+s[i];
ss:=s;
delete(ss,i,1);
Permute_it(ss);
Delete(outstr,length(outstr),1);
end;
end;
begin
outstr:='';
s:='0123456789';
Permute_it(s);
end.
-Doctor Mitteldorf, The Math Forum
Check out our web site!
|
Search the Dr. Math Library: |
[Privacy Policy] [Terms of Use]


Ask Dr. MathTM
© 1994-2010 The Math Forum
http://mathforum.org/dr.math/