#include <iostream>
#include <array>
#include <string>
#include <locale>
template<typename T, size_t N, size_t M>
std::string find(T ch, const std::array<std::array<T, N>, M> &arr)
{
for (size_t i = 1; i < N; ++i)
{
for (size_t j = 1; j < M; ++j)
{
if (ch == arr[i][j])
{
return std::string{ arr[i][0], arr[0][j] };
}
}
}
return std::string(" ");
}
int main()
{
constexpr std::array<std::array<char, 6>, 6> arr = { ' ', 'A', 'B', 'C', 'D', 'E' ,
'A', 'A', 'B', 'C', 'D', 'E' ,
'B', 'F', 'G', 'H', 'I', 'K' ,
'C', 'L', 'M', 'N', 'O', 'P' ,
'D', 'Q', 'R', 'S', 'T', 'U' ,
'E', 'V', 'W', 'X', 'Y', 'Z'
};
std::string text = "HELLO";
std::locale loc;
for (auto i = text.begin(); i != text.end(); ++i)
{
*i = std::toupper(*i, loc);
if (*i == 'J')
*i = 'I';
}
std::string result;
result.reserve(text.size() * 3);
for (auto i : text)
{
result.append(find(i, arr)).append(" ");
}
std::cout << result.c_str() << std::endl;
getchar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxsb2NhbGU+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTiwgc2l6ZV90IE0+CnN0ZDo6c3RyaW5nIGZpbmQoVCBjaCwgY29uc3Qgc3RkOjphcnJheTxzdGQ6OmFycmF5PFQsIE4+LCBNPiAmYXJyKQp7Cglmb3IgKHNpemVfdCBpID0gMTsgaSA8IE47ICsraSkKCXsKCQlmb3IgKHNpemVfdCBqID0gMTsgaiA8IE07ICsraikKCQl7CgkJCWlmIChjaCA9PSBhcnJbaV1bal0pCgkJCXsKCQkJCXJldHVybiBzdGQ6OnN0cmluZ3sgYXJyW2ldWzBdLCBhcnJbMF1bal0gfTsKCQkJfQoJCX0KCX0KCXJldHVybiBzdGQ6OnN0cmluZygiICIpOwp9CgppbnQgbWFpbigpCnsKCWNvbnN0ZXhwciBzdGQ6OmFycmF5PHN0ZDo6YXJyYXk8Y2hhciwgNj4sIDY+IGFyciA9ICAgeyAgJyAnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJyAsCgkJCQkJCQkJCQkJCQkJCSdBJywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScgLCAKCQkJCQkJCQkJCQkJCQkJJ0InLCAnRicsICdHJywgJ0gnLCAnSScsICdLJyAsIAoJCQkJCQkJCQkJCQkJCQknQycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnICwgCgkJCQkJCQkJCQkJCQkJCSdEJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScgLCAKCQkJCQkJCQkJCQkJCQkJJ0UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJyAKCQkJCQkJCQkJCQkJCSAgICAgfTsKCglzdGQ6OnN0cmluZyB0ZXh0ID0gIkhFTExPIjsKCXN0ZDo6bG9jYWxlIGxvYzsKCWZvciAoYXV0byBpID0gdGV4dC5iZWdpbigpOyBpICE9IHRleHQuZW5kKCk7ICsraSkKCXsKCQkqaSA9IHN0ZDo6dG91cHBlcigqaSwgbG9jKTsKCQlpZiAoKmkgPT0gJ0onKQoJCQkqaSA9ICdJJzsKCX0KCglzdGQ6OnN0cmluZyByZXN1bHQ7CglyZXN1bHQucmVzZXJ2ZSh0ZXh0LnNpemUoKSAqIDMpOwoKCWZvciAoYXV0byBpIDogdGV4dCkKCXsKCQlyZXN1bHQuYXBwZW5kKGZpbmQoaSwgYXJyKSkuYXBwZW5kKCIgIik7Cgl9CgoJc3RkOjpjb3V0IDw8IHJlc3VsdC5jX3N0cigpIDw8IHN0ZDo6ZW5kbDsKCWdldGNoYXIoKTsKCglyZXR1cm4gMDsKfQ==