gpt4 book ai didi

用于存储国际象棋走法的 Java 结构

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:09 24 4
gpt4 key购买 nike

我有一个数字 0 - 6 的 Integer[64],它表示棋子的类型。我有一个 boolean 值[64],表示每个地方的颜色。我需要能够将它们保存为(字符串?)并保存它们以供以后使用,但我需要一种快速有效的方法。截至目前,我正在循环遍历两个数组并创建一个 64 个字符的字符串,但我制作了几百万个字符串,因为我的国际象棋 AI 深入研究了游戏。想法?

最佳答案

首先,您应该重新定义数据结构。

您可以定义一个数组,而不是两个具有整数和 boolean 值的数组

byte[64] field;

然后添加两个方法来检索有关类型和颜色的信息:

public int getType(int fieldNo) {
# this returns the first three bits (int 0-6)
return field[fieldNo] & 0x07;
}

public boolean getColor(int fieldNo) {
# this returns the fourth bit
return (field[fieldNo] & 0x08) > 0;
}

您现在可以通过写入/读取字段数组来保存完整的国际象棋字段:

public byte[] readField(String file) throws IOException {
byte[] field = new short[64];
try (DataInputStream stream = new DataInputStream(new FileInputStream(file)); ) {
stream.readFully(field,0,64);
}
return field;
}
public void writeField(String file, byte[] field) throws IOException {
try (DataOutputStream stream = new DataOutputStream(new FileOutputStream(file)); ) {
stream.write(field,0,64);
}
return field;
}

这将在 64 字节中保存一个完整的字段。

更多改进:

  • 将多个字段保存到一个文件时压缩 64 字节字段。压缩应该很好,因为大多数字节的值为 0。
  • 您可以仅使用 byte[32],并将信息映射到一个字节的前 4 位/后 4 位,而不是使用 byte[64]。

关于用于存储国际象棋走法的 Java 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com