corentin.bollet
7 months ago
3 changed files with 4438 additions and 0 deletions
File diff suppressed because it is too large
@ -0,0 +1,32 @@ |
|||||
|
from datetime import date |
||||
|
|
||||
|
def ecartDate(date1, date2): |
||||
|
"""Renvoie le nombre de jours écoulés |
||||
|
entre date1 et date2 (modulo 365)""" |
||||
|
delta_sec = (date.fromisoformat(date2)-date.fromisoformat(date1)).total_seconds() |
||||
|
secParJour = 86400 |
||||
|
return delta_sec / secParJour |
||||
|
|
||||
|
def distance(point1, point2): |
||||
|
"""Prend en paramètre 2 tuples au format |
||||
|
(Date du jour, Température moyenne, température de référence) |
||||
|
et qui renvoie un nombre réel représentant |
||||
|
la distance euclidienne au carré entre ces deux points""" |
||||
|
duree = ecartDate(point1[0], point2[0]) |
||||
|
delta_T_moy = (point1[1]-point2[1])**2 |
||||
|
delta_T_ref = (point1[2]-point2[2])**2 |
||||
|
|
||||
|
return duree**2/100 + delta_T_moy**2 + delta_T_ref**2 |
||||
|
|
||||
|
|
||||
|
def kPlusProches(point_a_verifier, tableau, k): |
||||
|
"""Prend en paramètres un tuple au format |
||||
|
(Date du jour, Température moyenne, température de référence) |
||||
|
et un tableau au format (Numéro du jour, Température moyenne, Température de référence). |
||||
|
Renvoie un tableau trié avec les k plus proches |
||||
|
points de `point_a_verifier`, au format (distance, indice du tableau original)""" |
||||
|
dist = [] |
||||
|
for i, point in enumerate(tableau): |
||||
|
dist.append(distance(point_a_verifier, point), i) |
||||
|
sorted(dist, key=lambda t: t[0]) |
||||
|
return dist[:k+1] |
Loading…
Reference in new issue