Список дочерних элементов в дереве - PullRequest
0 голосов
/ 13 октября 2018

В настоящее время у меня есть набор фактов о компонентах

% componente(ElementX, ElementY, Qty)
% ElementY is used in the composition of Elementx in quantity Qty

componente(bicicleta,quadro,1).
componente(bicicleta,roda,2).
componente(bicicleta,conjunto_travagem,1).
componente(bicicleta,conjunto_transmissao,1).
componente(bicicleta,conjunto_selim,1).
componente(bicicleta,direccao,1).
componente(quadro,tubo_superior,1).
componente(quadro,tubo_diagonal,1).
componente(quadro,tubo_selim,1).
componente(quadro,escora_diagonal,1).
componente(quadro,escora_horizontal,1).
componente(quadro,forqueta_frontal,1).
componente(roda,pneu,1).
componente(roda,aro,1).
componente(roda,valvula,1).
componente(roda,cubo,1).
componente(roda,aperto_rapido,1).
componente(roda,raio,30).
componente(conjunto_travagem,travao_direito,1).
componente(conjunto_travagem,travao_esquerdo,1).
componente(travao_esquerdo,manete,1).
componente(travao_esquerdo,cabo,1).
componente(travao_esquerdo,bicha,1).
componente(travao_esquerdo,disco,1).
componente(travao_esquerdo,pastilha,2).
componente(travao_direito,manete,1).
componente(travao_direito,cabo,1).
componente(travao_direito,bicha,1).
componente(travao_direito,disco,1).
componente(travao_direito,pastilha,2).
componente(conjunto_transmissao,pedaleiro,1).
componente(pedaleiro,pedal,1).
componente(pedaleiro,braco_pedal,1).
componente(pedaleiro,rolamento,1).
componente(pedaleiro,prato,1).
componente(conjunto_transmissao,corrente,1).
componente(conjunto_transmissao,desviador_traseiro,1).
componente(conjunto_transmissao,desviador_dianteiro,1).
componente(conjunto_transmissao,cassete,1).
componente(conjunto_transmissao,mudancas_dianteira,1).
componente(mudancas_dianteira,manete_dianteira,1).
componente(mudancas_dianteira,bicha,1).
componente(mudancas_dianteira,cabo,1).
componente(conjunto_transmissao,mudancas_traseira,1).
componente(mudancas_traseira,manete_traseira,1).
componente(mudancas_traseira,bicha,1).
componente(mudancas_traseira,cabo,1).
componente(conjunto_selim,selim,1).
componente(conjunto_selim,espigao,1).
componente(conjunto_selim,aperto_rapido_selim,1).
componente(direccao,caixa_direccao,1).
componente(direccao,guiador,1).
componente(direccao,avanco_guiador,1).

Некоторые элементы будут иметь стоимость, связанную с ними в виде

% cost(Element, Cost)

Я пытаюсь написатьПредикат: следующий предикат

% calc_cost(Element, TCost, LEleWCost)

, который задан для элемента, будет рассчитывать общую стоимость (TCost) этого элемента и всех остальных, входящих в его состав.LEleWCost - это список элементов, стоимость которых не связана с ними.

Моя текущая проблема заключается в том, чтобы получить все элементы, входящие в состав Element, как мне этого добиться?

Идея для calc_cost состояла в том, чтобы перебрать список, содержащий Element и все его дочерние элементы, и либо рассчитать их стоимость и увеличить TCost, либо добавить их в список элементов без затрат, но в настоящее время я застрял при попытке получитьэтот список и интересно, есть ли более легкий способ достичь этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...