SHOW:
|
|
- or go back to the newest paste.
1 | <html> | |
2 | <meta charset="UTF-8"/> | |
3 | <head> | |
4 | </head> | |
5 | <body> | |
6 | ▲<br/> | |
7 | ║<br/> | |
8 | ╚=▲ | |
9 | <p onChange=estimate()> | |
10 | <button class="js-btn" onclick="calculate();">Calculate</button> Only display values <textarea id="js-regexplimiter" cols="50" rows="1"></textarea> Force double weight difference(inelastic)<input type="checkbox" id="inelastic"></input><br/> | |
11 | Friction 1<textarea class="js-regexpF1" cols="50" rows="1">10</textarea>Cart 1 min<textarea class="js-regexpm1" cols="50" rows="1">314</textarea>Cart 1 max<textarea class="js-regexpW1" cols="50" rows="1">314</textarea><br/> | |
12 | Friction 2<textarea class="js-regexpF2" cols="50" rows="1">10</textarea>Cart 2 min<textarea class="js-regexpm2" cols="50" rows="1">4</textarea>Cart 2 max<textarea class="js-regexpW2" cols="50" rows="1">4</textarea><br/> | |
13 | Friction 3<textarea class="js-regexpF3" cols="50" rows="1">10</textarea>Cart 3 min<textarea class="js-regexpm3" cols="50" rows="1">15</textarea>Cart 3 max<textarea class="js-regexpW3" cols="50" rows="1">15</textarea><br/> | |
14 | Friction 4<textarea class="js-regexpF4" cols="50" rows="1">10</textarea>Cart 4 min<textarea class="js-regexpm4" cols="50" rows="1">134</textarea>Cart 4 max<textarea class="js-regexpW4" cols="50" rows="1">134</textarea><br/> | |
15 | Friction 5<textarea class="js-regexpF5" cols="50" rows="1">10</textarea> | |
16 | </p> | |
17 | <p> | |
18 | <textarea id="js-output" cols="50" rows="10"></textarea><br/> | |
19 | ||
20 | <button class="js-btn2" onclick="estimate();">estimate nr of calcs</button> <span id=timetaken>Seconds</span><textarea id="js-estimate" cols="50" rows="1"></textarea> <br/> | |
21 | ||
22 | ||
23 | </p> | |
24 | <script> | |
25 | function gid(m){return document.getElementById(m);} | |
26 | function qs(n) {return document.querySelector(n);} | |
27 | var mfloor = Math.floor; | |
28 | var mmin = Math.min; | |
29 | var mceil = Math.ceil; | |
30 | function outputspeed(inputspeed,inputcartweight,outputcartweight,friction){ | |
31 | return (mfloor(inputspeed*mmin(1,inputcartweight/outputcartweight))-friction); | |
32 | } | |
33 | function estimate() { | |
34 | var minweights = new Array(); | |
35 | var maxweights = new Array(); | |
36 | ||
37 | for(var i=0; i<4; i++){ | |
38 | minweights[i] = parseInt(qs('.js-regexpm'+(i+1)).value.length > 0 ? qs('.js-regexpm'+(i+1)).value : 0); | |
39 | } | |
40 | ||
41 | for(var i=0; i<4; i++){ | |
42 | maxweights[i] = parseInt(qs('.js-regexpW'+(i+1)).value.length > 0 ? qs('.js-regexpW'+(i+1)).value : 0); | |
43 | } | |
44 | var rv=1; | |
45 | for(var i=0;i<4;i++){ | |
46 | rv=rv*(maxweights[i]-minweights[i]+1); | |
47 | } | |
48 | ||
49 | gid("js-estimate").value=rv*5.452/60466176; | |
50 | ||
51 | } | |
52 | ||
53 | function calculate(){ | |
54 | var rn = Date.now(); | |
55 | var frictions = new Array(); | |
56 | var minweights = new Array(); | |
57 | var maxweights = new Array(); | |
58 | ||
59 | for(var i=0; i<5; i++){ | |
60 | frictions[i] = parseInt(qs('.js-regexpF'+(i+1)).value.length > 0 ? qs('.js-regexpF'+(i+1)).value : 0); | |
61 | } | |
62 | ||
63 | for(var i=0; i<4; i++){ | |
64 | minweights[i] = parseInt(qs('.js-regexpm'+(i+1)).value.length > 0 ? qs('.js-regexpm'+(i+1)).value : 0); | |
65 | } | |
66 | ||
67 | for(var i=0; i<4; i++){ | |
68 | maxweights[i] = parseInt(qs('.js-regexpW'+(i+1)).value.length > 0 ? qs('.js-regexpW'+(i+1)).value : 0); | |
69 | } | |
70 | ||
71 | var cyclelength=0; | |
72 | var cycleforwards=0; | |
73 | var cycleback=0; | |
74 | var s=new Array(); | |
75 | var sn=0; | |
76 | var limiter = gid('js-regexplimiter').value.length > 0 ? parseInt(gid('js-regexplimiter').value) : false; | |
77 | var c1,c2,c3,c4; | |
78 | var returntext=""; | |
79 | var inelastic = gid('inelastic').checked; | |
80 | for(c1=minweights[0]; c1<(maxweights[0]+1); c1++){ | |
81 | for(c2=minweights[1]; c2<(maxweights[1]+1); c2++){ | |
82 | if(!inelastic||inelastic&&(((c1/c2)<0.5)||((c1/c2)>2))){ | |
83 | for(c3=minweights[2]; c3<(maxweights[2]+1); c3++){ | |
84 | if(!inelastic||inelastic&&(((c3/c2)<0.5)||((c3/c2)>2))){ | |
85 | for(c4=minweights[3]; c4<(maxweights[3]+1); c4++){ | |
86 | if(!inelastic||inelastic&&(((c3/c4)<0.5)||((c3/c4)>2))){ | |
87 | cyclelength=0; | |
88 | ||
89 | s[0]=4900-frictions[0]; | |
90 | s[1]=outputspeed(s[0],c1,c2,frictions[1]); | |
91 | s[2]=outputspeed((s[1]),c2,c3,frictions[2]); | |
92 | s[3]=outputspeed((s[2]-1000),c3,c4,frictions[3]); | |
93 | if(s[2]<1){break;} | |
94 | if(s[3]<1){break;} | |
95 | s[4]=4900-frictions[4]; | |
96 | s[5]=outputspeed((s[4]),c4,c3,frictions[3]); | |
97 | s[6]=outputspeed((s[5]),c3,c2,frictions[2]); | |
98 | s[7]=outputspeed((s[6]-1000),c2,c1,frictions[1]); | |
99 | if(s[6]<1){break;} | |
100 | if(s[7]<1){break;} | |
101 | cyclelength += ( s[6]<(s[0]-s[7]-frictions[1]) ? 1 : 1+mceil( (s[6]-(s[0]-s[7]-frictions[1]) )/s[1] ) ); | |
102 | cyclelength += mceil(50000/s[2]) + ((mceil(100000/(s[5]-frictions[3]+frictions[2])) < mceil(50000/s[2])) ? 1 : 0); | |
103 | cyclelength += mceil(100000/s[3]); | |
104 | ||
105 | cyclelength += ( s[2]<(s[4]-s[3]-frictions[3]) ? 1 : 1+mceil( (s[2]-(s[4]-s[3]-frictions[3]) )/s[5] ) ); | |
106 | cyclelength += mceil(50000/s[6]) + ((mceil(100000/(s[1]-frictions[1]+frictions[2])) < mceil(50000/s[6])) ? 1 : 0); | |
107 | cyclelength += mceil(100000/s[7]); | |
108 | cyclelength--; | |
109 | - | if((limiter==false)||(limiter==cyclelength)||((limiter+1)==cyclelength)){ |
109 | + | cyclelength--; |
110 | if((limiter==false)||(limiter==cyclelength)||((limiter-1)==cyclelength)){ | |
111 | returntext+=cyclelength + " : " + c1 + " " + c2 + " " + c3 + " " + c4 + " \n"; | |
112 | } | |
113 | ||
114 | }} | |
115 | }} | |
116 | }} | |
117 | } | |
118 | gid("js-output").value = returntext; | |
119 | gid('timetaken').innerText=("Calculated! Took " + ((Date.now()-rn)/1000 ) + " seconds."); | |
120 | } | |
121 | ||
122 | ||
123 | </script> | |
124 | </body> |