Tag: 象棋

如何有效编码/解码压缩位置描述?

我正在为日本象棋变体写一个桌面。 为了索引表基,我将每个国际象棋位置编码为整数。 在其中一个编码步骤中,我编码棋盘上的棋子。 由于实际方法有点复杂,让我以简化的方式解释问题。 编码 在最后的桌面游戏中,我有(比方说)六个不同的棋子,我想在9个方格的棋盘上分发。 我可以通过六元组( a , b , c , d , e , f )天真地表示他们的位置,其中每个变量a到f是0到8范围内的数字,表示相应的棋子所在的位置。 然而,这种表示并不是最佳的:没有两个国际象棋棋子可以占据同一个方格,但前面提到的编码很乐意允许这样做。 我们可以通过六元组[ a,b’,c’,d’,e’,f’ ]对相同位置进行编码,其中a与之前的a相同, b’是0到7之间的数字,表示第二件正方形的数量。 这通过为第一块未打开的每个方格分配从0到7的数字来工作。 例如,如果第一块位于正方形3上,则第二块的正方形数字为: 1st piece: 0 1 2 3 4 5 6 7 8 2nd piece: 0 1 2 – 3 4 5 6 7 其他部分类似地编码, c’作为0到6之间的数字, d’作为0到5之间的数字等。例如,幼稚编码(5,2,3,0,7,4)产生紧凑编码(5,2,2,0,3,1): 1st: 0 1 2 […]