Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Логическая задача 
:(
    Опции темы
misty077
Дата 6.10.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.10.2010

Репутация: нет
Всего: нет



Здравствуйте! Помогите пожалуйста написать программу решения логической задачи на Strawberry Prolog.

6 человек - назовём их А, Б, В, Г, Д, Е - кандидаты на посты председателя, заместителя председателя и секретаря правления общества любителей логических задач. Но определить состав этой тройки оказалось не так-то легко. Судите сами: А не хочет входить в состав руководства, если Д не будет председателем. Б не хочет входить в состав руководства, если ему придётся быть старшим над В. Б не хочет работать вместе с Е ни при каких условиях. В не хочет работать, если в состав руководства войдут Д и Е вместе. В не будет работать, если Е будет председателем, или если Б будет секретарём. Г не будет работать с В или Д, если ему придётся подчиняться тому или другому. Д не хочет быть заместителем председателя. Д не хочет быть секретарём, если в состав руководства войдёт Г. Д не хочет работать вместе с А, если Е не войдёт в состав руководства. Е согласен работать только в том случае, если председателем будет либо он, либо Б. Как они решили эту проблему?
PM MAIL   Вверх
Грымзик
Дата 7.10.2010, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 7.10.2009

Репутация: 6
Всего: 6



Код

?-solve([A,B,C]),write("Predsedatel - "),write(A),
    write(" Zamestitel - "),write(B),write(" Sekretar - "),write(C),nl,fail.


member(H,[H|_]).
member(X,[_|Tail]):-member(X,Tail).

kandidati([X,Y,Z]):-L=["a","b","v","g","d","e"],member(X,L),member(Y,L),
    not(X=Y),member(Z,L),not(X=Z),not(Y=Z).

starshe(X,Y,[X,Y,_]).
starshe(X,Y,[X,_,Y]).
starshe(X,Y,[_,X,Y]).

solve(L):-kandidati(L),L=[X,Y,Z],
    (X="d" ; not(member("a",L))),
    (not(starshe("b","v",L)) ; not(member("b",L))),
    (not(member("e",L)) ; not(member("b",L))),
    (not(member("d",L)) ; not(member("e",L)) ; not(member("v",L))),
    (not(X="e"), not(Z="b") ; not(member("v",L))),
    (not(starshe("v","g",L)),not(starshe("d","g",L)); not(member("g",L))),
    not(Y="d"),
    (not(member("g",L)) ; not(Z="d")),
    (member("e",L) ; not(member("a",L)) ; not(member("d",L))),
    (L=["e",_,_] ; L=["b",_,_] ; not(member("e",L))).

PM MAIL   Вверх
misty077
Дата 7.10.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.10.2010

Репутация: нет
Всего: нет



Спасибо огромное!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.