Advertisement
Guest User

idlemosnterthoery(wavefunction)

a guest
May 22nd, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.05 KB | None | 0 0
  1. /* Hello. Read this. This is for mid to late game farming (not pushing). This assumes you oneshot throughout the levels upto a maximum consideration of level finalX. It considers time upto finalT. Space is measured in levels; time in frames (the time from going from mob to mob with one-shotting. Dev said there is a .3s window minimum, but i have a roughly .375s or for frame rate. measure this yourself to convert things to seconds.) I will tell you how to adjust finalX and finalT. The smaller their area the smaller the run-time. Make sure to first adjust jewelX to the maximum level you can skip, pskip to the probability of skip, and book to the amount of mob reduction you have. Then partially run the program. It will initially read you a maxlevel and min level. Read the minlevel. Raising finalT raises this. You want it to be above the levels you will consider resetting. Read maxlevel. Raising finalT raises this. You want finalX to be above this value. Note--earlier on, say when energy jewel is not maxed, you should lower finalX to the place you can no longer 1-shot. finalX must exceed jewelX. I recommend strategy number 2.
  2.  
  3. #include <iostream>
  4. #include <math.h>
  5. #include <cstdlib>
  6. #include <conio.h>
  7. #include <ctime>
  8. #include <string>
  9. #include <cstdio>
  10.  
  11. using namespace std;
  12.  
  13. const int finalT = 40000;
  14. const int finalX = 7000;
  15. const int jewelX = 3502;
  16. float T = 0.375;
  17. int book = 8;
  18. float pskip = 0.5;
  19. float state [finalX+1][1001] = {};
  20. float temp [finalX+1][1001] = {};
  21. int mobs [finalX+1]={};
  22. int maxlvl [finalT+1]={};
  23. int minlvl [finalT+1]={};
  24. double relic [finalX+1]={};
  25. float roll [11]={0, .1, .1, .1, .1, .1, .1, .1, .1, .1, .1};
  26.  
  27.  
  28. int mobcount()
  29. {
  30. mobs[0] = 10 - book;
  31. int counter = 1;
  32. int dounter = 1;
  33. for (int i = 1; i<=finalX; i++)
  34. {
  35. if (counter == 500)
  36. {
  37. mobs[i] = mobs[i-1] + 2;
  38. counter = 1;
  39. }
  40. else
  41. mobs[i]=mobs[i-1];
  42.  
  43. if(i>=500)
  44. counter ++;
  45. }
  46.  
  47. for (int i = 1; i<=finalX; i++)
  48. if (mobs[i]<=0)
  49. mobs[i]=1;
  50.  
  51. cout<<"maxmobs: "<<mobs[finalX]<<endl;
  52. counter=1;
  53. maxlvl[0]=1;
  54. minlvl[0]=1;
  55. for (int t=1; t<= finalT; t++)
  56. {
  57.  
  58. if (dounter==mobs[maxlvl[t-1]]+1)
  59. {
  60. if(maxlvl[t-1]<=jewelX)
  61. maxlvl[t]=maxlvl[t-1]+10;
  62. else
  63. maxlvl[t]=maxlvl[t-1]+1;
  64.  
  65. dounter=0;
  66. }
  67. else
  68. {
  69. maxlvl[t]=maxlvl[t-1];
  70. }
  71. if (counter==mobs[minlvl[t-1]]+1)
  72. {
  73. minlvl[t]=minlvl[t-1]+1;
  74. counter=0;
  75. }
  76. else
  77. {
  78. minlvl[t]=minlvl[t-1];
  79. }
  80. //cout<<t<<" maxlevel: " <<maxlvl[t]<< "\t minlevel: "<< minlvl[t]<< endl;
  81. dounter++;
  82. counter++;
  83. }
  84.  
  85. cout<<finalT<<" maxlevel: " <<maxlvl[finalT]<< "\t minlevel: "<< minlvl[finalT]<< endl;
  86. cout<<"When considering <level> at fixed time, \n ensure you consider the value of maxlevel at that time."<<endl;
  87. cout<<"When considering <surtime> at fixed level, \n ensure you consider the value of time at that minlevel."<<endl;
  88.  
  89. for (int i=50; i<=finalX; i++)
  90. {
  91. relic[i]= relic[i-10]+pow((i-40.0), 1.5);
  92. //cout<<i<<" relics: "<< relics[i] <<endl;
  93. }
  94.  
  95. return 0;
  96. }
  97. int initial ()
  98. {
  99. mobcount();
  100. for (int i = 0; i<=finalX; i++)
  101. {
  102. for (int j=0; j <= mobs[i]+1; j++)
  103. {
  104. temp[i][j]=0.0;
  105. state[i][j]=0.0;
  106. }
  107. }
  108.  
  109. return 0;
  110. }
  111.  
  112. int F (int x)
  113. {
  114. if (x>0)
  115. return x;
  116. else
  117. return 0;
  118. }
  119. int main ()
  120. {
  121. initial();
  122. //freopen("output.txt","w",stdout);
  123. float avglvl = 0.0;
  124. double avgrate = 0.0;
  125. float avgtime[finalX+1]= {};
  126. float avgtimesurpass[finalX+1]={};
  127. double avgreciptsurpass[finalX+1]={};
  128. int t=0;
  129. int bestspace = 1;
  130. double bestspacerate = 0.0;
  131. int besttime = 0;
  132. double besttimerate = 0.0;
  133. int besttimeavglvl = 1;
  134.  
  135.  
  136. for(int a=1; 1<=a && a<=mobs[1]+1; a++)
  137. {
  138. if(a==mobs[1]+1)
  139. state[1][0]=1.0;
  140. else
  141. state[1][a]=1.0;
  142. cout<<"psi(1)"<<"("<<a%(mobs[1]+1)<<")"<<"("<<t<<")"<<" = " << state[1][a%(mobs[1]+1)]<<endl;
  143. t++;
  144. }
  145.  
  146. for (int i = 0; i<=finalX; i++)
  147. {
  148. for (int j=0; j <= mobs[i]+1; j++)
  149. {
  150. temp[i][j]=0.0;
  151. state[i][j]=0.0;
  152. }
  153. }
  154. temp[1][0]=1;
  155.  
  156. while (t<=finalT)
  157. {
  158. for (int i=2; i<= finalX; i++)
  159. {
  160. for (int j=1; j <= mobs[i]+1; j++)
  161. {
  162.  
  163. if(j==1)
  164. {
  165. if (i<=jewelX+1)
  166. state[i][1]= temp[i-1][0]*(1-pskip) + (pskip)*
  167. (temp[F(i-2)][0]*roll[1] + temp[F(i-3)][0]*roll[2] + temp[F(i-4)][0]*roll[3] +
  168. temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
  169. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  170. temp[F(i-11)][0]*roll[10]);
  171.  
  172. else if (i<=jewelX+11)
  173. {
  174. if (i==jewelX+2)
  175. state[i][1]= temp[i-1][0] + (pskip)*
  176. (temp[F(i-2)][0]*roll[1]+ temp[F(i-3)][0]*roll[2] + temp[F(i-4)][0]*roll[3] +
  177. temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
  178. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  179. temp[F(i-11)][0]*roll[10]);
  180.  
  181. else if (i==jewelX+3)
  182. state[i][1]= temp[i-1][0] + (pskip)*
  183. (temp[F(i-3)][0]*roll[2]+ temp[F(i-4)][0]*roll[3] +
  184. temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
  185. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  186. temp[F(i-11)][0]*roll[10]);
  187.  
  188. else if (i==jewelX+4)
  189. state[i][1]= temp[i-1][0] + (pskip)*
  190. (temp[F(i-4)][0]*roll[3]+ temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
  191. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  192. temp[F(i-11)][0]*roll[10]);
  193.  
  194. else if (i==jewelX+5)
  195. state[i][1]= temp[i-1][0] + (pskip)*
  196. (temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
  197. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  198. temp[F(i-11)][0]*roll[10]);
  199.  
  200. else if (i==jewelX+6)
  201. state[i][1]= temp[i-1][0] + (pskip)*
  202. (temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
  203. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  204. temp[F(i-11)][0]*roll[10]);
  205.  
  206. else if (i==jewelX+7)
  207. state[i][1]= temp[i-1][0] + (pskip)*
  208. (temp[F(i-7)][0]*roll[6] +
  209. temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  210. temp[F(i-11)][0]*roll[10]);
  211.  
  212. else if (i==jewelX+8)
  213. state[i][1]= temp[i-1][0] + (pskip)*
  214. (temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  215. temp[F(i-11)][0]*roll[10]);
  216.  
  217. else if (i==jewelX+9)
  218. state[i][1]= temp[i-1][0] + (pskip)*
  219. (temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
  220. temp[F(i-11)][0]*roll[10]);
  221.  
  222. else if (i==jewelX+10)
  223. state[i][1]= temp[i-1][0] + (pskip)*
  224. (temp[F(i-10)][0]*roll[9] +
  225. temp[F(i-11)][0]*roll[10]);
  226.  
  227. else if (i==jewelX+11)
  228. state[i][1]= temp[i-1][0] + (pskip)*
  229. (temp[F(i-11)][0]*roll[10]);
  230.  
  231. }
  232.  
  233. else
  234. state[i][1]= temp[i-1][0];
  235.  
  236. }
  237.  
  238.  
  239. else
  240. state [i][j%(mobs[i]+1)] = temp[i][j-1];
  241.  
  242.  
  243.  
  244.  
  245. if (state[i][j%(mobs[i]+1)] != 0.0)
  246. {
  247. //cout<<"psi("<<i<<")"<<"("<<j%(mobs[i]+1)<<")"<<"("<<t<<")"<<" = " <<
  248. //state[i][j%(mobs[i]+1)]<<endl;
  249. avglvl=avglvl+(float(i)*state[i][j%(mobs[i]+1)]);
  250. avgrate=avgrate+(relic[i]*state[i][j%(mobs[i]+1)])/(0.0+t);
  251. avgtime[i]=avgtime[i] + ((t+0.0)*state[i][j%(mobs[i]+1)]);
  252.  
  253. if (i<=finalX-11 && j==mobs[i]+1)
  254. {
  255. if (i<=jewelX)
  256. {
  257. avgtimesurpass[i+1]=avgtimesurpass[i+1]+ (t+1)*
  258. state[i][0];
  259. avgtimesurpass[i+2]=avgtimesurpass[i+2]+ (t+1)*
  260. state[i][0]*pskip;
  261. avgtimesurpass[i+3]=avgtimesurpass[i+3]+ (t+1)*
  262. state[i][0]*pskip*(1-roll[1]);
  263. avgtimesurpass[i+4]=avgtimesurpass[i+4]+ (t+1)*
  264. state[i][0]*pskip*(1-(roll[1]+roll[2]));
  265. avgtimesurpass[i+5]=avgtimesurpass[i+5]+ (t+1)*
  266. state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]));
  267. avgtimesurpass[i+6]=avgtimesurpass[i+6]+ (t+1)*
  268. state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]+roll[4]));
  269. avgtimesurpass[i+7]=avgtimesurpass[i+7]+ (t+1)*
  270. state[i][0]*pskip*(roll[6]+roll[7]+roll[8]+roll[9]+roll[10]);
  271. avgtimesurpass[i+8]=avgtimesurpass[i+8]+ (t+1)*
  272. state[i][0]*pskip*(roll[7]+roll[8]+roll[9]+roll[10]);
  273. avgtimesurpass[i+9]=avgtimesurpass[i+9]+ (t+1)*
  274. state[i][0]*pskip*(roll[8]+roll[9]+roll[10]);
  275. avgtimesurpass[i+10]=avgtimesurpass[i+10]+ (t+1)*
  276. state[i][0]*pskip*(roll[9]+roll[10]);
  277. avgtimesurpass[i+11]=avgtimesurpass[i+11]+ (t+1)*
  278. state[i][0]*pskip*(roll[10]);
  279.  
  280. avgreciptsurpass[i+1]=avgreciptsurpass[i+1]+ (relic[i+1]/(t+1))*
  281. state[i][0];
  282. avgreciptsurpass[i+2]=avgreciptsurpass[i+2]+ (relic[i+2]/(t+1))*
  283. state[i][0]*pskip;
  284. avgreciptsurpass[i+3]=avgreciptsurpass[i+3]+ (relic[i+3]/(t+1))*
  285. state[i][0]*pskip*(1-roll[1]);
  286. avgreciptsurpass[i+4]=avgreciptsurpass[i+4]+ (relic[i+4]/(t+1))*
  287. state[i][0]*pskip*(1-(roll[1]+roll[2]));
  288. avgreciptsurpass[i+5]=avgreciptsurpass[i+5]+ (relic[i+5]/(t+1))*
  289. state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]));
  290. avgreciptsurpass[i+6]=avgreciptsurpass[i+6]+ (relic[i+6]/(t+1))*
  291. state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]+roll[4]));
  292. avgreciptsurpass[i+7]=avgreciptsurpass[i+7]+ (relic[i+7]/(t+1))*
  293. state[i][0]*pskip*(roll[6]+roll[7]+roll[8]+roll[9]+roll[10]);
  294. avgreciptsurpass[i+8]=avgreciptsurpass[i+8]+ (relic[i+8]/(t+1))*
  295. state[i][0]*pskip*(roll[7]+roll[8]+roll[9]+roll[10]);
  296. avgreciptsurpass[i+9]=avgreciptsurpass[i+9]+ (relic[i+9]/(t+1))*
  297. state[i][0]*pskip*(roll[8]+roll[9]+roll[10]);
  298. avgreciptsurpass[i+10]=avgreciptsurpass[i+10]+ (relic[i+10]/(t+1))*
  299. state[i][0]*pskip*(roll[9]+roll[10]);
  300. avgreciptsurpass[i+11]=avgreciptsurpass[i+11]+ (relic[i+11]/(t+1))*
  301. state[i][0]*pskip*(roll[10]);
  302. }
  303.  
  304. else
  305. {
  306. avgtimesurpass[i+1]=avgtimesurpass[i+1]+ (t+1)*
  307. state[i][0];
  308.  
  309. avgreciptsurpass[i+1]=avgreciptsurpass[i+1]+ (relic[i+1]/(t+1))*
  310. state[i][0];
  311. }
  312.  
  313.  
  314. }
  315.  
  316. }
  317.  
  318. }
  319.  
  320. }
  321.  
  322.  
  323. for (int i=1; i<= finalX; i++)
  324. for (int j=1; j <= mobs[i]+1; j++)
  325. temp[i][j%(mobs[i]+1)]=state[i][j%(mobs[i]+1)];
  326.  
  327. /*if (t%100 == 0)
  328. {
  329. cout<< "time: "<<t<<" <level>: "<<avglvl<<"\t <rate>: "<< avgrate<< endl;
  330. }*/
  331.  
  332. if (avgrate >= besttimerate)
  333. {
  334. besttimerate=avgrate;
  335. besttime=t;
  336. besttimeavglvl = avglvl;
  337. }
  338.  
  339. avglvl=0.0;
  340. avgrate=0.0;
  341.  
  342.  
  343. t++;
  344. }
  345.  
  346. for (int i=10; i<= finalX; i=i+10)
  347. {
  348. if (avgreciptsurpass[i]>=bestspacerate)
  349. {
  350. bestspacerate=avgreciptsurpass[i];
  351. bestspace=i;
  352. }
  353.  
  354. }
  355.  
  356. cout<<"first is idle strategy with fixed time. second with fixed space."<<endl;
  357. cout <<"reach time: "<<besttime<<" <reached level>: "<<besttimeavglvl << " <rate>: " <<besttimerate <<endl;
  358. cout<<"surpass level: "<<bestspace<<" <surpass time>: " <<avgtimesurpass[bestspace]<< " <rate>: " << bestspacerate <<endl;
  359.  
  360.  
  361.  
  362.  
  363. return 0;
  364. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement