Основная трудность в вашей задаче - это «скачок» в результате, где f(90)
должно быть 0
, а f(91)
должно быть 359
.Решение состоит в том, чтобы использовать скачкообразный оператор, а именно оператор модуля, который часто представляется символом %
.
В языке, подобном Python, где оператор модуля всегда возвращает положительный результат, выможно использовать
def f(x):
return (90 - x) % 360
Некоторые языки могут возвращать отрицательный результат, если число перед оператором отрицательно.Вы можете обработать это, добавив 360
перед получением модуля, и это должно работать на всех языках с оператором модуля:
def f(x):
return (450 - x) % 360
Вы можете продемонстрировать любую функцию с помощью:
for a in range(0, 360, 45):
print(a, f(a))
который печатает то, что было нужно:
0 90
45 45
90 0
135 315
180 270
225 225
270 180
315 135
Если ваш язык не имеет оператора модуля, его можно смоделировать с помощью функции floor
или int
.Дайте мне знать, если вам нужно решение с использованием одного из них вместо модуля.