# Question 1:


def tempsdevol(c):
    u, n = c, 0
    while u != 1:
        if u % 2:
            u = 3*u + 1
        else:
            u = u//2
        n += 1
    return n

# Question 2


def altitude(c):
    u, umax = c, c
    while u != 1:
        if u % 2:
            u = 3*u + 1
        else:
            u = u//2
        if u > umax:
            umax = u
    return umax

# Question 3
# a)


def tempsdarret(c):
    u, n, nmax = c, 0, 0
    while u != 1:
        n += 1
        if u % 2:
            u = 3*u + 1
        else:
            u = u//2
        if u >= c:
            nmax = n
    return nmax

# b)
import time


def verification(m):# m=1000000 -> 60 sec
    start = time.time()
    for c in range(0, m+1, ):
        tempsdarret(c)
    return time.time() - start

# c)

# Question 4
# a)


def altitudemax(borne):
    res = {"c":0, "altitude":0}
    for c in range(3, borne+1, 4):
        current = altitude(c)
        if current > res["altitude"]:
            res.update({"c":c, "altitude":current})
    return res


def tempsdarretmax(borne): # {'c': 665215, 'temps': 354}
    res = {"c": 0, "temps": 0}
    for c in range(3, borne+1, 4):
        current = tempsdarret(c)
        if current > res["temps"]:
            res.update({"c": c, "temps": current})
    return res

def tempsdarretrecord(borne):
    res = {"c": 0, "temps": 0}
    L=[]
    for c in range(2, borne+1):
        current = tempsdarret(c)
        if current > res["temps"]:
            res.update({"c": c, "temps": current})
            L.append({"c": c, "temps": current})
    return L