Пролог - построить список при условии других переменных - PullRequest
0 голосов
/ 29 сентября 2019

Я новичок в Прологе, и я изо всех сил пытаюсь продвинуться вперед с этой проблемой.

Я хотел бы составить список уровней, которым данный учитель назначен для определенного результата. Затем я хотел бы посчитать дискретное количество уровней, которые появляются. Очевидно, что приведенные ниже предикаты 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).')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...