

#--------------------------------topic: --------------------------------#




#################################Slide 3#######################################
def calculer_moyenne(x, y):
    """Calcule la moyenne de deux nombres."""
    total = x + y
    moyenne = total / 2
    return moyenne




#################################Slide 6#######################################
a, b = 9, -11

mymax = a*b / min(a,b)
print("Max is: ", mymax)



#################################Slide 6#######################################
a, b = 9, -11

mymax = a + b - min(a,b)
print("Max is: ", mymax)



#################################Slide 7#######################################
import math

a, b = 14, 5
print("lcm: ", a*b / math.gcd(a,b))

a, b = 14, 4
print("lcm: ", a*b / math.gcd(a,b))



#################################Slide 8#######################################
s, t = "abfecgd", "fgdcba"
s_trie, t_trie = ''.join(sorted(s)), ''.join(sorted(t))

print(s, t, s_trie == t_trie)

s, t = "abfecgd", "efgdcba"
s_trie, t_trie = ''.join(sorted(s)), ''.join(sorted(t))

print(s, t, s_trie == t_trie)




#################################Slide 9#######################################
t, s = "abcde", "cedab"
print(s, t, s in (t+t))

t, s = "abcde", "cdeab"
print(s, t, s in (t+t))




#################################Slide 9#######################################
t = "abcde"
u = t + t

for i in range(0, len(t)):
    print(u[i:i+len(t)])




#################################Slide 11#######################################
def findMedian(A):
    n = len(A)
    for i in range(0, n):
        count = 0
        for j in range(0, n):
            if A[j] < A[i]:
                count += 1

        if count == n // 2:
            return A[i]





#################################Slide 11#######################################
def findMedianFASTER(A):
    B = sorted(A)
    return B[ len(A) // 2]




#################################Slide 12#######################################
def findMedianFASTER(A):
    B = sorted(A)
    return B[ len(A) // 2]  


def findMedian(A):
    n = len(A)
    for i in range(0, n):
        count = 0
        for j in range(0, n):
            if A[j] < A[i]:
                count += 1

        if count == n // 2:
            return A[i]

import random
import time

n = 1000001
A = [ random.randint(0, 100000) for _ in range(0, n) ]


start = time.time()
m2 = findMedianFASTER(A)
print(f"Median: {m2} in time for f(n): {time.time()-start}")


start = time.time()
m1 = findMedian(A)
print(f"Median: {m1} in time for n^2: {time.time()-start}")




