Информация об изменениях

Сообщение Re[3]: Магический возраст от 13.06.2018 12:43

Изменено 13.06.2018 12:45 AlexGin

Re[3]: Магический возраст
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, D.Lans, Вы писали:


AG>>>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


DL>>Python:

DL>>https://repl.it/@doctorlans/Determine-AlexGin-Age
_>Не кошерно. Надо на C++20 с помощью метапрограммирования сделать

Можно и на том что счас есть:
CHexCount::CHexCount()
{    
    for (int i = 1; i < 128; i++)
    {
        stringstream ss;
        ss << std::hex << i;
        string sOut = ss.str();

        m_mapIntHex[i] = sOut;
    }
}
...
INT_VECTOR CHexCount::CalculateMagicNumbers()
{
    INT_VECTOR vectMagicNums;
    std::for_each(cbegin(m_mapIntHex), cend(m_mapIntHex), [&vectMagicNums](pair<int, string> pairIntHex)
    {
        stringstream ss;
        ss << pairIntHex.first;
        string strInt = ss.str();
        
        string strHex = pairIntHex.second;

        int iStrSize1 = strInt.size();
        int iStrSize2 = strHex.size();
        if ((iStrSize1 == 2) && (iStrSize2 == 2))
        {
            char chrInt0 = strInt[0];
            char chrInt1 = strInt[1];
            if ((strHex[0] == chrInt1) && (strHex[1] == chrInt0))
            {
                vectMagicNums.push_back(pairIntHex.first);
            }
        }
    });
    return vectMagicNums;
}
Re[3]: Магический возраст
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, D.Lans, Вы писали:


AG>>>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


DL>>Python:

DL>>https://repl.it/@doctorlans/Determine-AlexGin-Age
_>Не кошерно. Надо на C++20 с помощью метапрограммирования сделать

Можно и на том что счас есть:

#include <string>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm> // std::for_each
#include <memory>

using namespace std;

using MAP_IH = map<int, string>;
using INT_VECTOR = vector<int>;

class CHexCount
{
public:
    CHexCount();
    ~CHexCount();
    MAP_IH& GetMapIntHex();

    INT_VECTOR CalculateMagicNumbers();
private:
    MAP_IH m_mapIntHex;
};


CHexCount::CHexCount()
{    
    for (int i = 1; i < 128; i++)
    {
        stringstream ss;
        ss << std::hex << i;
        string sOut = ss.str();

        m_mapIntHex[i] = sOut;
    }
}
...
INT_VECTOR CHexCount::CalculateMagicNumbers()
{
    INT_VECTOR vectMagicNums;
    std::for_each(cbegin(m_mapIntHex), cend(m_mapIntHex), [&vectMagicNums](pair<int, string> pairIntHex)
    {
        stringstream ss;
        ss << pairIntHex.first;
        string strInt = ss.str();
        
        string strHex = pairIntHex.second;

        int iStrSize1 = strInt.size();
        int iStrSize2 = strHex.size();
        if ((iStrSize1 == 2) && (iStrSize2 == 2))
        {
            char chrInt0 = strInt[0];
            char chrInt1 = strInt[1];
            if ((strHex[0] == chrInt1) && (strHex[1] == chrInt0))
            {
                vectMagicNums.push_back(pairIntHex.first);
            }
        }
    });
    return vectMagicNums;
}