最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

新版攔截計算器

2023-08-25 04:59 作者:Crescebdo  | 我要投稿

[v2.0.3]?下載鏈接(2023/8/24更新):

https://pan.baidu.com/s/15BzqA_xWvLlDSEXC7qdJFw?pwd=1437



使用Rust重寫原先的Python版攔截計算器,大量提升運(yùn)行速度(至多5000倍),并修復(fù)各種問題。


速度對比

常規(guī)計算(快~150倍):

python舊版
rust新版


較復(fù)雜計算(快~5000倍):

python舊版
rust新版


可以看到python版花了超過1s,其實(shí)是影響使用體驗(yàn)的。



邏輯優(yōu)化


之所以速度有顯著提升,除了rust本身比python快以外,新版也大量優(yōu)化了計算邏輯。


原先版本中,如果要計算可攔區(qū)間:

  1. 每次計算要遍歷所有rnd,也就是0~100,共101種可能

  2. 與此同時,小鬼高棧/低棧的情況分開計算,共2種可能

  3. 與此同時,需分別計算巨人x最小/最大值,共2種可能

  4. 最后,在需要計算的delay范圍內(nèi)(一般為106~206),先從小到大每cs計算一次,獲得最小可攔;再從大到小每cs計算一次,獲得最大可攔

  5. 對于延遲 x cs能否攔截,計算方法是從105開始模擬至x cs,然后返回結(jié)果

在無法攔截的最差情況下,總共需計算(1+2+3+4....+100)*101*2*2*2 =?4080400cs。


這里有很多是無用功。比如,rnd對小鬼的影響其實(shí)是單調(diào)的,因此只需考慮最小值與最大值。再比如,小鬼高棧和低?;臼且换厥?,數(shù)據(jù)完全相同,只是時間上差了1cs。再比如,每次都從105開始模擬很浪費(fèi),如果要計算106~206,只模擬一遍就夠了,無需每次都從105重來。


在新版邏輯下,若執(zhí)行同樣的計算:

  1. 只遍歷rnd=0與rnd=100,2種可能

  2. 高棧與低棧放在一起計算,并進(jìn)行邊界情況的換算

  3. 仍舊分別計算巨人x最小/最大值,2種可能

  4. 在delay范圍內(nèi),只完整模擬一次(從小鬼出生到落地),期間記錄最小、最大的可攔截延遲

總計算量為(100)*2*2 = 400cs,是先前的萬分之一。

由于1路小鬼飛行軌跡有輕微不同(受負(fù)浮點(diǎn)數(shù)取整影響),故新版計算了兩次(2炮攔123,以及4炮攔345),所以實(shí)際計算量約為5000分之一,和快至多5000倍的數(shù)據(jù)相符。


另外由于python版實(shí)在過慢,其實(shí)是用了一些智能推測,猜測用戶想要前場攔截還是尾炸,從而略去某些計算。盡管大部分情況下這是合理的,但有些情況下不符合預(yù)期,而新版總是執(zhí)行從小鬼出生到落地可冰的完整計算,數(shù)據(jù)更加可靠。



功能優(yōu)化


除了計算效率上,新版也增加了更多人性化設(shè)置,如:

  1. 現(xiàn)在支持計算有傷攔截了,默認(rèn)顯示所有可攔區(qū)間,如果期間有傷,會額外顯示有傷區(qū)間:


2. 如圖所示,現(xiàn)在默認(rèn)也會輸出最早啃食、最早可冰時機(jī),不必再用單獨(dú)的冰殺小鬼函數(shù)

3. 此外,還會顯示計算設(shè)定,再也不用猜計算器在算兩行還是三行啦

4. 增加“doom”指令,計算核武更便捷:

“>”及之后部分為指定巨人坐標(biāo)。

如果不指定,就會默認(rèn)使用當(dāng)前wave設(shè)置,進(jìn)行便捷計算:

ND5

5. wave支持多個冰時機(jī),無需再用pos函數(shù)。

6.?修正舊版里屋頂炮距的兩處數(shù)據(jù)錯誤(感謝Reisen指出,他已經(jīng)在v1.2.0版本里修正)

7. 使用更科學(xué)的時機(jī)(由默認(rèn)植物激活→炮攔截改為默認(rèn)炮激活→炮攔截,使用核武時自動修正為炮激活→植物攔截,以及修正冰時機(jī)等)



軟件說明


本程序源碼以MIT許可證發(fā)布:

https://github.com/Rottenham/pvz-interception-calculator-rust


MIT 許可證


版權(quán) (c) 2023 Crescendo


特此免費(fèi)授予任何獲得本軟件副本和相關(guān)文檔文件(下稱“軟件”)的人不受限制地處置該軟件的權(quán)利,包括不受限制地使用、復(fù)制、修改、合并、發(fā)布、分發(fā)、轉(zhuǎn)授許可和/或出售該軟件副本,以及再授權(quán)被配發(fā)了本軟件的人如上的權(quán)利,惟須遵守條件如下:


上述版權(quán)聲明和本許可聲明應(yīng)包含在該軟件的所有副本或?qū)嵸|(zhì)成分中。


本軟件是“如此”提供的,沒有任何形式的明示或暗示的保證,包括但不限于對適銷性、特定用途的適用性和不侵權(quán)的保證。在任何情況下,作者或版權(quán)持有人都不對任何索賠、損害或其他責(zé)任負(fù)責(zé),無論這些追責(zé)來自合同、侵權(quán)或其它行為中,還是產(chǎn)生于、源于或有關(guān)于本軟件以及本軟件的使用或其它處置。

請注意,攔截計算器無法確保100%的計算精度,其原因包括:

1. 所用的巨人位移數(shù)據(jù)并非100%精確;

2. 所用的僅取坐標(biāo)極值的攔截區(qū)間計算方式并非100%精確。


在極端情況下,計算結(jié)果與實(shí)際情況可能存在1~2cs左右的偏差,敬請諒解。


除上述在技術(shù)上難以解決的問題外,攔截計算器約定在能力所及的范圍內(nèi)盡可能接近游戲情況。






新版攔截計算器的評論 (共 條)

分享到微博請遵守國家法律
桂平市| 温泉县| 柯坪县| 肇州县| 高尔夫| 浙江省| 中牟县| 福州市| 滁州市| 仪征市| 通辽市| 五寨县| 会宁县| 白朗县| 大新县| 磐安县| 大港区| 眉山市| 黎川县| 临潭县| 上高县| 湖州市| 教育| 夹江县| 灵台县| 根河市| 苗栗县| 新邵县| 苏尼特左旗| 镇安县| 大邑县| 安义县| 贵州省| 弥渡县| 大理市| 温宿县| 夏津县| 汕头市| 沙洋县| 隆昌县| 金乡县|