3 ms·
This is a folk algorithm of unknown origin. All I know is the original author was probably a hacker from Finland and it was originally written in x86 assembly.
by bugfix-66 4y ago
This is a folk algorithm of unknown origin.
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.
- JPLeRouzic 4y agoThank you!
- asiekierka 4y agoDoe it literally check for the specific solution? Writing to = append(to, ctrl) 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.
- bugfix-66 4y agoYour fix is wrong, so the site rejects it. 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.