-1 prolog
问题是 ; 我们有一个函数拿3个参数,比如; func([[0,0,0,1,0],[0,1,1,1,0],[0,0,1,0,0],[0,0,1,0,0] ,[0,0,0,1,0]],(1,1),X)第一个是嵌套列表,显示5x5矩阵,1s表示它已满,0表示空,第二个参数( 1,1)我们的起点第1行第1列,第3个参数X是; 变量,我们将与起始点(1,1)可访问的点统一,如果被询问;
?- func ( [ [0,0,0,1] [0,0,1,0] [0,0,1,1] [0,0,1,0] ], (1,1), X).
X = (1, 1);
X = (1, 2);
X = (1, 3);
X = (2, 2);
X = (3, 2);
X = (4, 1);
X = (4, 2);
false.
Run Code Online (Sandbox Code Playgroud)
当我们从(1,1)开始时,我们可以向上,向下,向左和向右移动; 因为在(1,1)上没有向左和向上移动,如果是空的,则向右看,写下来,向下看空写下,再次进入(1,2),向右或向左或向上或向下移动,依此类推.
这里我们没有写输出的原因,(2,4)(4,4)如果例如点(2,3)是满的并且(2,4)是空的我们看我们可以去点(2) ,4)一个接一个,我的意思是,如果它们上下都是满的,我们就不能用这一点去点(2,4),因为它们已经满了.