1. newcomer - 01 Сентября, 2014 - 21:39:19 - перейти к сообщению
Никак не могу сообразить. Требуется регулярное выражение которое бы находило группу искомых символов в любом порядке в строке любой длины, как это делает выражение /[xyz]{3}/. Проблема в том, что символы не должны повторяться: т.е. может быть так .*(xyz).* или .*(yzx).* или .*(yxz).* . Сама длина группы искомых символов также может варьировать.
2. dcc0 - 02 Сентября, 2014 - 12:09:51 - перейти к сообщению
У вас перестановки. Ради интереса перечитал руководство по preg_match, не нашел встроенного модификатора. Можно считать факториал числа элементов, например из массива и передавать в переменную, только код будет слишком большим.
Интересно, можно ли это сделать с помощью awk из консоли.
Интересно, можно ли это сделать с помощью awk из консоли.
3. Мелкий - 02 Сентября, 2014 - 12:40:54 - перейти к сообщению
Ух, это сильное колдунство.
Мой вариант:
Мой вариант:
Мои ассерты проходит, но по соображениям сопровождаемости делать лучше двупроходным алгоритмом - сперва выбрать [xyz]{3}, потом отфильтровать, например, по count(array_unique(preg_split('~.~', $sMatch))), не равному количеству букв в наборе.