Пролог - добавление в список рекурсивно - PullRequest
2 голосов
/ 19 декабря 2011

Я пытаюсь написать правило, которое просматривает базу данных фактов, складывает числа из каждого факта вместе и сохраняет его в списке: если быть конкретным, это вопрос:

Записьправило, основанное на ответе на вопрос 5, которое возвращает / показывает, сколько времени займет поездка между двумя станциями.

Ответ на вопрос 5:

time(Station1,Station2) :- overground(Station1,Station2,Time),
    overground(Station1,_,Time),
    overground(_,Station1,Time).
time(Station2,Station1) :- overground(Station2,Station1,Time),
    overground(Station2,_,Time),
    overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station1,Station3,Time),
    time(Station3,Station2);
    overground(Station1,Station3,Time),
    time(Station2,Station3).
time(Station1,Station2) :- overground(Station1,_,Time),
    overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station2,_,Time),
    overground(_,Station1,Time).

Я попытался добавить список и добавитьэто время, но не повезло.

* да это точка с запятой.

Есть еще один файл, который содержит все наземные станции и время в формате "надземный (X, Y, Z) «.т.е. надземный (кентон, южный, 2).который показывает station1, station2 и время, необходимое для перехода от 1 до 2.

Я пытаюсь просмотреть всю базу данных, найти X и Y (что делает вопрос 5), а затем сложить всеZ находится между двумя станциями и помещает их в список.

1 Ответ

1 голос
/ 19 декабря 2011

Ну, если честно, ответ на ваш вопрос 5 требует некоторого рефакторинга.Я начну с того, что дам вам ссылки на вопросы о той же теме .

Как только вывыяснили, как справиться с такой рекурсией, ответ на ваш текущий вопрос должен быть простым.

...