@MyOnAsSalat

Как зациклить индекс массива?

есть массив известной длинны L,
на вход подаётся индекc n, как получить зацикленный индекс
Например массив int с элементами равными индексу массива, f элемент массива
[012345] длинна L = 6
n = 0 f = 0
n = 5 f = 5
n = 6 f = 0
n = 7 f = 1
n = 8 f = 2
n = -1 f = 5
n = -2 f = 4
Есть ли простная расчётная формула для получения индекса из n? Или наиболее быстрый алгоритм получения этого индекса
  • Вопрос задан
  • 1124 просмотра
Решения вопроса 1
twobomb
@twobomb
int l = 6, n = 6;
int f = n < 0? l - Math.abs(n%l):n%l;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sgjurano
@sgjurano
Разработчик
Такая операция называется вычетом по модулю, обычно обозначается символом %.

Пример на Python:
In [6]: p = 6
   ...: for i in range(10):
   ...:     print('i=' + str(i), i % p)
   ...:     print('-i=' + str(-i), -i % p)
   ...:     
   ...:     
   ...:     
   ...:     
('i=0', 0)
('-i=0', 0)
('i=1', 1)
('-i=-1', 5)
('i=2', 2)
('-i=-2', 4)
('i=3', 3)
('-i=-3', 3)
('i=4', 4)
('-i=-4', 2)
('i=5', 5)
('-i=-5', 1)
('i=6', 0)
('-i=-6', 0)
('i=7', 1)
('-i=-7', 5)
('i=8', 2)
('-i=-8', 4)
('i=9', 3)
('-i=-9', 3)
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
Используйте остаток от деления, div.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы