На самом деле, это не относится к SQL, и я сомневаюсь, что «шаблон разговора» - правильное имя, но я не мог придумать более подходящую подпись.
Для упрощения представьте, что вы получили огромный поток целых. Задача состоит в том, чтобы обнаружить шаблон A.{1;max_n}A
: int удовлетворяет шаблону, если за ним следует n (> 0) других целых, затем снова исходное int, тогда как n <= max_n. </p>
Пример:
...
1
4 <--
7 \
3 > n = 3
3 /
4 <--
2
...
Здесь int 4
повторяется с 3 произвольными интервалами между ними, поэтому для max_n <= 3 шаблон удовлетворяется для значения <code>4.
Вопрос в том, как определить, какие целые числа в огромном дампе данных следуют этому шаблону? В основном меня интересует сам алгоритм, но пример с SQL или C # также приветствуется.
Наивная идея, которую я придумал, состоит в том, чтобы сначала собрать список или все отдельные целые, а затем проверить шаблон для каждого из них простым способом, но это приведет к узкому месту в производительности.