L.S. !

Just in case someone is in the mood to find a faster & simpler way to this piece of code ...
Thanks !
.Floris


import random

def LinearInter(f, a, b):
        return a + (b-a) * f

def FindSegment(r, A=[], FACT=0, DATA=1 ):
        if r <= A[0][FACT]:
                return A[0][DATA]
        elif r >= A[-1][FACT]:
                return A[-1][DATA]
        else:
                l = 0
                h = len(A)-1
                while (h-l) > 1:
                        p = l + (h-l) / 2
                        if r >= A[p][FACT]:
                                l = p
                        else:
                                h = p
                if l == h:
                        return A[l][DATA]
return LinearInter( (r - A[l][FACT]) / (A[h][FACT] - A[l][FACT]), A[l][DATA], A[h][DATA] )

if __name__ == '__main__':
        L1 = [ (0.0,  10), (0.5,  20), (0.75, 30), (0.8,  40), (1.0,  50) ]
        L2 = [ (0.1,  50), (0.5,  30), (0.75, 10), (0.8,  40), (0.9,  70) ]

        for i in range(101):
                r = i / 100.0
print i, FindSegment(r, L1), FindSegment(r, L2), FindSegment(random.random(), L2)


_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan