fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. #include <algorithm>
  5.  
  6. std::vector<int> split( int v )
  7. {
  8. std::vector<int> r;
  9. while( v ) {
  10. r.push_back( v % 10 );
  11. v /= 10;
  12. }
  13. return r;
  14. }
  15.  
  16. int main()
  17. {
  18. int target = 1234;
  19. int guess = 1783;
  20.  
  21. auto targetv = split( target );
  22. auto guessv = split( guess );
  23.  
  24. auto bulls = std::count_if( guessv.begin(), guessv.end(),
  25. [it = targetv.begin()]( int i ) mutable
  26. { return i == *it++; } );
  27.  
  28. auto cows = std::count_if( guessv.begin(), guessv.end(),
  29. [s = std::set<int>{ targetv.begin(), targetv.end() }]( int i )
  30. { return s.count( i ); } );
  31.  
  32. cows -= bulls;
  33.  
  34. std::cout << "bulls:" << bulls << " cows:" << cows << std::endl;
  35. return 0;
  36. }
Success #stdin #stdout 0s 4188KB
stdin
Standard input is empty
stdout
bulls:1 cows:1