目录概述许可证声明星星前期攻略和获得星星的方法小游戏的星星奖励转生(Prestige)超越(Supremacy)毕业(Graduation)加速器(Accelerator)首次毕业到理论的攻略理论5:逻辑斯谛函数(Logistic Function)理论9:审敛法(Convergence Test)如何卖掉引理中的升级?引理1:
为方便讨论,令
游戏中的“转生”的原文是 Prestige, 旧版翻译为“归一”,“超越”的原文是 Supremacy, 旧版翻译为“升华“。
警告:本文存在大量剧透内容!
注意:在某些浏览器中部分链接会无法打开,可以复制链接到外部浏览器(如Chrome, Safari)中或在电脑浏览器中打开。
本攻略采用知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议进行许可。
可以通过点击公式、获得成就、挂机和玩小游戏的方法获得星星,游戏中所有资源的获得数量都是基于时刻(tick)计算,大部分情况下,每个时刻为 0.1 秒,部分理论除外。在每一个时刻,都会有一定概率获得星星,其公式为
星星可用于购买变量、自动购买器、各个变量的永久升级和小游戏,需要注意的是,用于购买星加成(包括变量、自动购买器、各个变量的永久升级)的星星,购买后可以卖掉加成以返还购买时花费的全部星星。用于购买小游戏的星星,购买完成后不能返还!
首先不断点击公式获得星星,手动购买各种升级推进进度(你可以使用自动点击器或者是物 理 方 法),然后购买 一键购买
(Buy All
)” 按钮,这样子似乎方便很多了,然后再购买 “数字推盘(15-Puzzle)” 和 “环面游戏(Torus Puzzle)” 获得一些星星。小游戏的攻略详见 “相关链接” ,前期不建议购买 “箭头谜题(Arrow Puzzle)”,难度较高且收益不大。后续优先入手 “变量自动购买器” 和 “升级自动购买器” ,这里大概能解锁转生了。加速按钮可以在获得和加速按钮有关的隐藏成就后卖掉。
此时在
timer(d(ln(db/b+1)/pt) < 0) > 3 * tr && db > b
公式的含义在后续的章节中提到。随后的优先级为:变量、变量等级、自动操作速度×2、加速按钮、自动超越。当自动操作速度和变量等级同等价位时(例如一个要 1220, 一个要 1225),优先购买变量。变量等级先买最高等级的变量,等解锁所有变量后可使用星星计算器(https://gsui5051.github.io/StarOptimizer/index2.html)计算各个变量等级的购买数量。本人不建议牺牲自动操作速度来购买高等级变量,这反而会使游戏进度变慢。
自动超越可以在买不起第三个
至于箭头谜题,这个小游戏是最难的一个,建议直接看游戏官方 wiki 的攻略:https://exponential-idle.fandom.com/wiki/Minigames 如果你真的要使用这个攻略来解决箭头谜题的话,点 我放弃!
(I Give Up!
)按钮旁边的小齿轮,将显示模式改成数字。
基础奖励的星星数量如下:
游戏名称 | 难度 | 基础奖励星星数量 |
---|---|---|
数字推盘 | 简单 | 1 |
数字推盘 | 中等 | 3 |
数字推盘 | 困难 | 6 |
环面游戏 | 简单 | 1 |
环面游戏 | 中等 | 8 |
环面游戏 | 困难 | 14 |
箭头谜题 | 简单 | 1 |
箭头谜题 | 中等 | 8 |
箭头谜题 | 困难 | 14 |
箭头谜题 | 专家 | 25 |
获得奖励的星星数量为基础奖励的星星数量乘以游戏加成倍数后向下取整,游戏加成倍数的公式为
转生后获得
当
此时
转生后获得
当
需要注意的是,计算转生后获得的
超越获得
当
此时
各个
当首次达成
其中
需要注意的事,当首次达成
加速器倍率的公式如下:
其中
学生:5σ → 13/14/15σ → 18σ → 理论 1
别忘了使用星星分配计算器和学生分配计算器!可以在“相关链接”中找到计算器的链接。
解锁理论后,可在附录三中查找
各理论的攻略(主要是里程碑升级的顺序)详见附录一。
不考虑广告奖励,从 1 到 ee5000 (开始到解锁第一个理论)最快需要 2 周,从 ee5000 到 ee20000 (从解锁第一个理论到完成理论 9 )最快需要一个月。
即使加上广告奖励,从ee20000 到 ee50000 (买完所有的
理论5的公式如下:
各参数的取值范围如下:
式 (8) 的解是
理论 5 叫逻辑斯谛函数,微分方程的解必然与逻辑斯谛函数有关,可求出微分方程(9)的解如下:
其中
逻辑斯谛函数是存在硬上限的,上限为
从方程的解可以看出,
当
模拟地址:https://www.desmos.com/calculator/qfrw3rq7g5
参考资料:https://sites.math.northwestern.edu/~mlerma/courses/math214-2-03f/notes/c2-logist.pdf
证明理论 9 中的每一个引理时,需要看好公式,否则会出现
每一个引理都有进度回滚的功能,如果你翻车了,可以点击一个形状类似 ↖️ 的按钮,将引理中除公式以外的所有数值重置为初始值,以回滚引理的进度。
如果使用最好的策略,且活跃地游玩该理论,完成这个理论需要 5~6 小时。
有时候,可以通过卖掉引理中的升级,重新分配引理中各个升级的数量,使
引理 1 的公式如下:
易得
又由于
式 (15) 可改写成
式 (16) 左边除以 2 后,令
当
当
如果
综上所述,引理 1 的最优策略是:尽可能多地购买
引理 2 的公式如下:
其中
引理 3 的公式如下:
看起来引理 3 只需要无脑买买买,但是,需要保证
引理 4 的公式如下:
看起来引理 4 只需要无脑买买买,但是,由于
公式 (21) 中,
引理 5 的公式如下:
由于
且
1 | 1 | 1.6 | 2 | 1 | 0 |
2 | 6 | 6.4 | 7 | 2592 | 2401 |
3 | 14 | 14.4 | 15 | 1.5366e5 | 1.5188e5 |
4 | 25 | 25.6 | 26 | 2.7344e6 | 2.7419e6 |
5 | 40 | 40 | 41 | 2.5600e7 | 2.5432e7 |
6 | 57 | 57.6 | 58 | 1.5834e8 | 1.5843e8 |
7 | 78 | 78.4 | 79 | 7.4030e8 | 7.4005e8 |
8 | 102 | 102.4 | 103 | 2.8143e9 | 2.8138e9 |
其中
引理 6 的公式如下:
其中
当
表中所列结果与作者在 Discord 上找到的最优路线一致:
序号 | 最大化 | |||
---|---|---|---|---|
1 | 2 | 2 | ||
2 | 4 | 5 | ||
3 | 8 | 11 | ||
4 | 11 | 16 | ||
5 | 29 | 49 | ||
6 | 39 | 69 |
我特意在正数前面加了
综上所述,当需要对
引理 7 的公式如下:
若让
实测表明,当
本人做了一个表格,以列举引理 7 中可用的
根据以上表格,引理 7 中最佳的
完成理论 9 之后,所有的故事章节都已解锁,再也不会有新的游戏内容和游戏机制了。由于理论 9 不会影响
参考资料:https://www.tandfonline.com/doi/pdf/10.1080/0020739X.2017.1352043
点击左下角的“眼镜+小胡子”图标,进入转生(Prestige)和超越(Supremacy)菜单,点击“转生”和“超越”按钮旁边的小齿轮可对自动转生和自动超越进行设置,我个人建议将自动转生和自动超越模式换成“数学表达式”,用公式定义自动转生和自动超越的条件,而不是达到上一次的多少倍后进行自动转生或自动超越。
自动转生采用如下公式:
xxxxxxxxxx
timer(d(ln(db/b+1)/pt) < 0) > 3 * tr && db > b
公式给出的两个条件要同时满足:
为什么要用这个公式?原因很简单,保证
当
xxxxxxxxxx
((timer(d(ln(db/b+1)/pt) < 0) > 3 * tr && db > b && ((d(smooth(10^10^10^(phi*tau),1)) > 1) && timer(abs(d(log10(phi+1))) < 50) > 15))&&phi>1) || ((timer(d(ln(db/b+1)/pt) < 0) > 3 * tr) &&(phi >=1 && phi <= 1))
和第一个公式相比,多了如下条件:
自动超越采用如下公式:
xxxxxxxxxx
timer(d(ln(db/b+1)/pt) < 0) > 2 * tr && db > b && dpsi + psi > min(min(costUpS(1), costUpS(2)), costUpS(3)) && ln(1 + max(1,log10(sf))/smooth(max(1,log10(gf)), (st>tr) * ee99))/max(1,st) < smooth(ln(1 + max(1,log10(sf))/smooth(max(1,log10(gf)), (st>tr) * ee99))/max(1,st) , (pt>tr) * ee99)
这两个公式要同时使用,启用自动该超越公式或重新启用自动超越后,需要立刻进行一次手动强制超越!否则可能会出现无法自动超越的情况。
公式给出的四个条件要同时满足:
在刚解锁理论的时候,用这个公式会出现长时间不超越的情况,原因是第四个条件未满足。当然你也可以选择手动强制超越
xxxxxxxxxx
timer(d(ln(db/b+1)/pt)<0)>2*tr && db>b && dpsi+psi>min(min(costUpS(1),costUpS(2)), costUpS(3)) && ln(1 + max(1,log10(sf))/smooth(max(1,log10(gf)),(st>tr)*ee99))/max(1,st)<smooth(ln(1+max(1,log10(sf))/smooth(max(1,log10(gf)),(st>tr) *ee99))/max(1,st),(pt>tr) * ee99)||(dpsi+psi>costUpS(3,2))||(dpsi+psi>costUpS(3,ceiling((log10(2^(log10(log10(lf))/25))-log10(costUpS(3,1)/e20))/70))&&dpsi+psi>costUpS(3,1))|| (dpsi+psi > 4.2e51 && costUpS(1)<4.2e51)|| (dpsi + psi > costUpS(3))
启用该自动超越公式或重新启用自动超越后,需要立刻进行一次手动强制超越!否则可能会出现无法自动超越的情况。
xxxxxxxxxx
(costUpS(1)<e52&&psi+dpsi>e52)||(costUpS(3)<e411&&psi+dpsi>e411)||(costUpS(3)<e511&&psi+dpsi>e511)||(costUpS(3)<e531&&psi+dpsi>e531)||(costUpS(3)<e551&&psi+dpsi>e551)||(costUpS(3)<e571&&psi+dpsi>e571)
这个公式不言而喻,在
首先是对该条件中各个变量的说明:
接下来就是 smooth
函数的说明了。游戏中该函数的说明如下:
平滑函数:“smooth”函数可以降低某个信号的噪声,让函数的变化更平滑。这个函数有两个参数,第一个参数是被平滑的函数,第二个参数是平滑系数。系数越大,结果将越平滑。例如,“smooth(x,0)”就等于“x”,也就是未被平滑,而“smooth(x,1)”是最近一小段时间“x”的移动平均值。
smooth
函数的公式如下:
smooth
函数常见的使用方法如下(翻译自 Discord):
smooth(x,10)
, 这个函数将会输出最近 10 个时刻 x 的移动平均值。smooth(y,ee99)
, 这个函数将会输出一个恒定的 y 值,即使输出这个 y 值之后,实际上 y 的值发生了变化。举一个实际的例子:smooth(b,(pt<1)*ee99)
, 这个函数将会输出上次完成转生完成后,再过 1 秒之后 smooth(10^10^10^db,1)
, 这个函数输出的是 10^10^10^db
的历史最大值(Cumulative Maximum),但是我们需要获得的是 db
的历史最大值而不是 10^10^10^db
的,所以应该使用 log10(log10(log10(smooth(10^10^10^db, 1))))
这样的函数才能获得 db
的历史最大值。将不等式的两边改写成分数形式,变量的字母全部改为大写,左边为
右边为
也就是说,每次完成转生之后计算不等式左边的值并锁定,随后不断计算不等式左边的值,直到不等式左边的值小于上次转生后的值。作者猜测,这个公式的目标就是在 smooth
函数的第二个使用方法,为了实现对应数值的锁定,需要在启用自动该超越公式或重新启用自动超越后,需要立刻进行一次手动强制超越。
参考资料:https://discord.com/channels/708020773159305248/708021223258587227/844205518486372412
感谢大量玩家贡献的数据和 Discord 上的大佬,第一个能用的毕业计算器得以问世。本文为此特地设立一个章节,来介绍这个计算器的使用方法。
Not run yet
开始运行,网页会为程序构建运行环境。Tau (only number after e):
后输入 1500
. Phi (only number after e):
后输入 1500
. 需要注意的是,这里输入的 Current Graduation Mark:
的数值为此次毕业需要达到的 Current Graduation Mark: 此次毕业需要达到的
Theory Income Boosted by xxxxx since last Graduation. 毕业后理论的加成倍数变化。
Theory Income Before Graduation: 毕业前理论加成的倍数,也就是
Theory Income After Graduation: 毕业后理论加成的倍数,也就是
Please input an integer for xxx. 你只能输入整数,不支持小数。
Phi*Tau too low for student count. 学生数对于的
Upon reaching ee5k please respec all into Theory 1. If you have no theories please input less than 20 for students. 如果你的
Phi too low for next graduation.
Are You Even Using Students? 居然有人不把学生分配在研究上的吗?
Please Input Valid Values for Phi, Tau, and Total Students. 输入的值无效。
Values too high and outside range of equations. If you have data to add please fill out https://forms.gle/myog2rNgdmQJqPsP6 Current Max Supported Phi*Tau: exxx Current Max Supported Students: yyy 你输入的数值太大了,计算器都给你跪了。如果你输入的数值真是你肝出来的,你可以在这个页面中提交你的数据,以扩大计算器的适用范围。
该计算器使用 Python 编写,本文为某些头铁的 Pythonist 在附录四中给出该计算器的源码。
如题,这种操作如下所述:将分配到研究 9(R9)上的学生,与已经分配到研究 1~7 上的学生一起,重新分配到研究 1~7 上,以在短时间内为
具体的操作步骤如下:
A=[a1, b1, c1, d1, e1, f1, g1]
.重置加成
(Respec
)按钮左边的小按钮,会发现每一个研究前面都有一个➖按钮,按一下则会按照“价格(Cost)”左侧的数量移除研究的等级。B=[a2, b2, c2, d2, e2, f2, g2]
.经过这一波操作,你会发现你的
你学废了吗?如果你学废了,那你就废了。最好的玩法还是:不玩游戏的时候挂理论,玩游戏的时候搞一波 R9 SWAP.
点击右下角齿轮图标进入设置菜单,在设置菜单中点击设置菜单左上角写着“文A”的图标,就在“主题”这两个字的左上方,点此可更改游戏界面语言。这对于获得隐藏成就有帮助。
理论之后的攻略链接(微云,攻略内容为英文,如链接失效,请联系作者):https://share.weiyun.com/1vrOfm4s
游戏攻略链接(英文):https://exponential-idle-guides.netlify.app/
理论 1~4 的攻略链接(英文):https://exponential-idle-guides.netlify.app/guides/theories-1-4/
理论 5~8 的攻略链接(英文):https://exponential-idle-guides.netlify.app/guides/theories-5-8/
理论 9 及以后的攻略链接(英文):https://exponential-idle-guides.netlify.app/guides/endgame/
星星分配计算器:https://gsui5051.github.io/StarOptimizer/index2.html
星星分配计算器(备用):https://gsui5051.gitee.io/staroptimizer
学生分配计算器:https://gsui5051.github.io/ei-student-optimizer/index2.html
学生分配计算器(备用):https://gsui5051.gitee.io/ei-student-optimizer/index2.html
毕业计算器(英文):https://replit.com/@LEBaldy2002/gradcalc
备用毕业计算器(英文):https://replit.com/@LEBaldy2002/gradcalcerrorfiguringout
官方 wiki(英文):https://exponential-idle.fandom.com/wiki/Exponential_Idle
官方 wiki 上的不完全攻略(英文):https://exponential-idle.fandom.com/wiki/Guide
官方 wiki 上的小游戏攻略(英文):https://exponential-idle.fandom.com/wiki/Minigames
官方 wiki 上的成就指南(英文):https://exponential-idle.fandom.com/wiki/Achievements
官方 wiki 上的隐藏成就指南(英文):https://exponential-idle.fandom.com/wiki/Secret_Achievements
理论参考值速查表(打不开?这就对了):https://docs.google.com/spreadsheets/d/1QdFJl-lZ6n2QgrD7OoUjUkxIzJz19rM0Rqjbvk_zdow/
购买次数 | y^ | ||
---|---|---|---|
1 | 1.2 | 1.5 | ee0050.000 |
2 | 1.4 | 6 | ee0092.511 |
3 | 1.6 | 24 | ee0140.368 |
4 | 1.8 | 96 | ee0189.811 |
5 | 2.0 | 2000 | ee0299.154 |
6 | 2.2 | 16000 | ee0374.146 |
7 | 2.4 | 1.28000e05 | ee0449.145 |
8 | 2.6 | 1.02400e06 | ee0524.145 |
9 | 2.8 | 8.19200e06 | ee0599.145 |
10 | 3.0 | 6.55360e07 | ee0674.145 |
11 | 3.2 | 5.24288e08 | ee0749.145 |
12 | 3.4 | 4.19430e09 | ee0824.145 |
13 | 3.6 | 3.35544e10 | ee0899.145 |
14 | 3.8 | 2.68435e11 | ee0974.145 |
15 | 4.0 | 2.14748e12 | ee1049.145 |
16 | 4.2 | 3.00000e15 | ee1310.347 |
17 | 4.4 | 9.60000e16 | ee1435.347 |
18 | 4.6 | 3.07200e18 | ee1560.347 |
19 | 4.8 | 9.83040e19 | ee1685.347 |
20 | 5.0 | 3.14573e21 | ee1810.347 |
21 | 5.2 | 1.00663e23 | ee1935.347 |
22 | 5.4 | 3.22122e24 | ee2060.347 |
23 | 5.6 | 1.03079e26 | ee2185.347 |
24 | 5.8 | 3.29853e27 | ee2310.347 |
25 | 6.0 | 1.05553e29 | ee2435.347 |
26 | 6.2 | 3.37770e30 | ee2560.347 |
27 | 6.4 | 1.08086e32 | ee2685.347 |
28 | 6.6 | 3.45876e33 | ee2810.347 |
29 | 6.8 | 1.10680e35 | ee2935.347 |
30 | 7.0 | 3.54177e36 | ee3060.347 |
31 | 7.2 | 1.13337e38 | ee3185.347 |
32 | 7.4 | 3.62678e39 | ee3310.347 |
33 | 7.6 | 1.16057e41 | ee3435.347 |
34 | 7.8 | 3.71382e42 | ee3560.347 |
35 | 8.0 | 1.18842e44 | ee3685.347 |
36 | 8.2 | 3.80295e45 | ee3810.347 |
37 | 8.4 | 1.21694e47 | ee3935.347 |
38 | 8.6 | 3.89422e48 | ee4060.347 |
39 | 8.8 | 1.24615e50 | ee4185.347 |
40 | 9.0 | 3.98768e51 | ee4310.347 |
1 | 1000 | ee0274.163 |
2 | 64000 | ee0424.145 |
3 | 4.09600e07 | ee0574.145 |
4 | 2.62144e09 | ee0724.145 |
5 | 6.87195e13 | ee1174.145 |
6 | 3.51844e16 | ee1399.145 |
7 | 1.80144e19 | ee1624.145 |
8 | 9.22337e21 | ee1849.145 |
第三个
购买次数 | 效果 | |||
---|---|---|---|---|
1 | 1e110 | ee09160.302 | 40 | |
2 | 1e130 | ee10821.266 | 49 | |
3 | 1e150 | ee12482.230 | 57 | |
4 | 1e170 | ee14143.194 | 65 | |
5 | 1e190 | ee15804.158 | 74 | |
6 | 1e210 | ee17465.122 | 82 | |
7 | 1e230 | ee19126.087 | 90 | |
8 | 1e250 | ee20787.051 | 98 | |
9 | 1e270 | ee22448.015 | 107 | |
10 | 1e290 | ee24108.979 | 115 | |
11 | 1e310 | ee25769.943 | 123 | |
12 | 1e330 | ee27430.907 | 132 | |
13 | 1e350 | ee29091.871 | 140 | |
14 | 1e370 | ee30752.835 | 148 | |
15 | 1e390 | ee32413.799 | 157 | |
16 | 1e410 | ee34074.763 | 165 | |
17 | 1e430 | ee35735.727 | 173 | |
18 | 1e450 | ee37396.691 | 181 | |
19 | 1e470 | ee39057.655 | 190 | |
20 | 1e490 | ee40718.619 | 198 | |
21 | 1e510 | ee42379.583 | 206 | |
22 | 1e530 | ee44040.547 | 215 | |
23 | 1e550 | ee45701.511 | 223 | |
24 | 1e570 | ee47362.475 | 231 | |
(25) | ( | 1e590 | ee49023.439 | 240 |
(26) | ( | 1e610 | ee50684.403 | 248 |
(27) | ( | 1e630 | ee52345.367 | 256 |
(28) | ( | 1e650 | ee54006.332 | 265 |
(29) | ( | 1e670 | ee55667.296 | 273 |
(30) | ( | 1e690 | ee57328.260 | 281 |
(31) | ( | 1e710 | ee58989.224 | 289 |
(32) | ( | 1e730 | ee60650.188 | 298 |
(33) | ( | 1e750 | ee62311.152 | 306 |
(34) | ( | 1e770 | ee63972.116 | 314 |
(35) | ( | 1e790 | ee65633.080 | 323 |
(36) | ( | 1e810 | ee67294.044 | 331 |
首先在表格中的
210 | 45 | 0 | 0 | 0 | 0 | 0 | 0 | 255 |
207 | 127 | 0 | 0 | 0 | 0 | 0 | 0 | 334 |
208 | 214 | 19 | 0 | 0 | 0 | 0 | 0 | 441 |
211 | 249 | 87 | 0 | 0 | 0 | 0 | 0 | 547 |
210 | 309 | 64 | 68 | 0 | 0 | 0 | 0 | 651 |
210 | 305 | 118 | 107 | 10 | 0 | 0 | 0 | 750 |
209 | 331 | 124 | 131 | 25 | 22 | 0 | 0 | 842 |
209 | 344 | 131 | 131 | 48 | 93 | 4 | 0 | 960 |
208 | 340 | 129 | 137 | 57 | 116 | 76 | 0 | 1063 |
209 | 339 | 130 | 156 | 58 | 132 | 99 | 22 | 1145 |
210 | 329 | 145 | 148 | 84 | 142 | 129 | 53 | 1240 |
212 | 325 | 136 | 155 | 102 | 153 | 135 | 144 | 1362 |
209 | 345 | 146 | 155 | 108 | 148 | 143 | 190 | 1444 |
210 | 339 | 155 | 162 | 148 | 179 | 146 | 216 | 1555 |
211 | 338 | 165 | 173 | 189 | 191 | 164 | 217 | 1648 |
211 | 353 | 171 | 176 | 201 | 205 | 177 | 234 | 1728 |
211 | 355 | 185 | 189 | 250 | 220 | 195 | 236 | 1841 |
219 | 368 | 192 | 196 | 272 | 257 | 194 | 251 | 1949 |
225 | 373 | 206 | 213 | 293 | 265 | 218 | 261 | 2054 |
231 | 371 | 215 | 218 | 318 | 287 | 231 | 276 | 2147 |
246 | 371 | 239 | 239 | 331 | 299 | 251 | 276 | 2252 |
246 | 378 | 238 | 236 | 364 | 372 | 242 | 281 | 2357 |
269 | 375 | 253 | 259 | 387 | 347 | 267 | 290 | 2447 |
280 | 381 | 271 | 278 | 387 | 386 | 270 | 296 | 2549 |
288 | 370 | 297 | 306 | 404 | 385 | 288 | 303 | 2641 |
303 | 378 | 301 | 303 | 427 | 424 | 298 | 307 | 2741 |
310 | 385 | 310 | 309 | 458 | 445 | 317 | 314 | 2848 |
324 | 406 | 323 | 321 | 458 | 461 | 317 | 324 | 2934 |
335 | 402 | 336 | 337 | 487 | 487 | 327 | 335 | 3046 |
341 | 399 | 344 | 343 | 512 | 523 | 340 | 345 | 3147 |
349 | 408 | 355 | 353 | 527 | 549 | 352 | 347 | 3240 |
364 | 406 | 363 | 370 | 561 | 558 | 365 | 358 | 3345 |
386 | 425 | 385 | 379 | 538 | 570 | 373 | 370 | 3426 |
391 | 412 | 388 | 397 | 584 | 623 | 374 | 378 | 3547 |
401 | 416 | 403 | 412 | 607 | 622 | 396 | 389 | 3646 |
415 | 412 | 417 | 423 | 632 | 641 | 413 | 392 | 3745 |
426 | 420 | 429 | 438 | 652 | 668 | 420 | 401 | 3854 |
449 | 429 | 448 | 450 | 659 | 671 | 431 | 410 | 3947 |
455 | 435 | 454 | 462 | 688 | 711 | 439 | 408 | 4052 |
465 | 435 | 465 | 482 | 710 | 726 | 448 | 417 | 4148 |
481 | 441 | 475 | 492 | 720 | 751 | 465 | 424 | 4249 |
487 | 450 | 487 | 505 | 739 | 774 | 468 | 431 | 4341 |
502 | 447 | 505 | 517 | 755 | 802 | 483 | 437 | 4448 |
515 | 457 | 512 | 531 | 777 | 813 | 493 | 443 | 4541 |
531 | 473 | 529 | 547 | 790 | 837 | 507 | 455 | 4669 |
537 | 482 | 538 | 560 | 788 | 867 | 515 | 462 | 4749 |
545 | 486 | 545 | 575 | 808 | 886 | 518 | 464 | 4827 |
550 | 493 | 553 | 620 | 819 | 921 | 529 | 470 | 4955 |
554 | 490 | 559 | 657 | 832 | 945 | 541 | 477 | 5055 |
562 | 508 | 568 | 669 | 844 | 968 | 554 | 484 | 5157 |
569 | 517 | 584 | 684 | 852 | 990 | 558 | 488 | 5242 |
表格来源每月更新一次,上次更新时间:2021 年 8 月 16 日,如有更新请联系作者
表格来源:https://docs.google.com/spreadsheets/d/1QdFJl-lZ6n2QgrD7OoUjUkxIzJz19rM0Rqjbvk_zdow/
该计算器使用 Python 编写,此处为某些头铁的 Pythonist 给出该计算器的源码。该计算器的数据来源为 Discord 上的大佬在 Google 表格上整理的数据,由于众所周知的原因,大多数中国大陆用户无法正常访问和使用 Google 表格,因此对于中国大陆用户而言,该计算器只能在网页上使用,而不能将源代码自行编译成可执行的程序使用。
由于各种原因(包括但不限于本文作者太懒了),此章节现已不再更新,你可以在毕业计算器的网页中点击 Code
查看计算器的源代码。
源码如下:
ximport gspread
from oauth2client.service_account import ServiceAccountCredentials
import time
#Getting Inputs
Tau, Phi, CurrentStudents = "hi", "hi", "hi"
while type(Tau)==str:
Tau=input("Tau (only number after e): ")
if(Tau.isdigit()): Tau=int(Tau)
else:
print("Please input an integer for Tau.")
Tau="Fail"
while type(Phi)==str:
Phi=input("Phi (only number after e): ")
if(Phi.isdigit()): Phi=int(Phi)
else:
print("Please input an integer for Phi.")
Phi="Fail"
while type(CurrentStudents)==str:
CurrentStudents=input("Current Students: ")
if(CurrentStudents.isdigit()): CurrentStudents=int(CurrentStudents)
else:
print("Please input an integer for CurrentStudents.")
CurrentStudents="Fail"
#Grad Calc Function
def GradCalc(Tau, Phi, CurrentStudents):
#Sheet Setup
scope=['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('Encryption_Key.json', scope)
client = gspread.authorize(creds)
sheet = client.open('Exponential Idle Average Phi (Created by Baldy)')
Equations_of_Doom, Other_Data = sheet.get_worksheet(7), sheet.get_worksheet(8)
#Additional Variable Setup
Var, FinalOutput=[Tau, Phi, CurrentStudents, Phi+Tau, CurrentStudents*200+1000], str("Please Have Something Other Than This Output.")
#Equation Calculations
def GradSection():
Section="Section"
if(Var[0]>0): #No Theories Check
if(Var[2]>=20): #Tau under 5k Check
if(Var[3]<=int(Other_Data.cell(col=11, row=2).value)): Section=55 #Section Sorting
else:
if(Var[2]>=65):
if(Var[2]>=233): Section=151
elif(Var[3]<=int(Other_Data.cell(col=12, row=2).value)): Section=103
else: Section="Phi*Tau too low for student count."
else:
Section="Phi*Tau too low for student count."
else: Section="Upon reaching ee5k please respec all into Theory 1.\nIf you have no theories please input less than 20 for students."
elif(Var[1]>0): #Using Students Check
if(Var[1]<93): #5k Check
if(Var[1]>26): Section=15 #5 student Check
else:Section="Phi too low for next graduation.\nPlease use !sigma or the superior !simga."
else: Section="Upon reaching ee5k please respec all into Theory 1.\nIf you have no theories please input 0 for tau."
else: Section="Are You Even Using Students?"
return Section #Outputting F(t) Section
def R9Boost(GradMark):
R9BoostMulti=[0, 0, 0]
#1R9 start
if(GradMark<75 and 75>Var[2]>=65): R9BoostMulti=[GradMark/Var[2], Var[2]/20, GradMark/20]
elif(75<=GradMark<85 and 75>Var[2]>=65): R9BoostMulti=[GradMark**2/(Var[2]*20), Var[2]/20, (GradMark/20)**2]
elif(GradMark>=85 and 75>Var[2]>=65): R9BoostMulti=[GradMark**3/(Var[2]*400), Var[2]/20, (GradMark/20)**3]
#2R9 start
elif(GradMark<85 and 85>Var[2]>=75): R9BoostMulti=[GradMark**2/Var[2]**2, (Var[2]/20)**2, (GradMark/20)**2]
elif(GradMark>=85 and 85>Var[2]>=75): R9BoostMulti=[GradMark**3/(20*Var[2]**2), (Var[2]/20)**2, (GradMark/20)**3]
#3R9 start
elif(Var[2]>=85): R9BoostMulti=[GradMark**3/Var[2]**3, (Var[2]/20)**3, (GradMark/20)**3]
#Rounding
R9BoostMulti=[round(R9BoostMulti[0], 3), round(R9BoostMulti[1],3), round(R9BoostMulti[2],3)]
return R9BoostMulti #Returning Boost Difference
def FunnelSorter(GradFt, Section):
#Phi*Tau low check
if((GradFt-1000)/200<=Var[2] and Var[2]>=20): return ("Phi*Tau too low for next graduation.", False)
elif((GradFt-1000)/200<=Var[2] and Var[2]<20): return ("Phi too low for next graduation.\nPlease use !sigma or the superior !simga.", False)
#2k5k Funneling
elif(20>Var[2]>=18): FtOutput=5000.00
elif(Var[1]<26): FtOutput="Phi too low for next graduation.\nPlease use !sigma or the superior !simga."
elif(Var[2]==17): FtOutput=4800
#5kR9 Funneling
elif(GradFt<5300): FtOutput=5200
elif(Var[4]==5200): FtOutput=5600
elif(5900<=GradFt and Var[2]<25): FtOutput=6000
elif(8900<=GradFt and Var[2]<40): FtOutput=9000
elif(Var[2]<65 and GradFt>=13700): FtOutput=14000
elif(9500>GradFt>9100 and Var[2]==40): FtOutput=9600 #110
elif(11300>GradFt>10700 and 52>Var[2]): FtOutput=11200 #130
elif(Var[2]<60 and 12300<GradFt<12900): FtOutput=12800 #150
#R9Psi3 Funneling
elif(13700<=GradFt and Var[2]<65):FtOutput=14000
elif(Var[2]<75 and 16500>GradFt>=15500): FtOutput=16000
elif(18500>GradFt>=17450 and Var[2]<85): FtOutput=18000
elif(Var[2]==65 and 14500>GradFt>14100): FtOutput=14400 #170
elif(20100>GradFt and 84<Var[2]): FtOutput=20000 #230 (#190 and #210 skipped for R9 funneling)
elif(104>Var[2] and 20600<GradFt<21900): FtOutput=21800 #250
elif(23700>GradFt>22350 and 114>Var[2]): FtOutput=23600 #270
elif(24000<GradFt<25300 and 122>Var[2]): FtOutput=25200 #290
elif(130>Var[2] and 26900>GradFt>25700): FtOutput=26800 #310
elif(Var[2]<139 and 28700>GradFt>27300): FtOutput=28600 #330
elif(28950<GradFt<30300 and 147>Var[2]): FtOutput=30200 #350
elif(30650<GradFt<31900 and 155>Var[2]): FtOutput=31800 #370
elif(Var[2]<164 and 32300<GradFt<33700): FtOutput=33600 #390
elif(171>Var[2] and 34000<GradFt<35100): FtOutput=35000 #410
elif(180>Var[2] and 36900>GradFt>35650): FtOutput=36800 #430
elif(188>Var[2] and 37300<GradFt<38500): FtOutput=38400 #450
elif(40100>GradFt>38900 and 196>Var[2]): FtOutput=40000 #470
elif(40600<GradFt<41900 and 205>Var[2]): FtOutput=41800 #490
elif(Var[2]<213 and 43500>GradFt>42300): FtOutput=43400 #510
elif(45100>GradFt>43900 and CurrentStudents<221): FtOutput=45000 #530
elif(46900>GradFt>45600 and 230>Var[2]): FtOutput=46800 #550
elif(48500>GradFt>47300 and 238>Var[2]): FtOutput=48400 #570
else: FtOutput=GradFt
if(FtOutput==str): return(FtOutput, False)
else: R9=R9Boost(FtOutput/200-5) #R9 Boost Calculation
return (FtOutput, R9[0], R9[1], R9[2]) #Outputting the F(t) for grad and R9 Boost
def FtCalc(Section):
for i in range(3): Equations_of_Doom.update_cell(Section, 4+i, Var[i]) #inputting to sheet
Calc=False
while(Calc==False):
time.sleep(0.5) #check every 1 seconds to see if calculator finished as to not to lag out the api
try:
Calc=float(Equations_of_Doom.cell(col=8, row=Section).value) #grabbing numbers
for i in range(3): Equations_of_Doom.update_cell(Section, 4+i, "awaiting input") #resetting input
break
except: continue
return FunnelSorter(Calc, Section)
#For Faster Calculations
GradSection, UpperLimits=GradSection(), [int(Other_Data.cell(col=17, row=2).value),int(Other_Data.cell(col=17, row=4).value)/200-5]
#The Actual Output Sorter
if(Var[0]<0 or Var[1]<0 or Var[2]<5): FinalOutput=str("Please Input Valid Values for Phi, Tau, and Total Students") #Valid Input No Calculation Check
elif(Var[3]>UpperLimits[0] or Var[2]>UpperLimits[1]): FinalOutput=str("Values too high and outside range of equations.\nIf you have data to add please fill out https://forms.gle/myog2rNgdmQJqPsP6\nCurrent Max Supported Phi*Tau: e")+str( UpperLimits[0])+str("\nCurrent Max Supported Students: ")+str( UpperLimits[1]) #Out of Range Check
elif(GradSection==str): FinalOutput=GradSection #Grad Section Error Print off
else: #Outputs F(t) and/or R9 Boost Based On Section
Ft=FtCalc(GradSection)
if(Ft[1]==False): FinalOutput=str(Ft[0]) #Phi*Tau low check
elif(Ft[1]==0 and Ft[2]==0 and Ft[3]==0): FinalOutput=str("Current Graduatin Mark: ee")+str(Ft[0]) #2k5k Check
else:FinalOutput=str("Current Graduation Mark: ee")+str(Ft[0])+str("\nTheory Income Boosted by ")+str(Ft[1])+str( "x since last Graduation.\nTheory Income Before Graduation: ")+str(Ft[2])+str("\nTheory Income After Graduaton: ")+str(Ft[3]) #5k+ Output
return(FinalOutput) #Final Output
print("\n")
print(GradCalc(Tau, Phi, CurrentStudents))
源码中的 Encryption_Key.json
文件的内容如下:
xxxxxxxxxx
{
"type": "service_account",
"project_id": "ex-idle-graduation-calculator",
"private_key_id": "3c2c328fe32c5995a7031bee27b94ba274c391fc",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvSdoHiYGiv5ts\nqwn115kY4YP8WGyuuHZ2iTFLJoHvc5Ts7+O4+z8rhZ2gL8MX+LSmjd0zO1v6V2vM\nzF+Y8j6vrnu4Hr4masSrCql97C28vwU9hX1WbUUC1dRypDQk+rTs3DBe/YeFHaWp\nUXSHwk2T6IFCPPI5BTYwkNuyAFlIRQJkO+JnPbZ940aWyZ/gfj5s4NoM6ZiXrx1r\nopcpwGe+iJpm0sXyX1UGn0vPGK9ejHO8Y666zWItKvPFpndaNFvlJAzZ2Pl5gfwK\nqFsvdjlIz3pVGd6VEN9CVXtXee7X3vKnPDL9JPbaICxpwNuVIwMaJzwXEAPbsQ3i\ndyRcJhqZAgMBAAECggEAAkiyoe/eMBuzK9/8j/oIjNrJ3UNfTdzLywEaJTkHKbjR\nKbX29vBVUlDRIrhTUi6LqTYmr7s1RdVmiCLbFpJuW9PW/A3gEQK5IUGlwUJ7ORyw\n0T04UhY9f8PN0QZ6oG/mVkdE7MKE/qsRe8VKealr6eQ2MqKICdhgGRR9jQGw7c4v\nwt2g6m1uW/p7d8ag3hPEIDlqIZqowjPJUNX1cmSaq/rzhxNyp3X11QhTPoQPehQ+\nd/Kh8FeflO/FmLZmiUaU3Ncxcl2yf/4T0MsFdOjkVnK6GyEeVJQloz5JV02oAvFZ\nTYx+UX9iSjlAdB2cOX+YjhXKl5IdvrREbMuRyRBFEQKBgQD805PcyNmnYa/bnvTC\nwAgx9XrOUhgdlW3eGj9ITLXHbxhfenfpfkArLND9xNQKa1ADTImTsKaLQFzISEZE\n3HCd70ZvxvYYVdiieUb10FJVFod9GbptvPxqgGUt+ROlXOFaY65Sl5IEg98B6UUF\nEU800nEIABOzdl7YXgUMPxVQ6QKBgQDySsWK/iG2To08LKLKuptPKQdUnnHF9Rbm\nbXZb1RdsN2EEQsRRcyvQwfRAXIELi5+pZaFv/ENY53FXx6et5FFRghg5AZIgGjv4\n624VK7SYQvcxNrYHmrgrAHtgg+6OZdFy/wmtLTPzxsNNPVvCsLaS82KCLPcr7VbL\nWAK/GXHuMQKBgQC0JWnBMpfrrS5qFawfLEdqmZhkdJhcVAIR9K/Mq2QG88DxH0lb\n5SqB2RAdEedoeShtAVcyFffFVxoFV4JCRLQ1xK1yrdjiZCDVPAb01fgkSsZFvFRb\nJwLQPCZcCJMYC8NC7a3jib5wWypGqVkVkEzYvW3unmdrQ1e3Yd7E6BofKQKBgQCm\nuJzFz6kS8WpuBajfJxjHl8vbhktzk/p2BMx01GSRqmmvrOG5yi5UL6IKx5xkfWcY\nAT7c+BC/lEKBzHitR3ZNR9+zGkmanXK3Dglpt/FE9I9z5dnL0cL4lBRRjXcRtS4y\nmxvldj1ReWvaMmZ5yW9YHvGh8Z8DMwWOVrlNFg03gQKBgGYFb9RHLf5cR0FbCNtE\nXolzSblFen+/tONLazzg+h0vm/30ZmVzcWMc7tUcGUQg15ZfU6KdZGCmjvo72nLP\noDSFp0WZll27KznvQUBTQzc+2NXcRPqjc/1tSESkfOz7aOCqse8j9M5nVv066hXQ\nifOi8xZvXJ/R8FGv1YfoPnNp\n-----END PRIVATE KEY-----\n",
"client_email": "lebaldy2002@ex-idle-graduation-calculator.iam.gserviceaccount.com",
"client_id": "104940947615519926551",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/lebaldy2002%40ex-idle-graduation-calculator.iam.gserviceaccount.com"
}