|
Предложите алгоритм укрупнения информации о скидках | ☑ | ||
---|---|---|---|---|
0
Jackman
18.05.12
✎
16:45
|
На входе имеется таблица значений, в которой указана номенклатура и процент скидки. Номенклатура может быть как в виде элементов, так и папок. Нужно укрупнить данные о скидках, например:
Имеем такой справочник номенлатуры: Папка Фрукты |_Подпапка Яблоки ||_Элемент Сладкие яблоки ||_Элемент Кислые яблоки |_Подпапка Груши ||_Элемент Спелые груши ||_Элемент Переспелые груши Во входной ТЗ имеем такие данные о скидках: Папка Фрукты - скидка 20% Элемент Сладкие яблоки - скидка 23% Подпапка Груши - скидка 20% Результатом расчета должны получить: Папка Фрукты - скидка 20% Элемент Сладкие яблоки - скидка 23% Информация о скидке на подпапку Подпапка Груши избыточна, ее можно убрать. Еще пример, при той же структуре справочника. Во входной ТЗ имеем такие данные о скидках: Элемент Сладкие яблоки - скидка 23% Элемент Кислые яблоки - скидка 23% Результатом расчета должны получить: Подпапка Яблоки - скидка 23% Т.е. мы укрупнили значения скидок для элементов подпапки Яблоки до общей скидки на всю подпапку. Предложите, пожалуйста, алгоритм, как это оптимально можно обработать, если: - первичная таблица значений может иметь 150-200 элементов и папок; - справочник "Номеклатура" имеет неограниченное число уровней, но как правило, одна "ветка" имеет не более 6ти уровней. |
|||
1
DrShad
18.05.12
✎
16:51
|
запихнуть ТЗ в дерево значений, по каждому уровню просчитать среднюю скидку, потом при обходе, если по текущей строке процент равен проценту по родителю, то не писать его
|
|||
2
Jackman
18.05.12
✎
16:59
|
(1) Хорошо, но, если во втором примере во входной ТЗ указаны только элементы папки, но нет самой папки. Т.е., когда указаны все элементы папки, но не указана сама папка
|
|||
3
Jackman
18.05.12
✎
17:06
|
(1) Может быть и такой вариант, когда:
Во входной ТЗ имеем такие данные о скидках: Подпапка Яблоки- скидка 30% Подпапка Груши - скидка 30% Результатом расчета должны получить: Подпапка Фрукты - скидка 30% |
|||
4
pumbaEO
18.05.12
✎
17:08
|
(2) тогда используй эти элементы. Искать верхний уровень дело неблагодарное.
Что будешь делать когда | Папка1 ||Подпака1 23% |||Элемент1 23% |||ПодПодпапка1 15% ||||Элемент 2 16% |
|||
5
Jackman
18.05.12
✎
17:20
|
(4) Ну тут только такая оптимизация:
| Папка1 - убираем ||Подпака1 23% |||Элемент1 23% - убираем |||ПодПодпапка1 15% ||||Элемент 2 16% Я не сказал, что во входной ТЗ не может быть позиции с нулевой скидкой |
|||
6
Stim
18.05.12
✎
17:21
|
посмотреть, как это сделано в Рознице - не предлагать?
|
|||
7
DrShad
18.05.12
✎
17:22
|
с нулевой и записывать не нужно, если она нижнего уровня
|
|||
8
Ненавижу 1С
гуру
18.05.12
✎
17:27
|
а если так:
Фрукты |_ Яблоки |_ Груши |_ Сливы Яблоки - 20% Груши - 20% Сливы -30% то как упростить? до Фрукты - 20% Сливы -30% или оставить как есть? |
|||
9
Jackman
18.05.12
✎
17:33
|
(8) Тут упрощения не будет, т.к. все значения отличаются
|
|||
10
Jackman
18.05.12
✎
17:37
|
(6) Здесь не расчет скидки, а оптимизация информации о скидках.
Например, из нескольких десятков записей с группами и элементами удалось тот же набор информации сделать менее, чем 10ю записями. |
|||
11
Jackman
18.05.12
✎
17:52
|
(8) Хотя, нет, я ошибся. Нужно упростить до:
Фрукты - 20% Сливы -30% |
|||
12
Jackman
18.05.12
✎
17:53
|
Т.е. это означает, что базовая скидка на фрукты 20%, а на сливы спец скидка в 30%. Извините, тупал в (9)
|
|||
13
vinogradъ
18.05.12
✎
17:55
|
Фрукты
|_ Яблоки |_ Груши |_ Сливы |_ Бананы |_ Кокосы Яблоки - 20% Груши - 20% Сливы -30% Бананы -40% Кокосы -40% а здесь тогда согласно (11) и (12)? |
|||
14
Jackman
18.05.12
✎
18:00
|
(13) Вряд ли будет именно такая ситуация, но, в принципе, верны два решения:
Фрукты 20 |_ Сливы 30 |_ Бананы 40 |_ Кокосы 40 и Фрукты 40 |_ Яблоки 20 |_ Груши 20 |_ Сливы 30 |
|||
15
Jackman
18.05.12
✎
18:06
|
+ (13) Эти решения возможны, при условии, что справочнике "Номенклатура" нет других подпапок в папке "Фрукты", которые не упоминаются во входной ТЗ, например, папка "Апельсины", которые идут без скидки
|
|||
16
pumbaEO
18.05.12
✎
18:20
|
Элемент | Уровень | Процент
Свернул по уровню с различными процентами. Выбрал где один и тот же уровень > 1 раз встречается, определил, какие элементы удалять, какие оставить. Как-то так... |
|||
17
Jackman
18.05.12
✎
18:30
|
(16) Если это будет один и тот же номер уровня, но в разных "ветках" номенклатурных групп?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |