Почему -7 mod 3 = 2 в Ruby?

67
8

Я прихожу из Java в Ruby и это -7 mod 3 = 2 головоломки меня

спросил(а) 2012-07-06T10:59:00+04:00 7 лет, 12 месяцев назад
1
Решение
114

Потому что -7 минус 2 кратно 3.

Более конкретно, реализация модуля, используемого в этом случае, выбирается с положительным модулем. Некоторые реализации выбирают модуль с тем же знаком, что и первый операнд, другие всегда выбирают положительный и т.д.

ответил(а) 2012-07-06T11:02:00+04:00 7 лет, 12 месяцев назад
55

Функция mod дает остаток выше наибольшего кратного меньше первого параметра.


Если это было 7 mod 3, то 6 является наибольшим кратным меньше 7, поэтому 1 является ответом (7-6)

Так как это -7, то -9 - наибольший размер, меньший -7, поэтому 2 - ответ (-7- -9 или -7 + 9)

ответил(а) 2012-07-06T11:07:00+04:00 7 лет, 12 месяцев назад
54

Представьте числовое колесо с элементами {0, 1, 2}, идущими по часовой стрелке.


Вы начинаете с 0 и перемещаете 7 мест против часовой стрелки, потому что у вас есть -7 (Если у вас +5 mod 3, вы перемещаете 5 места по часовой стрелке).


Итак, посмотрим, что это заставляет нас:


Current Number:  0 -1 -2 -3 -4 -5 -6 -7
Wheel Number: 0 2 1 0 2 1 0 2

ответил(а) 2012-07-06T11:06:00+04:00 7 лет, 12 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема