Crypto-Number PuzzleDate: 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. Math^{TM}
© 1994- The Math Forum at NCTM. All rights reserved.
http://mathforum.org/dr.math/