在Prolog遇到麻烦

时间:2018-04-23 01:37:15

标签: prolog

我正在尝试实施Prolog任务以便学习它:

  1. num_cred(X,Y):此函数应该列出一个列表 缩写作为输入(X),并输出学分数 当学生参加这些课程时获得(Y)。
  2. 课程(X,Y):此功能应以学生作为输入(X),和 输出该学生参加的所有课程的列表(Y)。
  3. pass2(X):此函数应以学生为输入,并输出 如果学生有基于num_cred(X)的30或更多ECTS,则为true。
  4. fail2(X):此函数应将学生作为输入并输出 如果学生的基于num_cred(X)的ECTS少于30,则为true。
  5. 终端输入输出对示例:

    Input                       Output
    
    num_cred([pai,qf,d],X).     30
    
    courses(alice,X).           [pai,qf,d]
    
    pass2(X).                   alice
    
    fail2(X).                   bob
    

    这是我到目前为止所做的事情:

    num_cred([], 0).
    num_cred([H|T], Sum) :- num_cred(T, Rest), course(H, P, C), Sum is C + Rest.
    courses(X,Y).
    pass2(X).
    fail2(X).
    
    /*Level 2 tests*/
    
    course(pai,inf,10).
    course(qf,eco,10).
    course(d,law,10).
    
    student(alice,ss).
    attend(alice,pai).
    attend(alice,qf).
    attend(alice,d).
    
    student(bob,ss).
    attend(bob,pai).
    

    你知道为什么我的num_cred规则不起作用吗?当我用num_cred([qf,pai],0)测试它时。我明白了:参数没有充分实例化。

    非常感谢任何有关这些规则的帮助/提示。

    非常感谢。

0 个答案:

没有答案