Algorithm вопрос:алгоритм, чтобы определить, является ли значение в диапазоне кратного
Скажем, я хочу, чтобы определить, является ли значение в пределах диапазона (например, 2) из нескольких десятков - так, 8- 12, 18-22, 28-32 и т. Д.
Мое текущее решение состоит в том, чтобы добавить диапазон к значению, mod на 10, а затем повторно вычесть диапазон - таким образом, оставив меня с чем-то от -2 до 8 - и затем проверьте, меньше ли значение абсолютного значения.
value = 38
range = 2
cycle = 10
tweaked_mod = ((value + range) % cycle) - range
# tweaked_mod = -2
within_range = (abs(tweaked_mod) <= range)
# within_range = True
против:
value = 37
range = 2
cycle = 10
tweaked_mod = ((value + range) % cycle) - range
# tweaked_mod = 7
within_range = (abs(tweaked_mod) <= range)
# within_range = False
Это работает, но это неудобно.
Я пропустил более интуитивный/лаконичный алгоритм здесь?
Почему вы не можете просто взять значение mod 10, а затем проверить, является ли ответ 10-range if> 5. –
@Abhishek - Я предварительно (локально) работает с алгоритмом, который по существу делает что - и согласился, в конечном счете яснее объяснять/комментировать. Однако мои аргументы в пользу публикации этой темы были на всякий случай, когда я пропустил более глубокую/более мощную концепцию, которая выполняла то же самое, как в общем, так и в Python. – DreadPirateShawn
Кроме того, не стесняйтесь публиковать свое предложение в качестве ответа - если это остается самым ясным путем, я хотел бы отметить его как выбранный ответ. – DreadPirateShawn