Peter Norvig的PAIP,第18.12节,pg。 643(不幸的是不是Google图书预览的一部分),他包括2D阵列,如:
(/ (aref '#2A((.1 .4 .7)
(.05 .3 *)
(.01 * *))
(count-edge-neighbors ...)
(count-edge-neighbors ...)))
星号(*
)代表什么?我假设了对称性的一些简写,但后来有很多重复,如:
'#2A((;stab semi un
( * 0 -2000) ; X
( 700 * *) ; corner
(1200 200 -25) ; C
(1000 200 75) ; A
(1000 200 50) ; B
(1000 200 50) ; B
(1000 200 75) ; A
(1200 200 -25) ; C
( 700 * *) ; corner
( * 0 -2000) ; X
))
所以我不知所措。
答案 0 :(得分:9)
本章为奥赛罗的游戏实施复杂的游戏。
Norvig使用一些2d数组来获取固定值,具体取决于二维输入。
*
是不适用或未使用值
对于2d数组中的未使用值,他使用标记,这里是符号*
。请注意,选择是任意的,他可以使用任何数据对象,因为永远不会访问该值,因此不会在算术公式中使用。
以第二个数组为例,这是一个权重表。角件具有该阵列中第二行的权重。角落总是稳定。如果稳定(它总是如此,因为无法捕获),那么该值为700.因为角落不能半稳定 (第二个值。意思是:稳定或不稳定)或不稳定(被捕获的直接危险,第三个值),这些值永远不会是使用和可以设置为任意值:Norvig使用*
。角落根本没有这些权重的值,因此*
标记了这里。在计算中,这些标记永远不会被使用,仅供人类读者使用,并将某些东西放入这些数组插槽中,因为我们不能将它们留在2d数组的打印表示中。