#prolog
#пролог
Вопрос:
Это мой файл prologdb
trip_to_nation(X,Y,T):- % X is a city ,T is a list
list_airport(Y,A),
write(A),% [dublin,cork] list
all_trip(X,A,T). % here A is an atom and T is the list
Я хочу передавать значение списка одно за другим в all_trip, чтобы получить данные, как это возможно?
Что-то вроде list[0],list[1]
и получить данные в списке.Спасибо
Комментарии:
1. Вам нужно уточнить, что делают предикаты
list_airport
и.all_trip
2. обновлено, @DavidTonhofer
3. Это может помочь:
member/2
будет выполнять обратный переход по содержимому списка. Прямой доступ с помощью индексации выполняется (неэффективно)nth0/3
.4. Я пробовал, это не работает
all_trip(X,member(One, [One]),T).
@DavidTonhofer5. Я вижу:
maplist(all_trip(X,A), Ts).
будет вызыватьall_trip(X,A,T)
для каждогоT
в спискеTs
. Смотритеmaplist/2
Ответ №1:
Теперь T будет иметь все переходы от X к элементам A.
maplist(all_trip(X), A, T).
Если вы хотите, чтобы trips представляли собой несколько решений, а не их список, сработает следующее.
member(City, A), all_trip(X, City, T).
Комментарии:
1. но как передать это в all_trip()?
2. Что именно
all_trip
делает? Можете ли вы поделиться этим кодом?3. /** * Все поездки между двумя городами * * найдите все поездки между C (первый город) и L(второй город) и поместите затем в T */ all_trip(C,L,T): — findall(Ci, trip(C,L,any,Ci), T).
4. all_trip предоставляет список всех поездок между двумя городами C и L
5. @gANDALF: я не уверен в остальной части кода, но моего ответа на обновление должно хватить на этот конкретный вопрос.