Вы можете отсортировать представление каждого из значений и использовать его для выбора задания.
enum Stat {
Health;
Sport;
Relatioship;
Happiness;
Intelligence;
};
using Stats = std::array<Stat, 5>;
using Job = std::string;
int getStat(Person p, Stat s) {
switch (s) {
case Health: return p.health;
case Sport: return p.sport;
case Relatioship: return p.relatioship;
case Happiness: return p.happiness;
case Intelligence: return p.intelligence;
}
}
Stats getStats(Person p) {
Stats result = { Health, Sport, Relatioship, Happiness, Intelligence };
std::sort(result.begin(), result.end(), [](Stat left, Stat right) { return getStat(p, left) < getStat(p, right); });
return result;
}
Job getJob(Person p) {
Stats stats = getStats(p);
if (stats == { Sport, Health, Relatioship, Happiness, Intelligence })
return "Footballer";
else if (stats == { Intelligence, Health, Sport, Relatioship, Happiness })
return "Banker";
/* 118 more entries like that */
}