Próbuję napisać funkcję, która odpowiada na pytanie: jeśli zaczniesz liczyć na a
i przestać liczyć na b
, to c
w tym zakresie (aka jest c
między a
i b
).Algorytm do określenia, czy liczba jest między dwoma numerami w arytmetyce modularnej
Normalnie a < c && c < b
wystarczyłoby, ale jestem w arytmetyce modularnej:
Licznik ruchu wskazówek zegara zwiększa się.
Zielone kolory: są wartości dla C, gdzie algorytm powinien wskazać prawdziwe (gdzie c jest między A i B)
Błękitnych kolorach: są wartości dla C, gdzie algorytm powinien wskazywać fałszywe (gdzie c nie zawiera się między oraz b) (który okazuje się być taki sam jak gdzie c jest między b i)
prosta a < c && c < b
zawodzi, gdy zakres a
i b
zazębia 0.
na przykład, że a = 300 i B = 45. Jeśli C jest 10, funkcja powinna zwrócić true: , 301, 302 ... 359, 0, 1, 2, 3 ... 8, 9, , 11, 12 ... 43, 44, . W związku z tym 10 wynosi od 300 do 45 w mod 360.
Ostatecznie próbuję ustalić, czy jeden odcień jest pomiędzy dwoma innymi odcieniami, gdzie odcienie są określone w stopniach wokół koła kolorów (co jest modem 360). Byłoby wspaniale, gdyby odpowiedź była w sensie mod n, więc rozwiązałoby to ogólny przypadek i nie było to jednak specyficzne dla mojego problemu.
I, że istnieje 3 przypadki: a≤x≤b lub b≤a≤x lub x≤b≤a (przy założeniu, że liczby te są w postaci kanonicznej 0≤a b , x