Сообщение Re[2]: Сборка мозаики от 05.11.2023 9:28
Изменено 05.11.2023 9:29 pva
Re[2]: Сборка мозаики
Здравствуйте, Sinclair, Вы писали:
pva>>Задача: максимально оперативно выдавать упорядоченные по индексу непрерывные куски заданной длительности. Кусок должен содержать все "типы".
S>Куски могут(должны) перекрываться?
S>Ну, то есть если у нас ровно один тип, то что должно выдаваться при таком входе для длительности 2?
S>
S>В целом, задача выглядит достаточно прямолинейно.
Насколько я понял алгоритм, то он реализует дискрeтный шаг наблюдения.
В таком случае мы можем просто разбить весь диаппазон на "окна" размера N и хранить только счетчики для каждого окна при условии что во входящем потоке нет дубликатов.
По входящему индексу просто определяем какому окну принадлежит и увеличиваем там счетчик. По достижению N — выдаем результат.
Давайте увеличу лимит до 4, чтобы показать некоторые примеры
pva>>Задача: максимально оперативно выдавать упорядоченные по индексу непрерывные куски заданной длительности. Кусок должен содержать все "типы".
S>Куски могут(должны) перекрываться?
S>Ну, то есть если у нас ровно один тип, то что должно выдаваться при таком входе для длительности 2?
S>
После выдачи AB индексы 01 больше не участвуют. Тоесть для 2-C-C -> ""S>0-0-A
S>1-0-B -> AB
S>2-0-C -> BC или ""?
S>3-0-D -> CD
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>В целом, задача выглядит достаточно прямолинейно.
Насколько я понял алгоритм, то он реализует дискрeтный шаг наблюдения.
В таком случае мы можем просто разбить весь диаппазон на "окна" размера N и хранить только счетчики для каждого окна при условии что во входящем потоке нет дубликатов.
По входящему индексу просто определяем какому окну принадлежит и увеличиваем там счетчик. По достижению N — выдаем результат.
Давайте увеличу лимит до 4, чтобы показать некоторые примеры
pva>>Задача: максимально оперативно выдавать упорядоченные по индексу непрерывные куски заданной длительности. Кусок должен содержать все "типы".
S>Куски могут(должны) перекрываться?
S>Ну, то есть если у нас ровно один тип, то что должно выдаваться при таком входе для длительности 2?
S>
После выдачи AB индексы 01 больше не участвуют. Тоесть для 2-0-C -> ""S>0-0-A
S>1-0-B -> AB
S>2-0-C -> BC или ""?
S>3-0-D -> CD
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+ в обоих типах