# function for greatest object in list less than or equal to a value

BNig bernd.niggemann at uni-wh.de
Mon Oct 12 13:12:33 EDT 2015

```OK, I will throw this in for a good measure

-----------------------------------------------------
function closestSmallerValue @pList, pMax
-- this assumes pList to be sorted ascending AND consisting of numbers
-- AND no empty items
-- here only testing for SMALLER, not <=

put the number of items of pList into tNoItems

-- if pMax is > then value of last item of pList
if pMax > tNoItems and pMax > item tNoItems of pList then return item
tNoItems of pList

-- if pMax is smaller then value of first item
if pMax <= item 1 of pList then return "error, no smaller value found"

-- in case the number of items < pMax but pList contains valid range
put min(pMax, tNoItems) into tStartItem

-- try sort of a binary search
return closeIn(pList,1,tStartItem,pMax)
end closestSmallerValue

function closeIn @pList pLowerBounds, pUpperBounds, pMax
put pUpperBounds - pLowerBounds into tSpan
put tSpan div 2 + pLowerBounds into tNewItem
put item tNewItem of pList into tNewValue
if tNewValue > pMax then
put tNewItem into pUpperBounds
else
put tNewItem into pLowerBounds
end if
if pUpperBounds - pLowerBounds < 2 then
if item pLowerBounds of pList < pMax then
return item  pLowerBounds  of pList
else
return item  pLowerBounds -1  of pList
end if
else
get closeIn (pList, pLowerBounds, pUpperBounds, pMax)
end if
end closeIn
-----------------------------------------------------

BTW, what is a tick? Is that the imperial gallon of time? Or more a pint, a
fluid ounce?
I do kow that ticks bite and :)

No guarantees, did test it though with various lists up to 100000 items, but
what the tick... :)
My first attempt at something like "binary search" so please be forgiving.

Kind regards
Bernd

--
View this message in context: http://runtime-revolution.278305.n4.nabble.com/function-for-greatest-object-in-list-less-than-or-equal-to-a-value-tp4697221p4697266.html
Sent from the Revolution - User mailing list archive at Nabble.com.

```