Simple Fours Problem
My mom sent me this simple problem.Combine four fours arithmetically (i.e. 4 / 4 – 4 * 4) so the result is 20. The following solution is written in C++ and uses brute force to find all possible solutions:
/*
* combo.cxx - Four Fours Combination Problem Solver
* (using brute force)
*
* Solves the simple problem: How do you combine four fours
* using standard arithmetic operations to equal 20.
*
* This program solves this puzzle using brute force and
* shows the answer ignoring order of operations.
*
*
* Sumit Khanna / /tech/
* free to modify and redistribute
*/
#include <iostream>
using std::cout;
using std::endl;
int doOp(char op, int a,int b) {
if(op == '+') {
return a + b;
}
else if(op == '-') {
return a - b;
}
else if(op == '*') {
return a * b;
}
else if(op == '/') {
return a / b;
}
else {
cout << "Error. Invalid Operation " << op << endl;
exit(2);
return 0;
}
}
int main(int argc, char **argv) {
char *ops = new char[4];
ops[0] = '+';
ops[1] = '-';
ops[2] = '*';
ops[3] = '/';
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
for(int k=0; k<4; k++) {
int r = doOp(ops[i],4,4);
r = doOp(ops[j],r,4);
r = doOp(ops[k],r,4);
if(r == 20) {
cout << " 4 " << ops[i] << " 4 " << ops[j] << " 4 " << ops[k] << " 4 = 20 " << endl;
}
}
}
}
cout << "Note: Solutions ignores order of operations" << endl << endl;
delete[] ops;
exit(0);
}
Comments
The good resource should be brought in bookmarks