Любая идея, чтобы сделать лучший код для комбинации:Как перечислить комбинированную возможность в golang
с этим:
letters := []string{"a", "b", "c", "d"}
иметь: a ab ac ad abc abd b bc bcd
и т.д ...
привет и спасибо
Любая идея, чтобы сделать лучший код для комбинации:Как перечислить комбинированную возможность в golang
с этим:
letters := []string{"a", "b", "c", "d"}
иметь: a ab ac ad abc abd b bc bcd
и т.д ...
привет и спасибо
Вы ищете Powerset:
Один a pproach является:
Начните с slice
с один пустым элементом, давайте назовем это результатом:
[[]]
Держите предыдущий кусочек, и создать новый фрагмент с первым элементом a
из структуры ваших данных добавлена в вы к каждому элементу в вашем оригинальном срезе.
[[]]
< --old; [[a]]
< --new
объединить их
[[], [a]]
Сделайте то же самое для второго элемента b
:
[[], [a]]
< --old; [[b], [ab]]
< --new
=>[[], [a], [b], [ab]]
для c
:
< [[], [a], [b], [ab]]
--old; [[c], [ac], [bc], [abc]]
< --new
=>[[], [a], [b], [ab], [c], [ac], [bc], [abc]]
и так далее ..
Чтобы дополнить этот ответ, это отличная ссылка, в которой приводятся примеры того, как манипулировать срезами https://github.com/golang/Go/вики/SliceTricks – reticentroot
Эта модель не является правильным. Это полный выход. 'a ab ac ad abc abd b bc bcd, c, cd' – atilkan
См. Knuth, TAOCP §7.2 – Volker