Salut, Ci-dessous, une fonction qui implémente un algorithme simple : pour un nombre donné et une liste de nombres (arguments), on cherche la plus petite différence entre ce nombre et chacun des termes de la liste. pseudo code arguments : input = le nombre dont on cherche le plus proche dans une liste lst = la liste dans laquelle on cherche le nombre le plus proche procédure : result = premier terme de lst delta = valeur absolue de input - result Pour chaque n, terme suivant de la liste si valeur absolue de input - n est inférieur à delta alors result = n et delta = valeur absolue de input - n (defun nearest (;; arguments
input ;; le nombre dont on cherche le plus proche
lst ;; la liste des nombres à comparer
/ ;; variables
delta ;; la valeur absolue de la plus petite différence
result ;; la nombre de la liste le plus proche du nombre en argument
)
;; initialisation des variables avec le premier terme de la liste
(setq result (car lst)
delta (abs (- input result))
)
;; pour chaque terme suivant dans la liste...
(foreach n (cdr lst)
;; ...si la différence entre ce terme et le nombre en argument est inférieure à delta...
(if (< (abs (- input n)) delta)
;; ... on affecte à result ce terme et à delta la différence
(setq result n
delta (abs (- input n))
)
)
)