Перемещение элементов во вложенном списке, при необходимости переполнение предыдущего / следующего индекса родительского списка? - PullRequest
0 голосов
/ 22 октября 2019

У меня есть List<Week>, где у каждого Week есть List<Day>.

Мое намерение состоит в том, чтобы переместить определенный день по N индексам;и если это высадит его за пределы текущей недели, в котором он находится - переместите его на соответствующую неделю.

Как бы я поступил так?


Я попытался спланировать список недель, чтобы все дни были сведены в один гигантский список, и я могу просто переместитьдень в этом списке. Это работает, но я получаю новый список дней, и я понятия не имею, как Id собрать его обратно.

1 Ответ

1 голос
/ 22 октября 2019

Я не уверен, правильно ли я понял вашу проблему, но все равно попробую.

По сути, у вас есть матрица NxM (где N=7 и M=weeks.size), гдекаждая строка представляет неделю.

Предположим, у вас есть день с индексом (i0,j0), который вы хотите переместить на k позиций вперед (или назад, если k отрицательно). Так что вам просто нужно вычислить новый целевой индекс (i1,j1) на основе этого ввода.

Легко видеть, что (i1,j1) = (i0 + k/N, j0 + k%N)

fun getNewPosition(src: Point, k: Int): Point {
    return Point(src.x + k/7, src.y + k%7)
}

point.x - это число недели, а point.y - это число дней.

Теперь вам нужно решить, что вам делать

  1. , если у вас нет этого индекса в вашей структуре,

  2. , если у вас уже есть день с этим индексом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...