Я сейчас пытаюсь немного узнать Пролог. В качестве упражнения я пытаюсь решить следующую загадку:Prolog - пытается решить текстовую головоломку
Эти правила даны:
*Every person that has neither a car nor a plane, has a bike.
*Every person that doesn't have a plane but has a bike, has a car
*Every person that doesn't have a plane but has a car, has a truck
*Every person that doesn't have a truck but has a boat, doesn't have a plane
*Every person that doesn't have a boat but has a plane, doesn't have a car
Теперь есть четыре человека:
*Person1 doesn't have a car but has a boat
*Person2 doesn't have a boat but has a plane
*Person3 doesn't have a plane but has a bike
*Person4 doesn't have a bike but has a car
Какой человек не имеет грузовик?
То, что я придумал до сих пор это:
doesnthave(car,pa).
has(boat,pa).
doesnthave(boat,pb).
has(plane,pb).
doesnthave(plane,pc).
has(bike,pc).
doesnthave(bike,pd).
has(car,pd).
has(bike,X) :- doesnthave(car,X),doesnthave(plane,X).
has(car,X) :- doesnthave(plane,X),has(bike,X).
has(truck,X) :- doesnthave(plane,X),has(car,X).
doesnthave(plane,X) :- doesnthave(truck,X),has(boat,X).
doesnthave(car,X) :- doesnthave(boat,X),has(plane,X).
Теперь это, кажется, не достаточно. Или это не способ решения таких головоломок в прологе?
Редактировать: Кажется, первые два утверждения противоречивы. Вместе они уступают: у каждого человека, у которого нет ни машины, ни самолета, есть машина. Я не уверен, есть ли разумное решение этого.
Как оказалось, в первых двух утверждениях есть противоречие. Вместе они дают: у каждого человека, у которого нет ни машины, ни самолета, есть машина. – tschaei