Мне нужна помощь в создании алгоритма в PHP, который, учитывая массив алфавитов (представленный в виде строк) и массив группировок этих алфавитов (также массив строк), возвращает массив массивов всех возможных комбинацийстроки на основе этих группировок.Следующий пример прояснит это -
Если входной массив равен ['A', 'B', 'C']
, а группировки ['AB', 'BC']
, то возвращаемый результат:
- Без каких-либо ограничений будет
[['A','B','C'], ['AB,'C'], ['A','BC'], ['AC','B'], ['ABC']]
- С ограничениями группировок должно быть
[['A','B','C'], ['AB,'C'], ['A','BC']]
Причина этого в том, что ни 'ABC', ни 'AC' не допускаются группировки, и идея заключается в том, что группировкидолжно существовать, только если они принадлежат указанному массиву.В этом случае, поскольку «AB» и «BC» являются единственно возможными группировками, выходные данные содержат их.Первый вывод был только для демонстрационных целей, но алгоритм должен произвести второй вывод.Единственное другое ограничение заключается в том, что в одной комбинации не может быть повторяющихся алфавитов.Поэтому следующий вывод НЕ верен:
[['A','B','C'], ['AB,'C'], ['A','BC'], ['AB','BC'], ['AC','B'], ['ABC']]
, так как «B» является дубликатом в ['AB','BC']
Подобный вопрос, который я нашел, был здесь, за исключением того, что нет никаких ограничений на то, какие числа можно сгруппировать в «Результат» в этом вопросе.
Я прошу прощения, если я сделал это звучит запутанно, но я обязательно уточню, если у вас есть какие-либо вопросы.