Вверх ↑
Ответов: 1535
Рейтинг: 176
#1: 2010-10-21 11:20:03 ЛС | профиль | цитата
Я – киномеханик и мне нужно автоматизировать работу с серийными номерами кинобилетов.

   1. В данной задаче необходимо последовательно присоединить каждую строку из колонки B к соответствующим значениям колонки A. Чтобы в результате получилось, как в C. При этом видно, что значения из B не пересекаются, а выходят за пределы значений указанных в A.

Таблица серийных номеров
ABC
аб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

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0