我不想在线发布整个家庭作业和所有代码,所以我只是把具体问题放在哪里。如有必要,我可以添加和解释更多。
但实质上,我编写代码然后由我的教授代码进行测试。我的代码在逻辑上按照他的指示工作。在我的代码的特定snipett中,我应该检查它是否是有效的移动。在第一个和最后一个参数中,列表代表[传教士,食人族,是否离岸很近]。我的代码工作并通过所有测试,除非我的教授传递了_
和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
所以我理解它崩溃了,因为我的老师的测试代码为_
和M1
投入M2
因此尝试执行{{1}时出错}。但是,我无法更改他的测试代码,那么我怎样才能更改代码,以便不会出现错误,而是返回失败?