Информация об изменениях

Сообщение Re[2]: Сборка мозаики от 05.11.2023 9:28

Изменено 05.11.2023 9:29 pva

Re[2]: Сборка мозаики
Здравствуйте, Sinclair, Вы писали:

pva>>Задача: максимально оперативно выдавать упорядоченные по индексу непрерывные куски заданной длительности. Кусок должен содержать все "типы".

S>Куски могут(должны) перекрываться?
S>Ну, то есть если у нас ровно один тип, то что должно выдаваться при таком входе для длительности 2?
S>

S>0-0-A
S>1-0-B -> AB
S>2-0-C -> BC или ""?
S>3-0-D -> CD

После выдачи AB индексы 01 больше не участвуют. Тоесть для 2-C-C -> ""

S>В целом, задача выглядит достаточно прямолинейно.

Насколько я понял алгоритм, то он реализует дискрeтный шаг наблюдения.
В таком случае мы можем просто разбить весь диаппазон на "окна" размера N и хранить только счетчики для каждого окна при условии что во входящем потоке нет дубликатов.
По входящему индексу просто определяем какому окну принадлежит и увеличиваем там счетчик. По достижению N — выдаем результат.

Давайте увеличу лимит до 4, чтобы показать некоторые примеры
Текущее состояние "кеша"
Тип 1: 1 2 3 4 5 6 7 8 . . . 12
Тип 2: . 2 3 4 . . 7 8 9 .  . 12
Входящий
Тип 1: 9 
Тип 2: 10 
Новое состояние
Тип 1: 1 2 3 4 5 6 7 8 9 .  . 12
Тип 2: . 2 3 4 . . 7 8 9 10 . 12
Результат: [] - потому что нет в обоих типах последовательности длины 4+

Входящий
Тип 2: 5 6
Новое состояние (промежуточное)
Тип 1: 1 2 3 4 5 6 7 8 9 .  . 12
Тип 2: . 2 3 4 5 6 7 8 9 10 . 12
Новое состояние
Тип 1: 1 .  . 12
Тип 2: . 10 . 12
Результат: [ 2 3 4 5 6 7 8 9 ] - непрерывная последовательность длины 4+ в обоих типах
Re[2]: Сборка мозаики
Здравствуйте, Sinclair, Вы писали:

pva>>Задача: максимально оперативно выдавать упорядоченные по индексу непрерывные куски заданной длительности. Кусок должен содержать все "типы".

S>Куски могут(должны) перекрываться?
S>Ну, то есть если у нас ровно один тип, то что должно выдаваться при таком входе для длительности 2?
S>

S>0-0-A
S>1-0-B -> AB
S>2-0-C -> BC или ""?
S>3-0-D -> CD

После выдачи AB индексы 01 больше не участвуют. Тоесть для 2-0-C -> ""

S>В целом, задача выглядит достаточно прямолинейно.

Насколько я понял алгоритм, то он реализует дискрeтный шаг наблюдения.
В таком случае мы можем просто разбить весь диаппазон на "окна" размера N и хранить только счетчики для каждого окна при условии что во входящем потоке нет дубликатов.
По входящему индексу просто определяем какому окну принадлежит и увеличиваем там счетчик. По достижению N — выдаем результат.

Давайте увеличу лимит до 4, чтобы показать некоторые примеры
Текущее состояние "кеша"
Тип 1: 1 2 3 4 5 6 7 8 . . . 12
Тип 2: . 2 3 4 . . 7 8 9 . . 12
Входящий
Тип 1: 9 
Тип 2: 10 
Новое состояние
Тип 1: 1 2 3 4 5 6 7 8 9 .  . 12
Тип 2: . 2 3 4 . . 7 8 9 10 . 12
Результат: [] - потому что нет в обоих типах последовательности длины 4+

Входящий
Тип 2: 5 6
Новое состояние (промежуточное)
Тип 1: 1 2 3 4 5 6 7 8 9 .  . 12
Тип 2: . 2 3 4 5 6 7 8 9 10 . 12
Новое состояние
Тип 1: 1 .  . 12
Тип 2: . 10 . 12
Результат: [ 2 3 4 5 6 7 8 9 ] - непрерывная последовательность длины 4+ в обоих типах