Peter Norvig在PAIP阵列中使用星号

Tia*_*ong 4 arrays common-lisp

在Peter Norvig的PAIP,第18.12节,pg.643(不幸的是不是Google图书预览的一部分),他包括2D数组,如:

(/ (aref '#2A((.1  .4 .7)
              (.05 .3  *)
              (.01  *  *))
         (count-edge-neighbors ...)
         (count-edge-neighbors ...)))
Run Code Online (Sandbox Code Playgroud)

星号(*)代表什么?我假设了对称性的一些简写,但后来有很多重复,如:

'#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
      )) 
Run Code Online (Sandbox Code Playgroud)

所以我很茫然.

Rai*_*wig 9

本章为奥赛罗的比赛实现复杂的游戏.

Norvig根据二维输入使用一些2d数组来获得固定值.

*对于不适用或未使用的值,它是一个任意占位符

对于2d数组中未使用的值,他使用标记,这里是符号*.请注意,选择是任意的,他可以使用任何数据对象,因为永远不会访问该值,因此不会在算术公式中使用.

以第二个数组为例,这是一个权重表.角件具有该阵列中第二行的权重.角落总是稳定的.如果它是稳定的(它总是如此,因为它不能被捕获),那么值是700.因为角件不能是半稳定的(第二个值.意思是:既不稳定也不稳定)或不稳定(立即危险)被捕获的,第三个值),这些值将永远不会被使用,并且可以设置为任意值:使用Norvig *.角落根本没有这些权重的值,因此*在这里标记.在计算中,这些标记永远不会被使用,仅供人类读者使用,并将某些东西放入这些数组插槽中,因为我们不能将它们留在2d数组的打印表示中.