All I know is the original author was probably a hacker from Finland and it was originally written in x86 assembly. This is my modernized implementation of his algorithm.
As for solving the BUGFIX-66 puzzles, to fix the bug in the compressor, add
to = append(to, 0)
on the line after
loc = len(to)
The original code was not inserting a placeholder for every control byte.
To fix the decompressor, add
at++
on the line after
ctrl := int(from[at])
The original code was not stepping past a control byte after loading it.
which is functionally equivalent and, in my personal opinion, with clearer intent (ctrl = 0 at that point in the code), returns "incorrect".
In fact, it seems that any placeholder value should work - as it is always overwritten by the final value of ctrl for a given set of bytes at the end; however, the checker rejects this.
Go doesn't do integer type conversions implicitly, to avoid the implicit-type-casting bugs endemic to C. Go (thankfully) doesn't allow an implicit conversion from int to byte. You must do the cast explicitly.
So you would have to say
to = append(to, byte(ctrl))
and that's correct.
The site builds and executes the code you submit, and any correct solution is accepted.
All I know is the original author was probably a hacker from Finland and it was originally written in x86 assembly. This is my modernized implementation of his algorithm.
As for solving the BUGFIX-66 puzzles, to fix the bug in the compressor, add
on the line after The original code was not inserting a placeholder for every control byte.To fix the decompressor, add
on the line after The original code was not stepping past a control byte after loading it.