/
Using Lua to do a Binary Search

Using Lua to do a Binary Search

This is a quick exercise I did with Sam my finance manager:

This is the Lua code which implements a binary search:

function BINsearch(TargetFunc, Low, High) local Range = High - Low local Threshold = 1 trace(Range) local LowValue = math.abs(TargetFunc(Low + Range/3)) local HighValue = math.abs(TargetFunc(High - Range/3)) if (LowValue <= HighValue) then if (LowValue < Threshold) then return Low + Range/3 end return BINsearch(TargetFunc, Low, Low + Range*2/3) else if (HighValue < Threshold) then return High - Range/3 end return BINsearch(TargetFunc, Low+Range/3, High) end end

And here is some example code to show it’s usage:

require 'BINsearch' function APPtarget(Input) return Input-20000 end -- The main function is the first function called from Iguana. function main() local HighGuess = 19000 local LowGuess = 0 local Result = BINsearch(APPtarget, LowGuess, HighGuess) APPtarget(Result) end

You might want to checkout the related concept of doing this in Microsoft Excel using the solver addin.

Related content

Using the solver add-in in Microsoft Excel
Using the solver add-in in Microsoft Excel
More like this
Equality and Inequality Operators
Equality and Inequality Operators
More like this
String:match()
String:match()
More like this
Pattern Matching
Pattern Matching
More like this
Example code showing the eight basic types in Lua
Example code showing the eight basic types in Lua
More like this
String:find()
More like this