123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
#include <iostream> #include <random> #include <string> using std::cout; using std::cin; using std::endl; using std::string; using std::to_string; std::default_random_engine generator; std::uniform_int_distribution<int> distribution(0, 9); string attempt(string ans, string prevGuess) { string a, b, c, d; if(prevGuess[0] != ans[0]) string a = to_string(distribution(generator)); else string a = to_string(prevGuess[0]); if(prevGuess[1] != ans[1]) string b = to_string(distribution(generator)); else string b = to_string(prevGuess[1]); if(prevGuess[2] != ans[2]) string c = to_string(distribution(generator)); else string c = to_string(prevGuess[2]); if(prevGuess[3] != ans[3]) string d = to_string(distribution(generator)); else string d = to_string(prevGuess[3]); string atmp = a + b + c + d; return atmp; } int main() { cout << "Please enter a 4 digit number: "; int number; cin >> number; if(to_string(number).length() != 4) { cout << "Invalid Number!"; return -1; } cout << "\n"; string guess = attempt(to_string(number), to_string(1111)); int counter = 1; while(guess != to_string(number)) { cout << "Guess " << to_string(counter) << ": " << guess; ++counter; guess = attempt(to_string(number), guess); } cout << "The computer guessed " << to_string(number) << "in " << to_string(counter) << " guesses!\n"; return 0; }
char
123456789101112
string attempt(string ans, string prevGuess) { if ( ans.size() == prevGuess.size() ) { for ( size_t pos = 0; pos < prevGuess.size(); ++pos ) { if ( prevGuess[pos] != ans[pos] ) { string guess { to_string(distribution(generator)) }; if ( 1 == guess.size() ) prevGuess[pos] = guess[0]; // update mismatching position else cout << "size error (" << guess << ")\n"; } } } return prevGuess; }