Context
We now have conversion operators to handle 16-bit integers. We also created a piece of code to display 16-bit integers as decimal numbers.The code was quite verbose however. Using those operators, one should really be careful regarding the "type" used. Do not use 16-bit integers when it's not needed.
Here, for example, we have
- One integer N (16-bit)
- divided by ten
- divisor is always 10: 8-bit
- remainder is always less than ten: 8-bit
- quotient may be more than 256: 16-bit
- else flag used by division: 8-bit
- Take remainder and add 48 to have a char
- 48 can be added using 6x8, all of them (including remainder) are always less than 256: 8-bit
- Clear remaining part of divisor: 8-bit
- Move quotient and start again: 16-bit
There is a huge place to improve code here.
The best way is probably to write BF instructions for 8-bit and plain text instructions for 16-bit, and finally replace plain text, to avoid mistakes.
Example:
WHILE
RIGHT
>>>++++++++++<<<
LEFT
WHILE
MINUS
RIGHT
+>>+>-[-<]<[> RIGHT PLUS LEFT <-<<[->>>+<<<]>]<
LEFT
LOOP
RIGHT
<++++++[->++++++++<]>>>>[-]
......
LOOP
[.[-] <<< LEFT]
Then, replace WHILE, RIGHT, ... (and you can also remove all '< >' or '> <')
Minified code to print 2056 - 75% smaller - try it
>>>++++++++>++++++++[[->+<]<<+>>]<[[->+<]<+>]>[-<+>]>[-<+>]<<<[[-]>>>>>>>>++++++++++<<<<<<[[->+<]<<+>>]<[[->+<]<+>]>[-<+>]>[-<+>]<<<[[-]+>[<-]<[->>-<<<]>>->>>>+>>+>-[<-]<[->>>>>+<+>[<-]<[->>+<<<]><<<<<<[->>>+<<<]>]<<<<[[->+<]<<+>>]<[[->+<]<+>]>[-<+>]>[-<+>]<<<]>>>>++++++[->++++++++<]>>>>[-]>>>>>[[->+<]<<+>>]<[[->+<]<+>]>[-<+>]>[-<+>]<<<[[-]+>[<-]<[->>-<<<]>>-<<<<+<+>[<-]<[->>+<<<]>>>>>>>[[->+<]<<+>>]<[[->+<]<+>]>[-<+>]>[-<+>]<<<]<<[[->+<]<<+>>]<[[->+<]<+>]>[-<+>]>[-<+>]<<<]<<[.[-]<<<<<<<]
Aucun commentaire:
Enregistrer un commentaire