Как можно вывести введенное пользователем в разбросанном виде?

Как можно вывести данные в одной строке в разбросанном виде в C++?

К примеру пользователь ввел Moskva и 123, и нужно чтобы получилось типо Moskva123, 123Moskva, и т.д.


Ответы (1 шт):

Автор решения: Harry

Те части, которые нужно перемешивать (отдельные слова, или буквы, или что там) - запихиваем в контейнер и перемешиваем с помощью shuffle...

mt19937 g(random_device{}());
vector<string> s = {"Moskva", "123", "456", "?!" };

for(int i = 0; i < 5; ++i)
{
    shuffle(s.begin(),s.end(), g);
    for(auto c: s) cout << c; cout << endl;
}

Если надо перебрать все варианты - используем перестановки:

sort(s.begin(),s.end());
do {

    for(auto c: s) cout << c; cout << endl;

} while(next_permutation(s.begin(),s.end()));
→ Ссылка