Пересечение списков в прологе - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в Прологе, я пытался написать 5 списков и получить пересечение между ними, как я могу этого добиться, ** списки будут определены в файле, поэтому он не будет введен пользователем.

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


простое описание части моего проекта для большей ясности ... отобразятся меню и пользователь выберет одно из каждого сезона, погодных условий, случая ... списки будут о том, какая одежда подходит

так что дляНапример, пользователь выбирает для каждого из них «зимний» сезон, «дождливые» погодные условия и списки «свадебных» случаев

    rainy([take_umbrella, jacket,coat]).
winter([jacket,sweater,coat,take_umbrella]).
wedding ([take_umbrella,dress,jacket,coat]).

, поэтому пересечение формы результата будет take_umbrella, jacket, coat

я надеюсь, что моя идея ясна, и спасибо заранее :))

1 Ответ

0 голосов
/ 21 ноября 2018

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

?- winter(Winter),
   rainy(Rainy),
   wedding(Wedding),
   intersection(Winter, Rainy, Winter_and_Rainy),
   intersection(Winter_and_Rainy, Wedding, Winter_and_Rainy_and_Wedding).
Winter = [jacket, sweater, coat, take_umbrella],
Rainy = [take_umbrella, jacket, coat],
Wedding = [take_umbrella, dress, jacket, coat],
Winter_and_Rainy = Winter_and_Rainy_and_Wedding, Winter_and_Rainy_and_Wedding = [jacket, coat, take_umbrella].

Но если вы не знаете, сколько списков вы можете создать и уменьшить.

?- % make some lists L1, L2, ..., Ln,
   foldl(intersection, [L1, L2, ..., Ln-1], Ln, Intersection).

Когдазимой на дождливую свадьбу вы уменьшаете как:

?- winter(Winter), rainy(Rainy), wedding(Wedding),
   foldl(intersection, [Winter, Rainy], Wedding, Intersection).
Winter = [jacket, sweater, coat, take_umbrella],
Rainy = Intersection, Intersection = [take_umbrella, jacket, coat],
Wedding = [take_umbrella, dress, jacket, coat].

Вы видите, что порядок элементов - это изменение, но это проблема?Для меня нет проблем.

...