推荐阅读:
设有3个传教士和3个野人来到河边,打算乘一条船从右岸渡到左岸去。该船的负载能力为2人。在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。怎样使用这条船安全地摆渡所有人。
对于这个问题我们先定义核心规则:
(1)核心规则是river(integer,integer,integer,interger,integer, integerlist):-…river(…).
规则表示将第一个river状态转移为第二个river状态。river的第一、二个参数分别是右岸的传教士数量、野人数量;第三、四个参数是左岸传教士数量、野人数量;第五个参数为0表示船在右岸,为1表示船在左岸;最后一个参数是列表,用来记录状态,状态由river的前5个参数组成,新的状态添加进列表中。
举例说明,3个传