#include <iostream>
#include <string>
#include <cctype>
#include <numeric> // Untuk std::accumulate
int main() {
std::string kataSandi;
std::cout << "Masukkan kata sandi: ";
std::getline(std::cin, kataSandi);
// Hitung setiap jenis karakter dengan std::accumulate dan lambda
int jumlahAngka = std::accumulate(kataSandi.begin(), kataSandi.end(), 0, [](int total, char c){
return total + std::isdigit(c);
});
int jumlahHurufKapital = std::accumulate(kataSandi.begin(), kataSandi.end(), 0, [](int total, char c){
return total + std::isupper(c);
});
int jumlahHurufNonKapital = std::accumulate(kataSandi.begin(), kataSandi.end(), 0, [](int total, char c){
return total + std::islower(c);
});
// Simbol dihitung dengan mengurangi total karakter dengan karakter lainnya
int jumlahSimbol = kataSandi.length() - jumlahAngka - jumlahHurufKapital - jumlahHurufNonKapital;
// Tampilkan hasil
std::cout << "\n--- Hasil Analisis Kata Sandi ---\n";
std::cout << "Jumlah angka: " << jumlahAngka << "\n";
std::cout << "Jumlah huruf kapital: " << jumlahHurufKapital << "\n";
std::cout << "Jumlah huruf non-kapital: " << jumlahHurufNonKapital << "\n";
std::cout << "Jumlah simbol: " << jumlahSimbol << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y2N0eXBlPgojaW5jbHVkZSA8bnVtZXJpYz4gLy8gVW50dWsgc3RkOjphY2N1bXVsYXRlCgppbnQgbWFpbigpIHsKICAgIHN0ZDo6c3RyaW5nIGthdGFTYW5kaTsKICAgIHN0ZDo6Y291dCA8PCAiTWFzdWtrYW4ga2F0YSBzYW5kaTogIjsKICAgIHN0ZDo6Z2V0bGluZShzdGQ6OmNpbiwga2F0YVNhbmRpKTsKCiAgICAvLyBIaXR1bmcgc2V0aWFwIGplbmlzIGthcmFrdGVyIGRlbmdhbiBzdGQ6OmFjY3VtdWxhdGUgZGFuIGxhbWJkYQogICAgaW50IGp1bWxhaEFuZ2thID0gc3RkOjphY2N1bXVsYXRlKGthdGFTYW5kaS5iZWdpbigpLCBrYXRhU2FuZGkuZW5kKCksIDAsIFtdKGludCB0b3RhbCwgY2hhciBjKXsKICAgICAgICByZXR1cm4gdG90YWwgKyBzdGQ6OmlzZGlnaXQoYyk7CiAgICB9KTsKCiAgICBpbnQganVtbGFoSHVydWZLYXBpdGFsID0gc3RkOjphY2N1bXVsYXRlKGthdGFTYW5kaS5iZWdpbigpLCBrYXRhU2FuZGkuZW5kKCksIDAsIFtdKGludCB0b3RhbCwgY2hhciBjKXsKICAgICAgICByZXR1cm4gdG90YWwgKyBzdGQ6OmlzdXBwZXIoYyk7CiAgICB9KTsKCiAgICBpbnQganVtbGFoSHVydWZOb25LYXBpdGFsID0gc3RkOjphY2N1bXVsYXRlKGthdGFTYW5kaS5iZWdpbigpLCBrYXRhU2FuZGkuZW5kKCksIDAsIFtdKGludCB0b3RhbCwgY2hhciBjKXsKICAgICAgICByZXR1cm4gdG90YWwgKyBzdGQ6OmlzbG93ZXIoYyk7CiAgICB9KTsKICAgIAogICAgLy8gU2ltYm9sIGRpaGl0dW5nIGRlbmdhbiBtZW5ndXJhbmdpIHRvdGFsIGthcmFrdGVyIGRlbmdhbiBrYXJha3RlciBsYWlubnlhCiAgICBpbnQganVtbGFoU2ltYm9sID0ga2F0YVNhbmRpLmxlbmd0aCgpIC0ganVtbGFoQW5na2EgLSBqdW1sYWhIdXJ1ZkthcGl0YWwgLSBqdW1sYWhIdXJ1Zk5vbkthcGl0YWw7CgogICAgLy8gVGFtcGlsa2FuIGhhc2lsCiAgICBzdGQ6OmNvdXQgPDwgIlxuLS0tIEhhc2lsIEFuYWxpc2lzIEthdGEgU2FuZGkgLS0tXG4iOwogICAgc3RkOjpjb3V0IDw8ICJKdW1sYWggYW5na2E6ICIgPDwganVtbGFoQW5na2EgPDwgIlxuIjsKICAgIHN0ZDo6Y291dCA8PCAiSnVtbGFoIGh1cnVmIGthcGl0YWw6ICIgPDwganVtbGFoSHVydWZLYXBpdGFsIDw8ICJcbiI7CiAgICBzdGQ6OmNvdXQgPDwgIkp1bWxhaCBodXJ1ZiBub24ta2FwaXRhbDogIiA8PCBqdW1sYWhIdXJ1Zk5vbkthcGl0YWwgPDwgIlxuIjsKICAgIHN0ZDo6Y291dCA8PCAiSnVtbGFoIHNpbWJvbDogIiA8PCBqdW1sYWhTaW1ib2wgPDwgIlxuIjsKCiAgICByZXR1cm4gMDsKfQ==