Я новичок в Прологе, и я изо всех сил пытаюсь продвинуться вперед с этой проблемой.
Я хотел бы составить список уровней, которым данный учитель назначен для определенного результата. Затем я хотел бы посчитать дискретное количество уровней, которые появляются. Очевидно, что приведенные ниже предикаты append()
- полная ерунда, но они здесь, чтобы показать мой общий подход (и насколько я неосведомлен о том, как все это должно работать). Я перепробовал много итераций, но с этим снимаю в темноте.
Спасибо!
var program =
`:- use_module(library(lists)).
teacher_level(mike,a1).
teacher_level(mike,a2).
teacher_level(mike,b1).
teacher_level(phil,b1).
teacher_level(phil,b2).
teacher_level(phil,c1).
append([], List2, Result) :-
Result = List2,
!.
append(List1, List2, Result) :-
List1 = [Head1 | Tail1],
Result = [HeadR | TailR],
Head1 = HeadR,
append(Tail1, List2, TailR).
append(L,List):-
append([L],_,List).
table([[T1,L1],[T2,L2],[T3,L3],[T4,L4]],List):-
teacher_level(T1,L1),
teacher_level(T2,L2),
teacher_level(T3,L3),
teacher_level(T4,L4),
append([L],List):-
teacher_level(mike,L).
`
session.consult( program );
session.query('table([[T1,L1],[T2,L2],[T3,L3],[T4,L4]],List).')