- Joined
- Sep 26, 2009
- Messages
- 9,547
You can make text tags with large font which makes it unnecessary to filter out characters like that
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
library BigInt requires BI
endlibrary
Put largest 2 digits of number being divided together
digit1*base+digit2 = combined digit
divide the combined digit by the largest dividend digit
combined/largestDividend = first guess
loop
multiply the first guess by the 2nd largest dividend digit if there is one
If there isn't, exit
2nd largest digit * first guess = some product
divide that by the base
some product / base = some quotient
divide that quotient by the largest dividend digit
some quotient / largest dividend digit = guess off
exitwhen prev guess off == guess off
set first guess = first guess + (prevGuessOff-guessOff)
set prevGuessOff = guessOff
endloop
multiply first 2 digits together
3*46339+1538 = 140555
do that / first digit
140555/21 = 6693
do that * second digit
179914533
divide by 46339
3882
divide by first digit
3882/21 = 184
subtract from first guess
6693 - 184 = 6509
actual: 6513
repeat
6509 * 26881 = 174968429
174968429 / 46339 = 3775
3775/21 = 179
184 - 179 = 5 (exitwhen this is 0)
new: 179
6693 - 179 = 6514
repeat
6514 * 26881 = 175102834
175102834 / 46339 = 3778
3778/21 = 179
179 - 179 = 0
set so[0]=5
set so[1]=2
set so[2]=3
set so[3]=11
set so[4]=2
set so[5]=7
set so[6]=3
loop
exitwhen (toSubtract.prev.digit*base + toSubtract.prev.prev.digit <= remainder.prev.digit*base + remainder.prev.prev.digit)
set guess1 = guess - ((toSubtract.prev.digit*base + toSubtract.prev.prev.digit) - (remainder.prev.digit*base + remainder.prev.prev.digit))/divisor.prev.digit
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Guess 1: "+I2S(guess1))
endif
exitwhen (0 >= guess1 or base <= guess1 or guess1 == guess)
call toSubtract.multFast(base, divisor, guess1)
if (guess1 + 5 > guess and guess1 - 5 < guess) then
set guess = guess1
exitwhen true
endif
set guess = guess1
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"To Subtract 1: "+toSubtract.toString())
endif
if (remainder.size > toSubtract.size) then
set guess2 = guess + ((remainder.prev.digit*base + remainder.prev.prev.digit) - (toSubtract.prev.digit))/divisor.prev.digit
else
if (remainder.prev.digit > toSubtract.prev.digit) then
set guess2 = guess + ((remainder.prev.digit*base + remainder.prev.prev.digit) - (toSubtract.prev.digit*base + toSubtract.prev.prev.digit))/divisor.prev.digit
else
set guess2 = guess + (remainder.prev.prev.digit - toSubtract.prev.prev.digit)/divisor.prev.digit + (divisor.prev.prev.digit + base/2)/base
endif
endif
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Guess 2: "+I2S(guess2))
endif
exitwhen (base <= guess2 or 0 >= guess2 or guess1 == guess2)
call toSubtract.multFast(base, divisor, guess2)
if (guess2 + 5 > guess and guess2 - 5 < guess) then
set guess = guess2
exitwhen true
endif
set guess = guess2
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"To Subtract 2: "+toSubtract.toString())
endif
endloop
if condition then
// code
else
exitwhen true
endif
exitwhen not condition
// code
