gpt4 book ai didi

prolog - 找到满足某些条件的 16 位数字的最优雅的方法是什么?

转载 作者:行者123 更新时间:2023-12-03 15:21:00 25 4
gpt4 key购买 nike

我需要找到所有 16 位数字的三元组( xyz )(实际上只有在不同三元组中与相同位置的位完美匹配的位),这样

y | x = 0x49ab
(y >> 2) ^ x = 0x530b
(z >> 1) & y = 0x0883
(x << 2) | z = 0x1787
直接使用 8700K 的策略需要大约 2 天,这太多了(即使我会使用我可以访问的所有 PC(R5-3600、i3-2100、i7-8700K、R5-4500U、3xRPi4、RPi0/W)这将花费太多时间)。
如果位移位不在等式中,那么这样做将是微不足道的,但是使用位移位很难做同样的事情(甚至可能是不可能的)。
所以我想出了一个非常有趣的解决方案:将方程解析为关于数字位的语句(类似于“x XOR 的第 3 位 XOR y 的第 1 位等于 1”),并且所有这些语句都用 Prolog 语言之类的语言编写(或只是解释他们使用真值表操作)执行所有明确的位将被发现。
这个解决方案也很困难:我不知道如何编写这样的解析器,也没有 Prolog 的经验。 (*)
所以问题是:这样做的最佳方法是什么?如果是 (*) 那么怎么做呢?
编辑:为了更容易在此处编码数字的二进制模式:
0x49ab = 0b0100100110101011
0x530b = 0b0101001100001011
0x0883 = 0b0000100010000011
0x1787 = 0b0001011110000111

最佳答案

有四种解决方案。在所有这些中,x = 0x4121,y = 0x48ab。 z 有四个选项(它的两个位可以自由为 0 或 1),即 0x1307、0x1387、0x1707、0x1787。
这可以通过将变量处理为 16 位数组并根据对 bool 值的操作对它们进行按位运算来计算。这可能可以在 Prolog 中完成,也可以使用 SAT 求解器或二元决策图来完成,我使用了 this website它在内部使用 BDD。

关于prolog - 找到满足某些条件的 16 位数字的最优雅的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66079294/

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