Описание вспомогательной функции


_ArrayPermute

Возвращает массив перестановок всех элементов указанного массива.

_ArrayPermute($var_array[,$var_sdelim=''[,$var_istart=0]])

Параметры

$var_array Массив для использования
$var_sdelim [необязательный] Символ разделитель, по умолчанию "" (пустая строка) без разделителя
$var_istart [необязательный] Индекс массива, от которого начинать перестановку

Возвращаемое значение

Успех:Возвращает массив с перестановками
$var_array[0] содержит количество возвращаемых строк.
Остальные элементы ($var_array[1], $var_array[2] ... $var_array[n]) содержат перестановки.
Ошибка:Возвращает 0 устанавливает @error:
@error:1 - Массив $var_array не является массивом
2 - Массив $var_array не является одномерным массивом

Примечания

Используемый массив должен иметь начальный индекс с нуля, т.е. не содержать счётчик размерности в первом элементе $array[0]. Основано на алгоритме Alexander Bogomolny. http://www.bearcave.com/random_hacks/permute.html

Функцию можно подключить через команду exect

См. также

_ArrayConcatenate, _ArrayDelete, _ArrayInsert, _ArrayPop, _ArrayPush

Примеры:
 Как создать кнопку?


exect=$var_aa=StringSplit('1|2|3|4','|',2)||$var_ap=_ArrayPermute($var_aa,'-')||_ArrayDisplay($var_ap) ;; пример возвращения массива $var_ap перестановок всех элементов указанного массива $var_aa

exect=$var_s=##[input=BOX72]||$var_ap=_ArrayPermute(StringSplit('$var_s',Null,2))||_ViewValues($var_ap) ;; анаграмма введённого слова в диалоге в виде массива. (В анаграмму входят слова, с перестановкой всех букв заданного слова без повторов букв и точной длины)
exect=$var_s=##[input=BOX72]||$var_ap=_ArrayPermute(StringSplit('$var_s',Null,2))||_ViewValues($var_ap)||$var_ss=_ArrayToString($var_ap,@CRLF,1)||_ViewValues('$var_ss ')||FileWrite('c:\Test\anagam.txt','$var_ss') ;; создание анаграммы в введённого слова в диалоге, просмотр результата на каждом этапе и сохранение в файл anagam.txt (В анаграмму входят слова, с перестановкой всех букв заданного слова без повторов букв и точной длины)
exect=$var_s=##[input=BOX72]||FileWrite('c:\Test\anagam.txt',_ArrayToString(_ArrayPermute(StringSplit('$var_s',Null,2)),@CRLF,1)) ;; создание анаграммы в введённого слова в диалоге и сохранение в файл anagam.txt

exect=$var_s=##[input=BOX72]||FileWrite('c:\Test\anagam_'&'$var_s'&'.txt',_ArrayToString(_ArrayPermute(StringSplit('$var_s',Null,2)),@CRLF,1)) ;; создание анаграммы в введённого слова в диалоге и сохранение в файл anagam_слово.txt

imgpr=1 exect=$var_s=ClipGet()||$var_sz=(_ArrayToString(_ArrayPermute(StringSplit('$var_s','"''"',2)),'~~',1)) bufsr=##$var_sz||formt<sps36> ;; записать в буфер обмена анаграмму слова, находящегося в буфере обмена и разбить по 10 слов в строке. Если в слове более 10 символов, то для создание анаграммы понадобится длительное время

imgpr=1 exect=$var_sz=(_ArrayToString(_ArrayPermute(StringSplit(ClipGet(),'"''"',2)),'~~',1)) bufsr=##$var_sz||formt<sps36> ;; записать в буфер обмена анаграмму слова, находящегося в буфере обмена и разбить по 10 слов в строке. Если в слове более 10 символов, то для создание анаграммы понадобится длительное время
exect=$var_s=##[input=BOX72]||$var_ap=_ArrayPermute(StringSplit('$var_s','"''"',2),'"''"',1)||_ViewValues($var_ap) ;; возвращает массив перестановок букв введённого слова, не добавляя количество в 1-й элемент

imgpr=1 exect=$var_s=##[input=BOX72]||$var_ap=_ArrayPermute(StringSplit('$var_s','"''"',2),'"''"',1)||$var_af=FileReadToArray('C:\dictionary.txt')||$var_ae=_ArrayDublElem($var_ ap,$var_af,1)||$var_s=_ArrayToString($var_ae,@CRLF) bufsr=##$var_s ;; отправить в буфер обмена все слова анаграммы введённого в диалоге слова, которые входят в состав словаря dictionary.txt (В список входят слова, с перестановкой всех букв заданного слова без повторов букв и точной длины)


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru