#include <algorithm> // count_if
#include <string>
#include <vector>
#include <cctype> // islower
using namespace std;
/*
PREDIKÁTUM:
-----------
- Olyan hívható (funktor/lambda), amely LOGIKAI értéket ad vissza.
- Sok STL algoritmus ilyen függvényt kér (count_if, remove_if, find_if, stb.).
*/
// "HosszabbMint" — állapotos predikátum: eltároljuk a küszöböt, és az alapján döntünk.
struct HosszabbMint {
size_t n;
explicit HosszabbMint(size_t n_) : n(n_) {}
bool operator()(const string& s) const {
return s.size() > n;
}
};
// "Kisbetus" — egykarakteres predikátum; megmutatja a bool visszatérést.
struct Kisbetus {
bool operator()(char ch) const {
// (unsigned char)-ra castolás a definíció szerinti helyes működéshez
return islower((unsigned char)ch) != 0;
}
};
// --- A main által hívható tiszta függvények (nincs kiírás) ---
int db_hosszabb_mint(const vector<string>& v, size_t n) {
// count_if: megszámolja, hány elemre igaz a predikátum
return (int)count_if(v.begin(), v.end(), HosszabbMint(n));
}
int db_kisbetu(const string& s) {
return (int)count_if(s.begin(), s.end(), Kisbetus());
}