我不想把整个家庭作业和我所有的代码都发布到网上,所以我只会把具体问题放在哪里。如有必要,我可以添加和解释更多。
但本质上,我编写了我的代码,然后我的教授代码对其进行了测试。我的代码按照他的指示在逻辑上工作。在我的代码的这个特定片段中,我应该检查它是否有效。在第一个和最后一个参数中,列表表示[传教士、食人族、离岸近还是远]。我的代码工作并通过了所有测试,除非我的教授通过_
了 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 M1
,M2
因此它在尝试执行时出错_ =:= _ + 1
。但是,我无法更改他的测试代码,那么我该如何更改我的代码,而不是出现错误,而是返回失败?