0

我不想把整个家庭作业和我所有的代码都发布到网上,所以我只会把具体问题放在哪里。如有必要,我可以添加和解释更多。

但本质上,我编写了我的代码,然后我的教授代码对其进行了测试。我的代码按照他的指示在逻辑上工作。在我的代码的这个特定片段中,我应该检查它是否有效。在第一个和最后一个参数中,列表表示[传教士、食人族、离岸近还是远]。我的代码工作并通过了所有测试,除非我的教授通过_了 M1 和 M2。

我的代码

move([M1,_,L1],onemissionary,[M2,_,L2]) :-
    L1 == near, L2 == far, M1 =:= M2+1;
    L1 == far, L2 == near, M2 =:= M1+1.

他的代码调用我的代码并导致错误。

move([_,2,near],onemissionary,[_,1,far]).

错误:

=:=/2: Arguments are not sufficiently instantiated

所以我知道它正在崩溃,因为我老师的测试代码正在抛出一个_for M1M2因此它在尝试执行时出错_ =:= _ + 1。但是,我无法更改他的测试代码,那么我该如何更改我的代码,而不是出现错误,而是返回失败?

4

0 回答 0