Snippets ( Math & Numbers )
_Boolean() ~ Author - guinness
_Boolean() ~ Author - guinness
ConsoleWrite(_Boolean(True) & @CRLF) ; Returns True.
ConsoleWrite(_Boolean("This is a string with something True.") & @CRLF) ; Returns False if a string of text (excluding True/False or a number.)
ConsoleWrite(_Boolean("1") & @CRLF) ; Returns True as it is a string but a number.
ConsoleWrite(_Boolean("False") & @CRLF) ; Returns False.
ConsoleWrite(_Boolean("False") & @CRLF) ; Returns False.
ConsoleWrite(_Boolean(1) & @CRLF) ; Returns True.
; Convert a value to Boolean (True or False).
; If a number is passed then anything that is NOT 0 is True and if a string is the explicit word True, False or a number than it's equivilant boolean value is returned.
; Anthing else e.g. This is a string is False.
Func _Boolean($fValue)
If IsBool($fValue) Then
Return $fValue
EndIf
Return Number($fValue) >= 1
EndFunc ;==>_Boolean
BinToInt() & IntToBin() ~ Author - Malkey
BinToInt() & IntToBin() ~ Author - Malkey
ConsoleWrite(IntToBin(2048) & @CRLF)
Func IntToBin($iInt) ;coded by Malkey
Local $b = ""
For $i = 1 To 32
$b = BitAND($iInt, 1) & $b
$iInt = BitShift($iInt, 1)
Next
Return $b
EndFunc ;==>IntToBin
ConsoleWrite(BinToInt(111000) & @CRLF)
Func BinToInt($bin) ;coded by Malkey
Local $aArr = StringSplit($bin, "", 2)
Local $dec = 0
For $i = UBound($aArr) - 1 To 0 Step -1
If $aArr[$i] = "1" Then
$dec = BitXOR($dec, BitShift(1, -(UBound($aArr) - 1 - $i)))
EndIf
Next
Return $dec
EndFunc ;==>BinToInt
_BinToInt() ~ Author - Spiff59
_BinToInt() ~ Author - Spiff59
ConsoleWrite(_BinToInt(111000) & @CRLF)
Func _BinToInt($sValue)
Local $iOut = 0, $aValue = StringSplit($sValue, "")
For $i = 1 To $aValue[0]
$aValue[0] -= 1
If $aValue[$i] = "1" Then $iOut += 2 ^ ($aValue[0])
Next
Return Int($iOut)
EndFunc
_BytesToBits() & _BitsToBytes() ~ Author - ProgAndy
_BytesToBits() & _BitsToBytes() ~ Author - ProgAndy
ConsoleWrite(_BytesToBits(1024) & @CRLF)
Func _BytesToBits($bBinary) ;coded by ProgAndy
Local $byte, $bits="", $i, $j, $s
#forceref $j
For $i = 1 To BinaryLen($bBinary)
$byte = BinaryMid($bBinary, $i, 1)
For $j = 1 To 8
$bits &= BitAND($byte, 1)
$byte = BitShift($byte, 1)
Next
Next
$s = StringSplit($bits, "")
$bits = ""
For $i = $s[0] To 1 Step -1
$bits &= $s[$i]
Next
Return $bits
EndFunc
ConsoleWrite(_BitsToBytes(1000) & @CRLF)
Func _BitsToBytes($sBits) ;coded by ProgAndy
Local $bBytes = Binary(''), $iLen = StringLen($sBits)
Local $iCnt = 0, $iVal = 0
For $i = 1 To $iLen
$iCnt += 1
$iVal = BitShift($iVal, -1)
If "1" = StringMid($sBits, $i, 1) Then
$iVal = BitOR($iVal, 1)
EndIf
If $iCnt = 8 Then
$iCnt = 0
$bBytes &= BinaryMid($iVal, 1, 1)
$iVal = 0
EndIf
Next
If $iCnt Then $bBytes &= BinaryMid(Binary(BitShift($iVal, -8+$iCnt)), 1, 1)
Return $bBytes
EndFunc
_ChkParamValue() ~ Author - UEZ
_ChkParamValue() ~ Author - UEZ
$v = 79 ; Bitmask -> 1 + 2 + 4 + 8 + 64 = 79 = 0100 1111
ConsoleWrite(_ChkParamValue(7, $v) & @LF)
ConsoleWrite(_ChkParamValue(32, $v) & @LF)
ConsoleWrite(_ChkParamValue(77, $v) & @LF)
ConsoleWrite(_ChkParamValue(16, $v) & @LF)
;======================================================================================
; Function Name: _ChkParamValue
; Description: Check whether any combination of n parameter values is valid
; Parameters: $iParam: an integer value to check
; $iBitmask: an integer value with the possible parameter values
; Return Value(s): True -> $iParam is a valid parameter
; False -> $iParam is NOT a valid parameter
;
; Error codes: 1: $iParam not an integer
; 2: $iBitmask not an integer
; Author(s): UEZ
; Version: v0.99 Build 2012-05-10 Beta
; Example:
; $iBitmask = 79 ; Bitmask -> 1 + 2 + 4 + 8 + 64 = 79 = 0100 1111
; ConsoleWrite(_ChkParamValue(7, $iBitmask) & @LF)
; ConsoleWrite(_ChkParamValue(32, $iBitmask) & @LF)
; ConsoleWrite(_ChkParamValue(77, $iBitmask) & @LF)
; ConsoleWrite(_ChkParamValue(16, $iBitmask) & @LF)
;=======================================================================================
Func _ChkParamValue($iParam, $iBitmask)
If Not IsInt($iParam) Then Return SetError(1, 0 , 0)
If Not IsInt($iBitmask) Then Return SetError(2, 0 , 0)
If Not $iParam Or $iParam > $iBitmask Then Return 0
Local $c = BitXOR(BitAND($iBitmask, $iParam), $iParam)
If Not $c Then Return True
Return False
EndFunc ;===>_ChkParamValue
_Distance() ~ Author - SolidSnake
_Distance() ~ Author - SolidSnake
; Calculate the Distance between two points
; Author - SolidSnake
ConsoleWrite(_Distance(210, 345, 273, 465) & @CRLF)
Func _Distance($iX1, $iY1, $iX2, $iY2)
Return Sqrt(($iX1 - $iX2) ^ 2 + ($iY1 - $iY2) ^ 2)
EndFunc ;==>_Distance
_Generate() ~ Author - monoceres
_Generate() ~ Author - monoceres
Local $aNumbers = _Generate(7, 1, 36)
Local $sString = ''
For $i = 0 To UBound($aNumbers) - 1
$sString &= "Element " & $i & ": " & $aNumbers[$i] & @CRLF
Next
MsgBox(4096, '', $sString)
; Pick a random set of numbers.
Func _Generate($iSize = 7, $iMin = 1, $iMax = 36)
Local $aArray[$iSize], $sReturn = ''
$aArray[0] = Random($iMin, $iMax, 1)
For $i = 0 To $iSize - 1
While 1
$sReturn = Random($iMin, $iMax, 1)
For $j = 0 To $i - 1
If $aArray[$j] = $sReturn Then
ContinueLoop 2
EndIf
Next
ExitLoop
WEnd
$aArray[$i] = $sReturn
Next
Return $aArray
EndFunc ;==>_Generate
Integer2Binary() & Binary2Integer() ~ Author - UEZ
Integer2Binary() & Binary2Integer() ~ Author - UEZ
#include <String.au3>
ConsoleWrite(Integer2Binary(2048) & @CRLF)
Func Integer2Binary($in) ;coded by UEZ
If $in = 0 Then Return 0
Local $bin
While $in > 0
$bin &= Mod($in, 2)
$in = Floor($in / 2)
WEnd
Return(_StringReverse($bin))
EndFunc
ConsoleWrite(Binary2Integer(111000) & @CRLF)
Func Binary2Integer($in) ;coded by UEZ
Local $int, $x, $i = 1, $aTmp = StringSplit(_StringReverse($in), "")
For $x = 1 To UBound($aTmp) - 1
$int += $aTmp[$x] * $i
$i *= 2
Next
$aTmp = 0
Return StringFormat('%.0f', $int)
EndFunc
Iterative Fibonacci ~ Author - Rutger83
Iterative Fibonacci ~ Author - Rutger83
; Iterative Fibonacci Sequence
Global $n, $n1, $n0
#AutoIt Version: 3.2.10.0
$n0 = 0
$n1 = 1
$n = 10
MsgBox (0,"Iterative Fibonacci ", it_febo($n0,$n1,$n))
Func it_febo($n_0,$n_1,$N)
Local $first = $n_0
Local $second = $n_1
Local $next = $first + $second
Local $febo = 0
For $i = 1 To $N-3
$first = $second
$second = $next
$next = $first + $second
Next
if $n==0 Then
$febo = 0
ElseIf $n==1 Then
$febo = $n_0
ElseIf $n==2 Then
$febo = $n_1
Else
$febo = $next
EndIf
Return $febo
EndFunc
_MilesToKilometres() & _KilometresToMiles() ~ Author - guinness
_MilesToKilometres() & _KilometresToMiles() ~ Author - guinness
; Usage _MilesToKilometres( Number Of Miles To Calculate By ) & _KilometresToMiles( Number Of Kilometers To Calculate By )
ConsoleWrite(_MilesToKilometres(1) & @CRLF) ; Change the (1) to the distance required
Func _MilesToKilometres($iLength)
Return $iLength * 1.609
EndFunc ;==>_MilesToKilometres
; ================
ConsoleWrite(_KilometresToMiles(1) & @CRLF) ; Change the (1) to the distance required
Func _KilometresToMiles($iLength)
Return $iLength * 0.6214
EndFunc ;==>_KilometresToMiles
_Random() ~ Author - guinness
_Random() ~ Author - guinness
; Usage = _Random(Minimum, Maximum, [Integer]) ~ ( Generates a random number within a given range )
ConsoleWrite(_Random(0, 1) & @CRLF) ; Will return a float number between 0 & 1.
ConsoleWrite(_Random(42, 42) & @CRLF) ; Will return 42, as both values are the same.
ConsoleWrite(_Random(1, 99, 1) & @CRLF) ; Will return an integer number between 1 & 99.
Func _Random($iMin, $iMax, $iInteger = 0)
Local $iRandom = Random($iMin, $iMax, $iInteger)
If @error Then
Return $iMin
EndIf
Return $iRandom
EndFunc ;==>_Random
_RandomCharGen() ~ Author - Marlo
_RandomCharGen() ~ Author - Marlo
MsgBox(0, "", _RandomCharGen(50))
Func _RandomCharGen($iLength)
Local $sReturn
Local $aChars[62] = [ _
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', _
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', _
0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
For $i = 0 To $iLength
$sReturn &= $aChars[Random(0, 61)]
Next
Return $sReturn
EndFunc ;==>_RandomCharGen
_RandomNumber() ~ Author - guinness
_RandomNumber() ~ Author - guinness
ConsoleWrite(_RandomNumber() & @CRLF) ; Generates a random number
Func _RandomNumber($iStart = 0, $iEnd = 10000000000)
Return Random($iStart, $iEnd, 1)
EndFunc ;==>_RandomNumber
Recursive Fibonacci ~ Author - Rutger83
Recursive Fibonacci ~ Author - Rutger83
; Recursive Fibonacci Sequence
Global $n, $n1, $n0
#AutoIt Version: 3.2.10.0
$n0 = 0
$n1 = 1
$n = 10
MsgBox (0,"Recursive Fibonacci ", rec_febo($n0,$n1,$n))
Func rec_febo($r_0,$r_1,$R)
if $R<3 Then
if $R==2 Then
Return $r_1
ElseIf $R==1 Then
Return $r_0
ElseIf $R==0 Then
Return 0
EndIf
Return $R
Else
Return rec_febo($r_0,$r_1,$R-1) + rec_febo($r_0,$r_1,$R-2)
EndIf
EndFunc
_Ternary() ~ Author - guinness
_Ternary() ~ Author - guinness
ConsoleWrite(_Ternary(10, 'Is True.', 'Is False.') & @CRLF)
ConsoleWrite(_Ternary(0, 'Is True.', 'Is False.') & @CRLF)
; Version: 1.00. AutoIt: V3.3.8.1
Func _Ternary($iValue, $vTrue, $vFalse) ; Like _Iif but uses 0 or non-zero e.g. 1 or above instead of a boolean result.
Local $aArray[2] = [$vFalse, $vTrue]
Return $aArray[Number(Number($iValue) > 0)]
EndFunc ;==>_Ternary