2012-05-15 3 views
0

У меня есть следующие правила:Прологе список вопрос

/*The structure of a subject teaching team takes the form: 
    team(Subject, Leader, Non_management_staff, Deputy). 
Non_management_staff is a (possibly empty) list of teacher 
structures and excludes the teacher structures for Leader and 
Deputy. 
teacher structures take the form: 
teacher(Surname, Initial, 
     profile(Years_teaching,Second_subject,Club_supervision)). 
    Assume that each teacher has his or her team's Subject as their 
main subject.*/ 

team(computer_science,teacher(may,j,profile(20,ict,model_railways)), 
[teacher(clarke,j,profile(32,ict,car_maintenance))], 
teacher(hamm,p,profile(11,ict,science_club))). 

team(maths,teacher(vorderly,c,profile(25,computer_science,chess)), 
[teacher(o_connell,d,profile(10,music,orchestra)), 
    teacher(brankin,p,profile(20,home_economics,cookery_club))], 
teacher(lynas,d,profile(10,pe,football))). 

team(english,teacher(brewster,f,profile(30,french,french_society)), 
[ ], 
teacher(flaxman,j,profile(35,drama,debating_society))). 

team(art,teacher(lawless,m,profile(20,english,film_club)), 
[teacher(walker,k,profile(25,english,debating_society)), 
    teacher(brankin,i,profile(20,home_economics,writing)), 
    teacher(boyson,r,profile(30,english,writing))], 
    teacher(carthy,m,profile(20,music,orchestra))). 

Я должен вернуть первоначальную и фамилию любого лидера в команде, которая содержит в общей сложности 2 или более преподавателей ИКТ в качестве второго предмета ,

Я новичок в прологе, поэтому не уверен в этом. Кроме того, я вернул результаты правильно, но он возвращается 3 раза.

Любая помощь в этом была бы принята с благодарностью.

Кроме того, мои аплозии, если это ужасно легко.

ответ

0

Вы не указали код, который вы используете, чтобы найти этих учителей, поэтому я не могу сказать точно, но если в качестве второго предмета (например, computer_science) была команда с 3 членами w/ict, тогда было бы 3 способа найти 2 (AB, AC и BC), что объясняло бы ваши многочисленные результаты. Но говоря, как изменить свой код для исправления, который потребует, чтобы код был исправлен.

+0

ответ (Имя, Init): - команда (_, Свинец, персонал, Dep), \t Свинец = учитель (Имя, Init, _), \t Person = учитель (_, _, профиль (_, ИВТ , _)), \t участник (Лицо, [Lead, Dep | Staff]), \t участник (учитель (_, _, профиль (_, ict, _)), [Lead, Dep | Staff]). –

Смежные вопросы