Показать сообщение отдельно

  #2  
Старый 19.02.2006, 15:07
Jonathan Allen
Познающий
Регистрация: 21.03.2005
Сообщений: 71
Провел на форуме:
516278

Репутация: 15
По умолчанию

Создаешь в SQL неколько таблиц с ключами и группами, таблицы групп, настраиваешь группы, связи, а потом фуячишь select с кучей join и получаешь результат

domains
loc = first; second; middle; third; last

predicates
left_neighbor(loc,loc)
next_to(loc,loc)
is_not(loc,loc)
first_to(loc,loc)
differ(loc,loc,loc,loc,loc)

clauses
left_neightbor(last,third).
left_neightbor(third,middle).
left_neightbor(middle,second).
left_neightbor(second,first).

next_to(x,y) :-
left_neightbor(x,y).
next_to(x,y) :-
left_neightbor(y,x).

right_to(x,y) :-
left_neightbor(x,y).
right_to(x,y) :-
left_neightbor(x,z), right_to(z,y).

is_not(x,y) :-
right_to(x,y).
is_not(x,y) :-
right_to(y,x).

differ(x1,x2,x3,x4,x5) :-
is_not(x1,x2), is_not(x1,x3), is_not(x1,x4), is_not(x1,x5),
is_not(x2,x3), is_not(x2,x4), is_not(x2,x5),
is_not(x3,x4), is_not(x3,x5),
is_not(x4,x5).

goal
Englishmen = Redhouse, % 1
Swede = Dogowner, % 2
Dutch = Teadrinker, % 3
left_neightbor(Greenhouse,Whitehouse), % 4
Coffeedrinker = Greenhouse, % 5
Pallmallsmoker = Birdyowner, % 6
Milkdrinker = middle, % 7
Dunhillsmoker = Yellowhouse, % 8
Norwegian = first, % 9
next_to(Marlborosmoker,Catowner), % 10
next_to(Dunhillsmoker,Horseowner), % 11
Winfieldsmoker = Beerdrinker, % 12
next_to(Norwegian,Bluehouse), % 13
German = Rothmanssmoker, % 14
next_to(Marlborosmoker,Waterdrinker), % 15
differ(Greenhouse,Yellowhouse,Redhouse,Whitehouse,
Bluehouse), % дома разные
differ(Fishowner,Catowner,Horseowner,Birdyowner,Do
gowner), % жывотные тоже разные
differ(Beerdrinker,Milkdrinker,Teadrinker,Coffeedr
inker,Waterdrinker), % напитков адинаковых нет
differ(Englishman,Swede,Norwegian,German,Dutch), % никакого космополитизъма
differ(Dunhillsmoker,Pallmallsmoker,Marlborosmoker
,Winfieldsmoker,Rothmanssmoker). % ахтунг!

Желтый. Синий... Красный. Зеленый Белый
Норвежe Датчанин Англичан Немец.. Швед
Кот.... Лошадь.. Птичка.. Рыбка.. Собака
Вода... Чай..... Молоко.. Кофе... Пиво
Dunhill Marlboro PallMall Rotmans Winfield