Add university content

This commit is contained in:
2025-09-26 11:16:23 +02:00
parent 45054aef03
commit 76bbd2e5ad
125 changed files with 230 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
pyramide = [["x"], ["y", "z"], ["a", "b", "c"]]
# tableau triangulaire meilleur rendement avec un double boucle
# exemple:
# [1],[4,2],[9,7,3],[10,6,100,1]
# meilleur chemin 100, 7, 4, 1 (on ne peut pas faire 100 9 4 1 car 100 et 9 sont eloigner d'une distance > 1 au niveau de l'abcisse dans les étages)
def meilleur_rendement(pyramide: list[list[int]]):
copie_l = [ligne for ligne in pyramide[::-1]]
pyramide = pyramide[::-1]
for i in range(1, len(pyramide)):
for j in range(len(pyramide[i])):
pyramide[i][j] += max(pyramide[i - 1][j], pyramide[i - 1][j + 1])
return pyramide[-1][0]
def print_pyramide(pyramide):
for l in pyramide:
print(f"{l}\n")
return None
if __name__ == "__main__":
pyramide1 = [[1], [4, 2], [9, 7, 3], [10, 6, 100, 1]]
print_pyramide(pyramide1[::-1])
print(meilleur_rendement(pyramide1))

View File

@@ -0,0 +1,20 @@
def force_brute(liste, i, j):
summs = []
for start in range(i, j):
for end in range(start + 1, j + 1):
summs.append(sum(liste[start:end]))
return max(summs)
def somme_max(liste):
max_actuel = max_total = liste[0]
for x in liste[1:]:
max_actuel = max(x, max_actuel + x)
max_total = max(max_total, max_actuel)
return max_total
if __name__ == "__main__":
liste = [4, -1, -2, 5, -2]
m = force_brute(liste, 0, 5)
print(m)

View File

@@ -0,0 +1,37 @@
# Trouver la plus grande séquence de caractère commune entre de listes ou string
from random import randint
if __name__ =="__main__":
l1 = [randint(0,100) for _ in range(100)]
l2 = [randint(0,100) for _ in range(100)]
adef lcs(a, b):
"""
Renvoie la plus longue sous-séquence commune entre séquences a et b.
"""
n, m = len(a), len(b)
dp = [[0] * (m + 1) for _ in range(n + 1)]
for i in range(n):
for j in range(m):
if a[i] == b[j]:
dp[i + 1][j + 1] = dp[i][j] + 1
else:
dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j])
i, j = n, m
seq = []
while i > 0 and j > 0:
if a[i - 1] == b[j - 1]:
seq.append(a[i - 1])
i -= 1
j -= 1
elif dp[i - 1][j] >= dp[i][j - 1]:
i -= 1
else:
j -= 1
return seq[::-1]
if __name__ == "__main__":
from random import randint
l1 = [randint(0, 100) for _ in range(100)]
l2 = [randint(0, 100) for _ in range(100)]
commun = lcs(l1, l2)
print(commun)