
def punt_levy(p, q):
    px, py = p
    qx, qy = q
    return ((px + qx + py - qy) / 2, (py + qy + qx - px) / 2)


def divideix_levy(lpunts):
    if len(lpunts) == 1:
        return lpunts
    else:
        pnou = punt_levy(lpunts[0], lpunts[1])
        return [lpunts[0], pnou] + divideix_levy(lpunts[1:])


def corba_levy(lpunts, n):
    if n == 0:
        return lpunts
    else:
        lpunts2 = divideix_levy(lpunts)
        return corba_levy(lpunts2, n-1)
