1
我試圖做兩件事。 (1)顯示現有列表的每個元素,以及(2)搜索列表以顯示包含該元素的所有名稱。序言:寫一個現有的列表中的每個元素
這裏有一些事實:
classes(hannes, [cs490, cs499, cs413]). % name has this list of classes
classes(tony, [ma330, ma211, ma250]).
classes(nicholas, [cs424, cs570, ma330]).
classes(pj, [ma211, ma250, ma285, cs424]).
classes(inga, [cs285, cs307, cs309]).
classes(christine, [ma285, ma211, ma330]).
classes(lisa, [cs424, cs413, cs490]).
classes(marty, [cs570, cs424]).
而且,這裏是我的規則至今:
taking(N,C) :- % student Name N is taking class C
classes(N,Cs),
[C|T] = Cs.
此刻,我知道這只是取列表頭,並顯示它。我需要顯示列表中的每一項(一次一行,如果容易做到,但不重要)。但是,我也需要能夠做到相反。如果查詢一門課程(ma330),我希望它顯示所有具有該課程的學生。
查詢示例1:
?- taking(nicholas, Classes).
Classes = [cs424, cs570, ma330] ;
OR
?- taking(nicholas, Classes).
Classes = cs424 ;
Classes = cs570 ;
Classes = ma330 ;
查詢示例2:
?- taking(Names, ma330).
Names = tony ;
Names = nicholas ;
Names = christine ;
我會繼續尋找一個解決,但如果有人能幫助,將不勝感激。
謝謝!!!
謝謝你的建議,但並沒有真正幫助我。 – user1830705