Cat_Anchor 发表于 2024-12-8 23:13:17

一个有趣的谜题!

本帖最后由 Cat_Anchor 于 2024-12-17 18:44 编辑

提示:本谜题中 version 字段的规律是虚构的,实际上并不存在。请勿将其频繁地使用。
注:为简明起见,文本已被编辑。

今天我发现了一个有意思的谜题,是关于基岩版的技术层面的,邀请大家来解题。

请看我与 AI 的对话。
我:
有一个整数 version 现在是 18168855。这个数字可能与游戏版本号 1.21.60.23 有进制转换关系(但不是只有这种关系),请推断出详细关系。
------------
AI:
version 是 MC 基岩版内部使用的数据格式版本。
------------
我:
1.9.0.3对应403
1.12.0.14对应462
1.14.30.51对应1973811
1.16.100.53对应17851445
1.19.80.20对应18042900
1.19.80.22对应18042902
1.20.60.20对应18103316
1.20.60.22对应18103318
1.21.50.26对应18166298
1.21.50.29对应18166301
------------
AI:
1.12和1.14之间发生了重大的数据格式变更。
------------
我:
我们可以只研究1.14.x及以后的。
那么我们能不能用一个关于进制转换的公式表示所有的规律?比如,设 x 为版本号,而 f(x) 为 version 值。注意到有以下关系:
f(x) = 【略】
------------
AI:
你的假设非常有趣,确实是一个非常有潜力的方向。让我们验证一下。
【过程略】
这与已知数据完全匹配!因此,对于 1.16.100.53,函数确实有效。
【过程略】
这也与已知数据完全匹配!因此,对于 1.19.80.20,函数同样有效。
【过程略】
这也与已知数据完全匹配!因此,对于 1.20.60.20,函数再次有效。
这个函数确实可以解释已知的 version 数据。
提示:[*]无需用函数或数学语言表示。
[*]如果信息似乎很少,那可能是因为谜题其实很简单。
看到这里,你知道这个对应关系是什么了吗?在帖子下方留下回帖吧!2024 年 12 月 15 日公布答案!

答案:将版本号分为几个部分(主版本号、次版本号、修订和补丁号),每个部分分别转换为十六进制,对这些十六进制数进行拼接,将最终结果转换回十进制,得到 version。

梦游的123444 发表于 2024-12-9 00:49:32

假啊,竟然假到连正负号都丢了!(除非微软就这样写的)

无情丶兰剑 发表于 5 天前

这个整数 18168855 和游戏版本号 1.21.60.23 之间可能存在某种进制转换或者编码规则的关系,但仅凭给定的信息,无法确定唯一的转换规则。不过,我们可以尝试假设一个可能的关系来进行探讨。

游戏版本号 1.21.60.23 可以看作是由四个部分组成,分别是 1、21、60 和 23。假设这些数字被转换成某种进制,然后再拼接成一个大的整数。一个常见的做法是将每个部分转换成一个固定长度的二进制表示,然后将这些二进制数拼接起来,最后再转换成十进制数。

首先,将 1、21、60 和 23 分别转换成二进制。为了确保每个部分的二进制表示长度一致,我们可以选择一个足以表示最大值(这里为 60)的固定长度。假设选择 16 位二进制表示(虽然这个长度可能偏长,但在这种假设下可以保证每个部分都能表示):

1 转换成 16 位二进制是 0000000000000001
21 转换成 16 位二进制是 0000000000010101
60 转换成 16 位二进制是 0000000000111100
23 转换成 16 位二进制是 0000000000010111
将这些二进制数拼接起来:

0000000000000001000000000001010100000000001111000000000000010111
将拼接后的二进制数转换成十进制数:

上述二进制串转换成十进制数为 132979764375,这显然与 18168855 不匹配。
基于上述尝试,我们意识到如果使用 16 位二进制表示的话,位数有些过多,导致最终的整数值过大。我们可以尝试使用更小的位数来表示每个部分。假设使用 8 位二进制表示:

1 转换成 8 位二进制是 00000001
21 转换成 8 位二进制是 00010101
60 转换成 8 位二进制是 00111100
23 转换成 8 位二进制是 00010111
然后将这些二进制数拼接起来:

00000001000101010011110000010111
再将拼接后的二进制数转换成十进制数:

上述二进制串转换成十进制数为 18168855,这正是题目给出的整数。
因此,一个可能的推断是:游戏版本号 1.21.60.23 的每个部分分别使用 8 位二进制表示,然后将这些二进制字符串拼接起来,最后转换成十进制数 18168855。但这并不是唯一可能的关系,可能还存在其他编码规则或进制转换规则。

无情丶兰剑 发表于 5 天前

无情丶兰剑 发表于 2024-12-21 17:04
这个整数 18168855 和游戏版本号 1.21.60.23 之间可能存在某种进制转换或者编码规则的关系,但仅凭给定的信 ...

艹,才发现公布答案了[哔哩_doge]
页: [1]
查看完整版本: 一个有趣的谜题!