#include #include #include #include #include using namespace std; class Game { public: Game(string const & name, int min_players, int max_players, int time) : name{name}, min_players{min_players}, max_players{max_players}, time{time} {} bool filter_players(int N) const { return N >= min_players && N <= max_players; } bool filter_time(int N) const { return N >= time*0.8 && N <= time*1.2; } string get_name() const { return name; } private: string name; int min_players; int max_players; int time; }; int main() { // arguments are name, players (min,max) and time vector games { Game{"Pandemic", 2,4,45}, Game{"Tsuro", 2,8,30}, Game{"Twilight Imperium", 4,8,300}, Game{"Carcasonne", 2,5,45} }; cout << "Hur många spelare: "; int players, time; cin >> players; cout << "Hur lång tid har ni (minuter): "; cin >> time; games.erase(remove_if(begin(games), end(games), [players,time](Game const & g){ return !(g.filter_players(players) && g.filter_time(time)); }), end(games)); if ( games.empty() ) { cout << "Inga spel matchade :(" << endl; } else { random_device rnd; uniform_int_distribution dist{0,games.size()-1}; Game & game = games.at( dist(rnd) ); cout << "Slumpat spel: " << game.get_name() << endl; } }