Freepascal Pascal内存问题

Freepascal Pascal内存问题,freepascal,Freepascal,我有一个问题,需要搜索和保存一些值,以防止它执行无限循环。此问题的每个可能状态都表示为一个以6为基数的唯一8位代码(所有数字均为0-5)。当程序计算此位置时,我希望将布尔值设置为true,以避免再次计算此位置。但是,数组1..5555在内存中太大,如果我将8位代码转换为十进制,则需要花费太多时间。问题中并非所有的组合都是可能的;11、11、55、12和其他都是无效的,我不需要使用额外的内存。那么,是否有一种方法将地址为23451211的内存块存储为值“true”,当我调用评估过程时,检查2345

我有一个问题,需要搜索和保存一些值,以防止它执行无限循环。此问题的每个可能状态都表示为一个以6为基数的唯一8位代码(所有数字均为0-5)。当程序计算此位置时,我希望将布尔值设置为true,以避免再次计算此位置。但是,数组1..5555在内存中太大,如果我将8位代码转换为十进制,则需要花费太多时间。问题中并非所有的组合都是可能的;11、11、55、12和其他都是无效的,我不需要使用额外的内存。那么,是否有一种方法将地址为23451211的内存块存储为值“true”,当我调用评估过程时,检查23451211是否为true或未赋值

6到8的幂=1679616

要标记已使用或未使用,您需要一位,因此您可以使用大约209952个字节

在最近的Free Pascal中,位压缩结构的实现如下

      var
          arr : bitpacked array [0..6*6*6*6*6*6*6*6-1] of boolean;
arr[x]将给出true或false

从基数6到二进制(而不是十进制!)的转换时间可能比尝试使用大量内存要短<代码>((数字8)*6+数字7)*6+数字6)*6等


p、 美国FPC有一个指数运算符,但不适用于常数,所以6^8就是这样写的。

你能发布你的代码或部分代码吗?那会有帮助的。