Добрый день господа и дамы есть непростая, но интересная задачка, не прошу что бы ее решили за меня, но было бы интересно почитать мысли по вариантам реализации.
Условия задачи:
Есть дерево с колонками (Номенклатура, Количество, Операция) суть дерева в отражении состава конкретной номенклатуры а также операции над ней для ее получения. Пример:
Хлеб-1 шт Опер. Запекать
-тесто- 1 шт Опер. Месить
-мука 1 кг Опер. Взять из заначки
-соль 100 мг Опер. Взять из заначки
-сахар 3 кг Опер. Взять из заначки
-соль 30 мг Опер. Взять из заначки
Сама задача: Необходимо преобразовать данные дерева к другому виду вот к такому:
Опер. Взять из заначки-
-мука 1 кг
-соль 130 мг
-сахар 3 кг
Опер. Месить-
-тесто- 1 шт
-мука 1 кг
-соль 100 мг
-сахар 3 кг
Опер. Запекать-
Хлеб-1 шт
-тесто- 1 шт
-Соль- 30 гр
То есть суть в том что бы получить пошаговые пары изделие-материал в разрезе операций, наверное как то так, при том что структура дерева идет по составу а не по порядку операций.
Непосредственная трудность с которой я столкнулся это свертка по количеству в дереве(Обратите внимание на соль), так как дерево в работе будет значительно глубже, то применим только рекурсивный подход.
Пока логическое решение:
1. Переводим дерево значений в таб. значений. вида(Изделие кол изделия, кол элементов состав, материал кол материала)
2. Выделяем операции.
3. Отбираем строки таб. значений по операциям.
4. Скопируем строки таб. знач в новую таб. знач. Производим свертку по изделию и кол элементов состав с суммой по количеству. затем количество изделия делим на кол состав.
5. Из первой таб. знач отбираем строки с изделием и операцией. Сворачиваем полученное в новой таб знач с суммой по количеству материала.
Кто найдет проблему, пишите.
Срочно иду патентовать данный рецепт
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.