Есть слово Hello
.
Есть список замен:
H-@
H-*
e-~
l-&
На выходе должно получиться
@ello
@~llo
@~&lo
@~&&o
@e&&o
....
Т.е. надо перебрать все возможные вариации замен. Подскажите примерный алгоритм как это сделать. Можно псевдокодом.
Обычный перебор
private static Dictionary<char, char> _map = new Dictionary<char, char>()
{
{'H', '@'},
{'e', '~'},
{'l', '&'},
};
public void Replace(char[] array, int index = 0){
if (index >= array.Length) {
Console.WriteLine(new string(array));
return;
}
char c = array[index];
Replace(array, index+1);
if (_map.ContainsKey(c)) {
array[index] = _map[c];
Replace(array, index+1);
array[index] = c;
}
}
как использовать
Replace("Hello".ToCharArray());
Вывод
Hello
Hel&o
He&lo
He&&o
H~llo
H~l&o
H~&lo
H~&&o
@ello
@el&o
@e&lo
@e&&o
@~llo
@~l&o
@~&lo
@~&&o
UPD
Когда несколько значений в маппинге
private static Dictionary<char, char[]> _map = new Dictionary<char, char[]>()
{
{'H', new []{'@', '*'}},
{'e', new []{'~'}},
{'l', new []{'&'}},
};
public void Replace(char[] array, int index = 0)
{
if (index >= array.Length)
{
Console.WriteLine(new string(array));
return;
}
char c = array[index];
Replace(array, index + 1);
if (_map.ContainsKey(c))
{
foreach (var r in _map[c])
{
array[index] = r;
Replace(array, index + 1);
}
array[index] = c;
}
}
Вызов
Replace("Hello".ToCharArray());
Вывод
Hello
Hel&o
He&lo
He&&o
H~llo
H~l&o
H~&lo
H~&&o
@ello
@el&o
@e&lo
@e&&o
@~llo
@~l&o
@~&lo
@~&&o
*ello
*el&o
*e&lo
*e&&o
*~llo
*~l&o
*~&lo
*~&&o
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть Task, который запускается при нажатие кнопкиВ нем не используются бесконечные циклы
у меня есть толстое приложение на сканере, которое должно сканировать штрихкод с PDF - файлаШтрихкод включает в себя 3 значения [Текстовое значение][пробел][Текстовое...
Основная проблема найти пример того, как в ComboBox Items вставлять ряд данных из базы Firebase, к примеру при нажатии кнопки
GridView состоит с GridViewRowPresenter'ов и если GridViewColumn задан DataTemplate для ячеек, то внутри GridViewRowPresenter'а будут не TextBlock а ContentPresenter с тем что мы зададим в DataTemplate...