Описание вспомогательной функции | |
_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См. также
_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 (В список входят слова, с перестановкой всех букв заданного слова без повторов букв и точной длины)