Actualmente estoy trabajando en una calculadora AppleScript que extrapola secuencias lineales aritméticas (suena elegante pero realmente no lo es). Uno de los procesos que debe realizar es encontrar la diferencia común entre cada elemento. Al enchufar esta diferencia ( d ) en la ecuación de progresión aritmética junto con el término que desea conocer ( n ) predecirá el n término en cualquier secuencia.
Para determinar la diferencia común, primero hay que encontrar la diferencia local entre cada par de números de la secuencia. A continuación, compara cada diferencia; si son todas iguales, la secuencia es lineal y la diferencia común es igual a la diferencia local. Si no, la secuencia no es lineal y no hay diferencia común. He averiguado cómo encontrar las diferencias locales de cada número, pero esto último parece ser un reto mayor. El código que he hecho para determinar las diferencias locales escupe una lista de números. Mi proceso teórico simplemente compararía el primer elemento con todos los demás, y si cada comparación devuelve como verdadero, entonces establece la diferencia común a la misma que la diferencia local. A continuación se muestra mi manera de encontrar la diferencia local de una lista de números:
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. *)
¿Cómo puedo determinar si todos los elementos de una lista son iguales? Lo he intentado numerosas veces, incluyendo este script con el que experimenté, pero me di cuenta de que no me acercaba a la resolución:
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. *)
Para reiterar, ¿cómo puedo determinar si todos los elementos de una lista son iguales? Cualquier ayuda con esto sería muy apreciada. Gracias de antemano.