1. В данной задаче необходимо последовательно присоединить каждую строку из колонки B к соответствующим значениям колонки A. Чтобы в результате получилось, как в C. При этом видно, что значения из B не пересекаются, а выходят за пределы значений указанных в A.
Таблица серийных номеров
A | B | C | ||
аб999401-999555 | аб999558 | аб999401-999915 | ||
аб999557 | пх999402 | аб999917 | ||
аб999559-999900 | аб999556 | аб999920-999950 | ||
аб999910-999915 | аб999901-999909 | пх999401-999404 | ||
аб999917 | пх999406-999418 | пх999406-999418 | ||
аб999920-999950 | пх999404 | |||
пх999401 | ||||
пх999403 |
Из представленного выше видно, что в строке значение аб999557 представляет из себя единственное число (билет), в отличие от диапазонного аб999401-999555, где индекс «аб» делает эти числа неповторимыми по отношению к другим. Хочу ещё отметить, что индекс всегда двузначный, а значение числа шестизначно.
2. Во второй задаче необходимо выполнить обратное действие, т.е. из таблицы C последовательно вычесть (разъединить) значения из B, чтобы в результате получилось представление из A.
Представленные задачи не являются ребусами, которые я кстати очень люблю, это готовые результаты, где отсутствует лишь решение. Найдите логику решения, кратчайший путь, как в алгебре, а значит и высокую производительность, вот и всё
Признаюсь честно, решить эти задачи мне частично удалось путём перебора значения числа, но это сводит производительность на нет, а при работе с числом 999999 и вовсе умирает (виснет).
Изменил содержание таблицы в процессе обсуждения.
1. Включил разрыв в последовательность значений группы "аб"- аб999917
2. Изменил значение пх999405-999418, на пх999406-999418