PcPcOnSq

毎日がEveryDay! PcPcOnSqについて。
k0, l0に入る値は、駒の位置状態を表す番号。(例:歩が6七にいる)
この番号は、0から1475まである。
二個の駒の位置関係を考えているのだから、0から1475の番号を縦と横それぞれに振った正方形を考えて、その中のある場所が一個の位置関係に対応する。但し、aとbの関係はbとaの関係と同じことなので必要な領域は半分の三角形(対角線は含む)。
左下の三角形を考えて、この三角形の各要素に対して0行目から順番に通し番号を0から振っていくと、第i行目の先頭要素の番号はi*(i+1)/2になる。従って、i >= jである二駒の状態(i, j)の位置関係のインデックスは、i*(i+1)/2 + jとなる。

最終的に、玉位置k, 二駒の位置状態i, jの要素の評価パラメタの取得は以下のようになる。

#define PcPcOnSq(k,i,j)     pc_on_sq[k][(i)*((i)+1)/2+(j)]

正方形のままで表現すると、必要な領域が二倍近くになってしまうので、このように表現しているのだと思う。

pc_on_sqというのは、この日記でKPPと呼んでいるパラメタのこと。