Я хочу создать пул чисел для алгоритма Mastermind (https://www.swtestacademy.com/algorithms-mastermind/). Пул должен состоять из всех возможных комбинаций кода Mastermind размером n . Так, например, когда n = 4 пул должен выглядеть следующим образом:
[0000] [0001] [0002] .... [5555]
с n = 5 :
[00000] .... [55555]
, где каждое число представляет цвет из решения вдохновителя. Таким образом, для примера [3101] будет красный, синий, белый, синий.
Я создал функцию для создания пула с n = 4 :
vector<string> createPool4()
{
vector<string> pool;
for (int i = 0; i < colours; i++)
for (int j = 0; j < colours; j++)
for (int k = 0; k < colours; k++)
for (int l = 0; l < colours; l++)
pool.push_back(to_string(i) + to_string(j) + to_string(k) + to_string(l));
return pool;
}
Тогда я попытался преобразовать эту функцию в рекурсивную вложенную форму для -l oop, но, посмотрите сами:
vector<string> fillPool(int n, vector<string> pool, const string& s) {
if (n == 0) {
pool.push_back(s);
s.clear();
return pool;
}
for (int i = 0; i < n; i++) {
s += to_string(i);
pool = fillPool(n-1,pool,s);
}
}
Этот код не работает, он должен просто отображаться в в каких направлениях я шел.
Итак, для завершения мне нужна функция, которая может взять измерение n, а затем создать список возможных кодов. пока я собирался использовать вектор строк, но я рад услышать альтернативные возможности.
Может быть, кто-то может мне помочь с этим, потому что я знаю, что где-то там есть действительно хорошее решение для этого .
Спасибо!