Re: ADO.Net + C#
Короче, такая хрень ...
Допустим есть некоторая структура описывающая диапазон целых чисел.
Также есть контейнер экземпляров структур.
Грубо говоря нечто наподобие:
{ range( 0, 5 ) , range ( 2, 6 ), range ( -1, 8 ) }
Нужно иметь возможность проводить операцию слияния включающихся, совпадающих, пересекающихся и соседних диапазонов и делать это каждый раз, когда в контейнер добавляется очередной диапазон.
Если провести эту операцию с данными выше, то получим:
{ range ( - 1, 8 ) }
Далее: { range ( - 1, 8 ) } + range( 6, 12 ) получим (пересечение):
{ range ( -1, 12) }
Далее: { range ( -1, 12) } + range ( 17, 20) дает (пересечения нет - новый элемент с контейнере) :
{ range ( -1, 12) , range( 17, 20) }
или { range ( -1, 12) } + range (13, 20) (12 и 13 - соседние числа - склеиваем диапазон):
{ range ( -1, 20) }
Далее: { range ( -1, 20) } + range ( -1, 20 ) дает (совпадение) { range ( -1, 20) }
Как-то так.
=============
На вход подается контейнер и новый диапазон для вставки.
На выходе - контейнер с диапазонами, объединенными в соотв. с содержимым нового вставленного диапазона.
=============
Собственно вопросы:
1. Может встречали реализацию такой фигни где-то?
2. Может быть стандартные методы есть?
3. Если нет ни того, ни другого, то подкиньте какой-нибудь ресурс, где подходящие (похожие) алгоритм ы могут быть описаны.
У меня такое ощущение, что это полная лажа и решается совершенно тривиально, но вот туплю сижу ... .
Пропаганда нацелена на удобрение дерева, на котором растет плод нашего воображения. (с)
При каждом пробитии дна открываются новые горизонты развития. (народная мудрость)
...зато рыночек, джинсы, жвачка, колбаса и можно заграницу ездить без отчета коммисару в райком.. oh, wait...
Цель капитализма всегда одна: Эксплуатация. Гнет. Война. Чтоб народных масс нищета и гибель ему несли максимальную прибыль!
Last edited by Leledinn; 20.05.2011 at 14:48.