
import fractions
import itertools

def sequencia1(u):
    p, q = 1, u
    while True:
        r = fractions.Fraction(p, q)
        yield r
        p = r.numerator
        q = r.denominator
        if r < 1:
            p, q = 3*q, 2*p
        else:
            p, q = 2*p+1, 3*q+1

def seguent(r):
    p = r.numerator
    q = r.denominator
    if r < 1:
        return fractions.Fraction(3*q, 2*p)
    else:
        return fractions.Fraction(2*p+1, 3*q+1)

def sequencia2(u):
    r = fractions.Fraction(1, u)
    while True:
        yield r
        r = seguent(r)

def seguent_sum(r, a):
    return seguent(r)
    
def sequencia3(u):
    r = fractions.Fraction(1, u)
    return itertools.accumulate(itertools.repeat(0), seguent_sum, initial=r)


# tria la solució que vols comprovar
sequencia = sequencia1
