经过和大家激烈的讨论最后得出这套通过学习来快速获取历练的最佳方法,下面先来跟小编一起看看我们的读书小助手代码和成品吧!想要的小伙伴可以关注“手游之家游戏站熊掌号”回复【太吾绘卷】来获取!
读书小助手的代码和成品:
大家在获取到读书工具之后直接双击打开就可以用了,请玩家直接输入自已初始耐心按回车就可以了,然后会显示前五名读书方法给大家,具体看下图:
接下来我们就来说说原理吧:
读书获取历练两款方法分别为
1、留空补独法:所谓留空补独法,就是指在开始的时候故意留下几个空位。等后面读到耐心只有1的时候在前面的空位使用一个“独”。这个留下的空位具体是哪几个没关系,原因后面会讲。
2、满独融补法:所谓满独融补法,就是前面先铺好需要个数的独,然后开始“温”“。当耐心只有1的时候,使用“融”或者“妙”去补充耐心继续“温”的方法。
注:留空补独法的优先是温的次数相对来说很高,因为不需要花费额外的格子去补充耐心,但缺点也很明显,就是在前几次温的时候会浪费空的格子(因为你没放独,必须要等没耐心了才能去点独,不然反而更不划算)而而满独融补法的优点刚好相反。在每一次温都享受了赛事的加成,但是需要花费格子去补充耐心,这里大家觉得哪一种方法更快能获得历练呢?
首先有两个特点请大家记住:
1、独相互叠加且可以反复触发,叠加方式是加乘。也就是说如果一章的基础历练是1点,那么一个独就变成1.5点,三个独就变成2.5点。并且在”温“返回重新读的时候仍然享受这个加成。
2、用一次独加2点耐心,用一次融(或者妙)加5点耐心,前者可以让我们在1耐心的时候多读2次,后者可以让我们在1耐心的时候多读3次。
首先我们来讲传统的满独融补法,这个方法对悟性有很高的要求,不过如果你有110的悟性应该可以应付最优解了。
满独融补法需要两个简单的推论:
1、最优解一定是独分布于前方,融分布于后方
2、用于补充耐心的位置分布在【除了独以外的最前方】
第二个推论还存在一些疑虑,因为当你补充的格子尽量分布在前方时,前方的几章会被尽可能多的阅读到(温),所以会相对多出一点点阅历。那么根据这两个推论,我们只需要枚举30种情况,分别是只有1个独到有30个独的情况,至于温和融的位置,我们让电脑模拟我们在游戏中读书的全过程自己去添加,最后按照相对经验排名即可。
第二种方法,留空补独法,这是我在原帖写作的时候吧友启发我的读法,说实话我以前真的没注意过这种方法。首先留哪个空其实没什么区别,因为独之间是加乘关系,也就是说你留着一页啥都不点和三页各留一个空其实结果是一样的。另外每次用温之前只能用一次独。这个结论很容易得出,因为每次我们加的耐心是固定的,但是耐心减半是耐心越多剪得越多。比如都是只有1点耐心用独,用一次是1+2=3→2→1,可以用2次,而连着用两次独是1+4=5→3→2→1只能用3次,比分开来用(2次x2=4次)要少一次。
然后我们开始计算留空补独法的经验
留空补独法的经验计算的唯一难度来源于——你不知道他之前要空多少空位
我们要想知道要空多少空位,首先我们要确定我们一共复读几次,因为这关乎了我们需要在前面留多少个空用于加耐心。
存在以下关系:
留空=ceil<(总复读次数-不补充耐心最大可复读次数)/2> 【其中ceil指的是向上取整,下同】
很明显每次补充耐心可供我们多复读两次,那么耐心不足的次数(总-不补充最大)整除掉2,就是我们需要补充的次数
总复读次数是预先就固定下来的,所以留空中只存在唯一影响因素:不补充耐心最大可复读次数。但是这个耐心值可不是我们的初始耐心值——因为之前我们在上面放的独也是会涨耐心值的,一个2点。所以 不补充耐心最大可复读次数=ceil(log2(开始温的耐心值)),其中log2指的是以2为底的对数。
而我们开始不停的减半减半减半的耐心值其实是:开始温的耐心值=初始耐心值+初始的独次数*3
到现在应该都能听懂吧?
而 初始的独次数=30-总复读次数-留空,因为每次复读就是一个温,剩下的都是独,再减掉之前要留下来的空就是我们要独的次数了。
这个时候我们发现了一个好消息:所有的变量回环回来了!
我们先总结一下公式:
留空=ceil<(总复读次数-不补充耐心最大可复读次数)/2>
不补充耐心最大可复读次数=ceil(log2(开始温的耐心值))
开始温的耐心值=初始耐心值+初始的独次数*3
初始的独次数=30-总复读次数-留空
为了以下公式比较简洁,我们记“不补充耐心最大可复读次数”为MAX,开始温的耐心值为S(start),初始耐心值为I(initial),初始的独次数为D(独),总复读次数为ALL,留空因为是最终我们要求的内容,此处不做改动。
然后试试看能不能列出等式:
留空 = ceil{< ALL - ceil( log2 S )> / 2 }
= ceil{< ALL - ceil( log2 (I + D*3) )> / 2 }
= ceil{< ALL - ceil( log2 (I + (30-ALL-留空)*3) ) > /2 }
此时可以看出这个等式了,很明显ALL(总复读次数)、I(初始耐心值)是我们需要输入的变量,我们需要解出”留空“的值。
到这里我们其实就不用去继续解了,因为这个等式肯定解不出来明确的解析式。首先是因为ceil向上取整函数会导致信息损失。最外一层的ceil加一个除以二还勉强能应付,因为你可以分成奇数和偶数两种情况去讨论。里面那个就根本束手无策了,一个对数加一个取整那是要死人的
除此之外,大家肯定也知道:exp(a)=log(exp'(a))是无法写出明确的a的解析式的(exp(a)和exp'(a)指的是关于a的一个式子)。我们观察可以发现如果我们把外面的东西弄掉,肯定是等号左边一个关于”留空“的式子,右边一个log里有”留空“的式子,这除了一个一个试着去代真的没办法解了
不过我们这里已经得到了一个初步等式,这个初步等式的作用就是:我们从0开始穷举留空(0、1、2、3……),如果有一个值让这个等式成立,那么留空的值就是这个。
因为我们可以很容易看出这是一个单调的解析式,留空的解是唯一的(这点从实际情况上也很好理解,一种组合留几个空可以刚好读完也是固定且唯一的)。
既然这样,我们就改抬上我们的程序员暴力美学——穷举了你以为我要用数学分析问题了吗?
其实我还是在穷举哒!JOJO,我不做程序员啦!!
我们先明确需要的变量:
1、ALL,也就是总复读次数,这个我们会从1一直枚举到30
2、I,也就是初始耐心值,这个是由大家自己输入的,比如我的一个存档初始耐心值是75
3、留空,这个是枚举的,估计不会超过个位数
这样看来我们只需要一个双层嵌套的循环就能完成穷举了!
这是代码:
输出结果:
其中左边的数字是“温”的次数,右边的数字是需要留空的数目
可以看出:温次数少于9的不需要留空,因为光靠自己本身的耐心就可以肝完了。而温次数高于21的不能使用这种方法,因为光靠独根本不够补足耐心。接下来是求出每种策略的相对经验值,和我们的满独惟补方法合并排名即可
我们惊人的发现!原来真的通过补独的方法可以获得更多历练!
不过作为严谨认真的太吾传人,我们会怀疑自己的代码会不会写错了。
所以我作出决定:去游戏里实践一下最优解法是不是如此!
让我们掏出之前用来实验的琴谱,读它个两三遍!
文弱书生!淦!
我们先用最强读法 留空补独法 试试看:
我们读的是最垃圾的九品书,每一章可以给6点历练。查表发现这种方法的历练产出是215.0乘以每章的收益,215.0*6=1290,完美符合
再试试看排名第二 满独融补法 的读法:
212.5*6=1275。
然后就会有人说诶不对啊lz不是1275吗你怎么读出来才1269? 原因是lz在截图的时候手快了,最后一章的历练增加还没跳出来就截图了。所以最后的收益是1269加上我没截到的最后一章的6点,加起来是1275,完 美 符 合。自此,困扰太吾传人们几个月的读书之谜就算是解开了。之前也有很多人给出了很多种最优解,也给出了很多的定理——比如独要尽量靠前,补充耐心的也要尽量靠前。但是一直以来大家总没有一个统一的解的原因,就是之前的一些探索者没有关注到耐心和反复着两个问题,前者可以通过多次运算解决,而后者通过传统的excel表实现起来并不简单,而脚本在面对这种枚举任务的时候则显得非常好用。
另外关于悟性不够的问题,其实很简单,从榜首往下看,直到找到一个你的悟性可以满足你的悟性的解法。悟性只会影响到哪些能用哪些不能用,不会影响到排名顺序。如果大家觉得我的推算过程有什么问题,或者你有更好的想法,可以直接M我或者回复,我都会仔细的研究计算的!
太吾绘卷快速读书获取历练技巧就跟大家说到这里吧,并不是什么情况都是留空补独法为最优,这个大家需要注意一下。因为每个人的初始耐心值不太一样,如果你的耐心极高(160或300多),那么满独融补法将会更好一些。总之会受到初始耐心值的影响!