Список всех N-значных чисел с [строковыми] цифрами - PullRequest
2 голосов
/ 05 октября 2019

Мне нужна сложная функция, которая с учетом пользовательских цифр и количества цифр может считать эти цифры и выплевывать их в массив.

Например:

function("012", 2, &array_of_string[]);

Функция должна указывать в массиве:

{"00", "01", "02", "10", "11", "12", "20", "21", "22"}.

Вы можете заметить, что этот массив имеет заполнение спереди, вместо "1", он будет выводить "01". Это необходимо, потому что другой функции, использующей этот массив, потребуется пробел. Заполнение может быть сгенерировано следующим образом:

function(string Digits, int DigitNum, &array_of_string[]){
//mystery

array_of_string[current_cell] = string(DigitNum - number.length(), Digits[0]) + number;

//mystery
}

Так что функция, которую я хотел бы, просто должна генерировать строки с определенным количеством цифр с определенной базой, состоящей из определенных символов.

Этоэто то, что я хочу сделать:

function("*&$", 4, &array_of_strings[]);

будет выводить в array_of_strings []:

{"****","***&","***$","**&*","**&&","**$*","**$&","**$$","*&**","*&*&"... and so forth

Заранее спасибо.

1 Ответ

1 голос
/ 05 октября 2019
auto function(const std::string& str, int amount)
{
    std::vector<std::string> swap;
    std::vector<std::string> arr = { "" };

    while (amount--)
    {
        swap.swap(arr);
        arr.clear();
        for(auto& d : swap)
        {
            for (char ch : str)
            {
                auto s = d;
                s += ch;
                arr.push_back(s);
            }
        }
    }

    return arr;
}
...