Rioran
Everything is possible and achievable.
- Сообщения
- 26
- Репутация
- 2
AutoIt: Тестировалось на 3.3.12.0
Версия: 1.00
Категория: Вспомогательные функции, Строки, Математика.
Описание: Функция раскладывает целое положительное число на слагаемые степени двойки и возвращает строку, где множители разбиты через символ "+". Можно использовать в комбинации со StringSplit по символу "+" для получения массива слагаемых. Алгоритм рекомендуется использовать максимум на 14-значных числах ввиду ограничения на возведение в степень. При желании можно доработать пользовательской функцией, как это сделано ЗДЕСЬ. Может замедлить скорость работы.
Код/Пример:
История версий:
Автор: Роман "Rioran" Воронов
Версия: 1.00
Категория: Вспомогательные функции, Строки, Математика.
Описание: Функция раскладывает целое положительное число на слагаемые степени двойки и возвращает строку, где множители разбиты через символ "+". Можно использовать в комбинации со StringSplit по символу "+" для получения массива слагаемых. Алгоритм рекомендуется использовать максимум на 14-значных числах ввиду ограничения на возведение в степень. При желании можно доработать пользовательской функцией, как это сделано ЗДЕСЬ. Может замедлить скорость работы.
Код/Пример:
Код:
Global $nNumber = 32767 ; Какое число разбиваем на слагаемые степени двойки
ConsoleWrite($nNumber & " = " & GetCompositionNumbers($nNumber) & @CRLF)
func GetCompositionNumbers($nVal)
; Автор: Роман "Rioran" Воронов
; Версия: 1-00 от 17.09.2015
; ---------------------------
; Программа предназначена для получения слагаемых степеней двойки
; Function returns composition numbers of a given value
Local $sText, $X, $Power = 0
While $nVal >= 1
If IsInt($nVal/2) Then
$X = 0
Else
$nVal = $nVal - 1
$X = 1
EndIf
$nVal /= 2
If $X Then $sText = $sText & "+" & (2 ^ $Power)
$Power += 1
WEnd
return StringMid($sText, 2)
EndFunc
История версий:
1.00: первая публичная версия
Автор: Роман "Rioran" Воронов