Je travaille actuellement sur une calculatrice AppleScript qui extrapole des séquences linéaires arithmétiques (cela semble sophistiqué mais ça ne l'est pas vraiment). L'un des processus à effectuer est de trouver la différence commune entre chaque élément. En introduisant cette différence ( d ) dans l'équation de progression arithmétique ainsi que le terme que vous souhaitez connaître ( n ) permettra de prédire la n e terme dans n'importe quelle séquence.
Pour déterminer la différence commune, vous devez d'abord trouver la différence locale entre chaque paire de nombres de la séquence. Ensuite, comparez chaque différence ; si elles sont toutes identiques, la séquence est linéaire et la différence commune est égale à la différence locale. Dans le cas contraire, la suite est non linéaire et il n'y a pas de différence commune. J'ai trouvé comment trouver les différences locales de chaque nombre, mais la dernière semble être un plus grand défi. Le code que j'ai créé pour déterminer les différences locales produit une liste de nombres. Mon processus théorique consisterait à comparer le premier élément à tous les autres, et si chaque comparaison est vraie, à définir la différence commune comme étant la même que la différence locale. Voici comment je trouve la différence locale d'une liste de nombres :
set sequence to {1, 2, 3, 4, 4}
set x to 0
set dif_check to {}
repeat ((number of items of sequence) - 1) times
set x to (x + 1)
set selected_item to (item x of sequence)
set local_dif to ((item (x + 1) of sequence) - selected_item)
set dif_check to dif_check & {local_dif}
end repeat
return dif_check
--> result: {1, 1, 1, 0}
(* Since every item in the resulting list isn't equal, it would be nonlinear and the common difference would just be n/a. *)
Comment déterminer si tous les éléments d'une liste sont identiques ? J'ai essayé à plusieurs reprises, notamment avec ce script que j'ai expérimenté, mais je me suis rendu compte que cela ne me rapprochait pas de la solution :
set dif_check to {1, 1, 1, 0}
set first_term to (first item of dif_check)
set x to 1
set common_dif_check to {}
repeat ((number of items of dif_check) - 1) times
set x to (x + 1)
(item x of dif_check) = first_term
set common_dif_check to common_dif_check & {result}
end repeat
return common_dif_check
--> result: {true, true, false}
(* This takes the first item of the list and compares it with every item after, returning a true or false and adding the result to another list. I thought this would have solved it, but instead just turns out as the same situation as before. *)
Comment puis-je déterminer si tous les éléments d'une liste sont identiques ? Toute aide à ce sujet serait grandement appréciée. Merci d'avance.