我正在尝试编写一个prolog程序,该程序可以找到2D数组中完全被b或w包围的图块。
例如,给定这样的数据集:
[
[b, w, +, +],
[w, +, w, b],
[+, w, b, +],
[+, +, +, b],
]
它将返回另一个包含以下内容的变量:
[
[-, -, -, -],
[-, w, -, -],
[-, -, -, b],
[-, -, -, -],
]
也就是说,它将所有被
+
完全包围的b
替换为b
,对于那些被w
包围的-
替换为。谁能提供有关如何构建程序的想法?
最佳答案
这可能会有所帮助:它采用您提供的表示形式,并返回一个列表,该列表的元素均为[ColumnIndex,RowIndex,Value]形式。然后,您可以使用member在特定的行/列中查找元素。
encodearray( A, AA ) :- ( A, 0, 0, AA ).
encodearray( [], _, _, [] ).
encodearray( [[]|A], _, R, AA ) :- R1 is R+1, encodeArray( A, 0, R1, AA ).
encodearray( [[A|B]|X], C, R, [[C,R,A]|AA] ) :- C1 is C+1, encodeArray( [B|X], C1, R, AA ).