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)
所以我很茫然.
本章为奥赛罗的比赛实现复杂的游戏.
Norvig根据二维输入使用一些2d数组来获得固定值.
*对于不适用或未使用的值,它是一个任意占位符
对于2d数组中未使用的值,他使用标记,这里是符号*.请注意,选择是任意的,他可以使用任何数据对象,因为永远不会访问该值,因此不会在算术公式中使用.
以第二个数组为例,这是一个权重表.角件具有该阵列中第二行的权重.角落总是稳定的.如果它是稳定的(它总是如此,因为它不能被捕获),那么值是700.因为角件不能是半稳定的(第二个值.意思是:既不稳定也不稳定)或不稳定(立即危险)被捕获的,第三个值),这些值将永远不会被使用,并且可以设置为任意值:使用Norvig *.角落根本没有这些权重的值,因此*在这里标记.在计算中,这些标记永远不会被使用,仅供人类读者使用,并将某些东西放入这些数组插槽中,因为我们不能将它们留在2d数组的打印表示中.