如何用最少的数字获得 rngdle 中所有的番种?

· · 休闲·娱乐

由于作者逐渐沉迷国标麻将,所以「badge」被翻译为了「番种」。

省流:目前上界为 \sout{60}\;\textcolor{red}{59},不一定是最优解,欢迎来爆。

你说得对,但是 RNGdle 是一款由不知道谁自主研发的一款全新随机数字比拼游戏。

这个游戏的玩法非常简单,每天可以随机抽取一个 [0,10^6]\cap\Z 以内的数,然后看到它满足哪些番种(即这个数有什么有趣的性质),然后给出一个 EP 值,根据其来决定它的稀有度。

显然这个游戏是运 10 技 0,运气好时可以十几天连出两个 MYTHIC,运气不好时可以 80 多天抽不出 ANOMALY。90 抽有可能收集到 20 个蓝色番种,102 抽也可能只收集到 7 个蓝色番种。(注:以上均为在 \mathcal O(1) 个人中真实发生的事件。)

其中亦存在很多的极为困难的番种,甚至于每次仅仅有 \dfrac{1}{10^6+1} 的概率解锁它,迄今为止运气最好的人最多也只解锁了一个这样的番种。

但是假设我们知道了随机种子,可以随意控制抽奖姬输出任何我们想要的数字呢?此时我们最快多少天可以达成全收集呢?

想要知道如何收集所有番种,首先得知道都有哪些番种。但是 RNGdle 的网站上并没有所有番种的列表(只有一个 badge set 页面,但是它不但只能看到自己收集过的番种,而且其中也有很多的遗漏和重复)。

我们需要使用 https://rng.cubityfir.st/,这里有很多关于 RNGdle 的小工具,可以随意输入想要的数字,也有番种列表,在这里还可以输入一些数字后看到它们解锁了哪些番种——这正是我们需要的。顺便一提,它还使用贪心算法(每次取新增番种最多的数加入)得出了这个问题的一个上界 64。

我们从思考起来最简单(解锁起来最困难)的部分开始:如果只有一个数满足一个番种,那么我们就不得不带上它。它们是:0,1,2,3,4,5,6,7,8,9,42,67,69,86,101,365,404,420,666,777,911,1337,1984,7734,17776,80085,86400,365365,420420,424242,666666,676767,696969,777777,911911,1000000,共 36 个。

然后有几个「二选一」的番种:8008/58008,247365/365247,69420/42069。其中第一个因为有一个「包含 58008」的番种,所以我们选 58008,剩下两个似乎没什么用所以随便选即可。然后是几个数学常数番种,\pi,\mathrm e,\phi,\tau,这几个需要选五位或六位的那个,因为有「xx Slice (5)」的番种。现在是 43 个数。

然后看看剩下的没有解锁的番种:

  1. (2/3/4) Consecutive Numbers [(Contains/Scrambled)]
  2. sequence(3/4/5/6), (Royal/Straight) Flush, Waterfall, Straight
  3. Semi-(Eon/Epoch/Millennium/Century),(one/three)-Quarter Century
  4. (Quint/Quad/Triple/Double) Nine, Heavy
  5. Framed (Quad/Double), Contiguous (Three Pairs/Full House/Pairs), Paired Bookends
  6. 杂项:Hello, Crescendo, Secret Agent, Equation

从简单的开始:第 4 行可以一个 999999 解决。第二行,可以一个 456789 解决一大半,而剩下两个用 13579 和 987654 即可。(顺便吐槽一下,RNGdle 有很多魔怔特性,番种定义不严谨且和代码不一样,一位数不算 Waterfall 可能还能理解,但是三位数不算 Firefly 是啥阴???)Hello 对其他番种没啥用,直接 107734 弄掉。4 Consecutive 系列,不太能复合,只能 78910,678910,10789 一个一个弄掉。此时有 51 个数。

再看 Semi 系列,考虑尽量多的复合,选取 50000,55000,335500。Framed Quad 取 700007 复合 Secret Agent,此时有 55 个数。

此时还剩 (2/3) Consecutive Numbers(含 Scramble), Framed Double, (1/4 1/2 3/4) Century, Crescendo, Equation(你一个绿的番种怎么能坚持这么久)。考虑尽量两两配对:

最后剩一个 3 Consecutive Scramble,随便取一个 101211,共 60 个数,所以不会超过两个月!

所有的数:0,1,2,3,4,5,6,7,8,9,42,67,69,86,101,365,404,420,666,777,911,1337,1525,1984,7475,7734,13579,17776,50000,55000,58008,69420,71098,78910,80085,86400,101211,107734,161803,247365,271828,314159,335500,365365,420420,424242,456789,466550,595857,628318,666666,676767,678910,696969,700007,777777,911911,987654,999999,1000000。可以粘进上述链接验证。

如果要再减少的话,可能需要一些更诡异的复合方式,但是作者太菜了,所以,额,先这样吧。

Upd:我们可以做到 59 个数。

在剩下九个番种的时候,我们发现存在两个数同时满足 Framed Double、Equation 和 1/4 Century:455225 和 977225,并且 2 Consecutive Numbers 和 Crescendo 是可以复合的(同样有两解:100101 和 442441),这样剩下四个也显然可以配对,再取 484950,747675,这样我们便省下了一个数!

新的数集:0,1,2,3,4,5,6,7,8,9,42,67,69,86,101,365,404,420,666,777,911,1337,1984,7734,13579,17776,50000,55000,58008,69420,71098,78910,80085,86400,107734,161803,247365,271828,314159,335500,365365,420420,424242,442441,456789,484950,628318,666666,676767,678910,696969,700007,747675,777777,911911,977225,987654,999999,1000000。

还能再压吗(?)