Talk:Spoon

From Esolang
Jump to navigation Jump to search

Context-sensitive compression

You could use context-sensitive compression, in which the encoding for a command depends on what comes before it. Also, you don't need a separate EXIT command, just use the ] command as a end of file marker. For example, + and - will not occur together in either order, < and > will not occur together in either order, a > must occur in the program first before any < occurs, a [ will not occur at the beginning of the program, etc. --Zzo38 21:40, 15 December 2007 (UTC)

Calculation of left context probilities

The overall probabilities I found made the Huffman algorithm give an encoding that was substantially equivalent to the unary prefix code. That is ...

Brainfuck Code
> 0
< 10
+ 110
- 1110
] 11110
[ 111110
. 1111110
, 1111111

The probabilities for the next character followed the same pattern with the exception that for the '>', '<', '+', '-' codes there was an over 95% probability that the next character would be identical and a very small probability, though not zero) that it would be the opposite. The other codes appear to follow the global probabilities.

Previous Brainfuck 0 10 110 1110 11110 111110 1111110 1111111
> or start of file > + - ] [ . , <
< < + - ] [ . , >
+ + > < ] [ . , -
- - > < ] [ . , +
[ ] . , > < + - ] [ . ,

If wanted the 'debug' and 'termination' codes can be added in the obvious place, though I suspect using '11111111' as an 'escape code' with the eight bits in ASCII would be better. (And use 11111111 + 0 to 7 bits padding + EOF as an alternate termination)

Overall, however, it appears that simple run length encoding gives better compression performance.

Rdebath (talk) 11:20, 28 September 2013 (UTC)

Interpreter?

Erikkonstas (talk) 13:23, 19 July 2016 (UTC)

https://github.com/rdebath/Brainfuck/blob/master/extras/ook.l Now does Spoon and several others. Rdebath (talk) 08:10, 20 July 2016 (UTC)