I'm trying to solve a cryptarithmetic puzzle TOO + TOO + TOO + TOO = GOOD using a program.

My solution to this, is to use a nested loop for each unique letter (in this case T, O, G, D). The loops would systematically assign the digits from 0-9 to each letter. For example, it might first try T = 0, O = 0, G = 0, D = 0, then T = 0, O = 0, G =0, D = 1, then T = 0, O = 0, G = 0, D = 2, etc. up to T = 9, O = 9, G = 9, D = 9.

. #include<iostream>

using namespace std;

int main()
{
 int o=0;
 int d=0;
 int t=0;
 int g=0;
 {
  for(o=0;o<10;o++)
  {
   (4*o)%10 = d;
   carryFirstCol = (4*o)/10;

   if (d!=o)
   {
    if (((4*o)+carryFirstCol)==o)
    {
     carrySecondCol = ((4*o)+carryFirstCol)%10;

     for (t

   
 }
 return 0;
}

I have that much done.. Now i dont kno how to write the if statment to add up the ts to get the o and then finally the g

Recommended Answers

All 3 Replies

Naming the variables the letter names doesn't really help anything. I would create a vector of pairs: std::vector<std::pair<char, int> > or something like that to keep the letters attached to their current value. I don't know what you're doing with all of the multiplying by 4 and modding by 10 business? (Comment, comment, comment!) You also haven't showed how the input is provided? It it that string? (TOO + ... )? If so, you'll first have to parse and figure out where the + symbols are. Then you can convert the individual "words" to numbers by doing string "find and replace" (http://www.java2s.com/Code/Cpp/Data-Type/StringFindandreplace.htm) then you can convert to an int using a stringstream: http://programmingexamples.net/index.php?title=CPP/StringStream

Phew, looks like you've got a lot of work to do! Good luck!

David

I didnt even learn vectors yet

Assume each letter (ie, char) in TOO and GOOD is a digit. The value of the digit is stable for each occurrence of the letter in the equation. Since there are 4 TOOs on the right hand side of the = operator the original equation is the same as 4 * TOO = GOOD. This statement has only 4 unique char so you can use 4 loops, one to represent each unique char in the statement. Each loop will range from 0-9, so rather than using type char you can use the char representation as the variable name for an int. Once you have a digit value for a given char you can change TOO and GOOD into a numeric value and test out the equation. If the equation is true for other than the trivial value of zero for T, O, G, and D, then you have found something interesting. Who knows, there may be more than one non-trivial solution or there may not be any values of T, O, G and D that satisfy the equation as given.

//use A for O so you don't get confused between capital oh and zero 
int TAA = 0;
int GAAD = 0;
for int A = 0; A < 10; ++A
 for int T = 0; T < 10; ++T
   //do dah
     //do dah
       //calculate value of TAA
       TAA = (1 * A) + (10 * A) + (100 * T);
       //calculate value of GAAD

       //check if equation is correct
         //print something cute if it is
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.