mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-08 03:00:37 +00:00
Add university content
This commit is contained in:
26
high-school/question_du_jour/05-05-2025/pro_dynamique.py
Normal file
26
high-school/question_du_jour/05-05-2025/pro_dynamique.py
Normal 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))
|
||||
20
high-school/question_du_jour/12-05-2025/main.py
Normal file
20
high-school/question_du_jour/12-05-2025/main.py
Normal 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)
|
||||
37
high-school/question_du_jour/19-05-2025/main.py
Normal file
37
high-school/question_du_jour/19-05-2025/main.py
Normal 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)
|
||||
Reference in New Issue
Block a user