|
Преобразовать дерево значений к иному виду | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
Vasilisk
26.05.15
✎
15:33
|
Добрый день господа и дамы есть непростая, но интересная задачка, не прошу что бы ее решили за меня, но было бы интересно почитать мысли по вариантам реализации.
Условия задачи: Есть дерево с колонками (Номенклатура, Количество, Операция) суть дерева в отражении состава конкретной номенклатуры а также операции над ней для ее получения. Пример: Хлеб-1 шт Опер. Запекать -тесто- 1 шт Опер. Месить -мука 1 кг Опер. Взять из заначки -соль 100 мг Опер. Взять из заначки -сахар 3 кг Опер. Взять из заначки -соль 30 мг Опер. Взять из заначки Сама задача: Необходимо преобразовать данные дерева к другому виду вот к такому: Опер. Взять из заначки- -мука 1 кг -соль 130 мг -сахар 3 кг Опер. Месить- -тесто- 1 шт -мука 1 кг -соль 100 мг -сахар 3 кг Опер. Запекать- Хлеб-1 шт -тесто- 1 шт -Соль- 30 гр То есть суть в том что бы получить пошаговые пары изделие-материал в разрезе операций, наверное как то так, при том что структура дерева идет по составу а не по порядку операций. Непосредственная трудность с которой я столкнулся это свертка по количеству в дереве(Обратите внимание на соль), так как дерево в работе будет значительно глубже, то применим только рекурсивный подход. |
||||||||||||||||
1
Asmody
26.05.15
✎
15:40
|
хорошая задача
|
||||||||||||||||
2
Asmody
26.05.15
✎
15:44
|
только я не понимаю, зачем у тебя в ветке Месить появились мука, соль и сахар
|
||||||||||||||||
3
Vasilisk
26.05.15
✎
15:45
|
Я в курсе вот ломаю свои извилины над ней пока в голову приходит преобразование в табзнач по полям Номенклатура, НоменклатураРодитель, Количество, Операция дальше много раз и по разному сворачивать. Но пока не понимаю ка я это сделаю.
Я тебе хлеба сладкого принес |
||||||||||||||||
4
ЧеловекДуши
26.05.15
✎
15:45
|
Изврат
Уберите годовалого ребенка с кухни |
||||||||||||||||
5
Asmody
26.05.15
✎
15:45
|
я бы начал с разнесения понятий:
Операция —> Объект Объект —> Состав |
||||||||||||||||
6
Vasilisk
26.05.15
✎
15:46
|
Мука появилась так как для рабочих необходима пара Промеж изделие и материал, что бы тот понимал что ему с тем что он взял делать. У муки и соли материала нет поэтому там пусто и операция просто достать это.
|
||||||||||||||||
7
Vasilisk
26.05.15
✎
15:48
|
(5) Что ты понимаешь под разнесением понятий? Понятия и так достаточно просты Номенклатура Сколько ее и что с ней делать
|
||||||||||||||||
8
Бледно Золотистый
26.05.15
✎
15:55
|
Для каждой операции будет 2 уровня, текущий и предыдущий, кроме самого первого - взять из заначки?
|
||||||||||||||||
9
Asmody
26.05.15
✎
15:56
|
(7) Я же нарисовал! Собрать где-то отдельно отношение "Операция->Объект" и отдельно "Объект->Состав"
|
||||||||||||||||
10
Ващета
26.05.15
✎
15:59
|
В Дерево в ТЗ, ТЗ - в запрос, запросом получать с группировкой Операция
|
||||||||||||||||
11
Vasilisk
26.05.15
✎
15:59
|
(8) Уровни не уровни это может быть просто таблица с группировкой:
ГРуппировка(Операция) Изделие(Эта штука должна сворачиваться в рамках операции) Материал (Эта штука должна сворачиваться в рамках изделия и операции) Материал (Эта штука должна сворачиваться в рамках изделия и операции) |
||||||||||||||||
12
Vasilisk
26.05.15
✎
16:00
|
(10) Как раз сейчас этот вариант рассматриваю. Если получиться исходный код выложу.
|
||||||||||||||||
13
Asmody
26.05.15
✎
16:01
|
(10) Потеряется состав объектов
|
||||||||||||||||
14
Vasilisk
27.05.15
✎
10:21
|
Пока логическое решение:
1. Переводим дерево значений в таб. значений. вида(Изделие кол изделия, кол элементов состав, материал кол материала) 2. Выделяем операции. 3. Отбираем строки таб. значений по операциям. 4. Скопируем строки таб. знач в новую таб. знач. Производим свертку по изделию и кол элементов состав с суммой по количеству. затем количество изделия делим на кол состав. 5. Из первой таб. знач отбираем строки с изделием и операцией. Сворачиваем полученное в новой таб знач с суммой по количеству материала. Кто найдет проблему, пишите. Срочно иду патентовать данный рецепт |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |