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. _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode