Sto cercando di scrivere una funzione che risponde alla domanda: se si inizia a contare a a
e smettere di contare a b
, è c
in tale intervallo (alias è c
tra a
e b
).algoritmo per determinare se il numero è tra due numeri in aritmetica modulare
Normalmente a < c && c < b
sarebbe sufficiente, ma sono in aritmetica modulare:
senso antiorario è in aumento.
colori verdi: sono valori per c in cui l'algoritmo dovrebbe indicare vero (dove c è tra A e B)
coloriblu: sono i valori per c in cui l'algoritmo dovrebbe indicare falso (dove c non è tra un e b) (che risulta essere uguale a dove c è tra b ed un)
la semplice a < c && c < b
fallisce in cui la gamma di a
e b
croci superiore a 0.
ad esempio, supponiamo a = 300 e B = 45. Se C è 10 quindi la funzione deve restituire true: , 301, 302 ... 359, 0, 1, 2, 3 ... 8, 9, , 11, 12 ... 43, 44, . Pertanto, 10 è tra 300 e 45 in mod 360.
In definitiva, quello che sto cercando di determinare è se una tonalità è tra due altre tonalità, dove le tonalità sono specificate in gradi attorno a una ruota dei colori (che è una mod Sistema 360). Sarebbe bello se la risposta fosse in termini di mod n in modo da risolvere il caso generale e non essere specifico del mio problema.
Penso che ci sono 3 casi: a≤x≤b O b≤a≤x O x≤b≤a (assumendo i numeri sono in forma canonica 0≤a, b , x