2013-11-24 48 views
0

知識表示:Prolog的SWI列表建立

student('John','f214','A'). 
student('John','f222','B'). 
student('John','f213','C'). 
student('John','f343','D'). 

subject(f214,3). 
subject(f222,3). 
subject(f213,3). 
subject(f343,3). 

在序言SWI給定的知識表示如何創建課程[F214,F222,F213,F343]和相應的等級[ 'A' 的名單列表,「B」,「C」,「d」]

+1

我不明白怎麼課程將被分配一個等級,是不是某種像聚集那些參加過課程的平均年級學生T' – rano

回答

0

您可以使用findall/3

?- findall(Course, subject(Course, _), Courses). 
Courses = [f214, f222, f213, f343]. 

?- findall(Grade, student(_,Grade,_), Grades). 
Grades = [f214, f222, f213, f343]. 

?- findall(course_grade(Course, Grade), (subject(Course,_), student(_,Course,Grade)), CoursesGrades). 
CoursesGrades = [course_grade(f214, 'A'), course_grade(f222, 'B'), course_grade(f213, 'C'), course_grade(f343, 'D')].