Format fix 2005/timwi/README.md
This commit is contained in:
1 parent
ab663fd012
commit
92abc5a189
1 file changed
+24
-21
+24
-21
@@ -1,8 +1,8 @@
|
|||||||
# Most discourteous interpreter
|
# Most discourteous interpreter
|
||||||
|
|
||||||
Arne "Timwi" Heizmann
|
Arne "Timwi" Heizmann
|
||||||
Germany
|
Germany
|
||||||
timwi@gmx.net
|
<timwi@gmx.net>
|
||||||
|
|
||||||
## To build:
|
## To build:
|
||||||
|
|
||||||
@@ -24,40 +24,43 @@ make
|
|||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
Unlike most BF interpreters that we have been receiving for the last few
|
Unlike most [BF](https://en.wikipedia.org/wiki/Brainfuck) interpreters that we
|
||||||
years, this one, in our opinion, is the most obfuscated albeit the most
|
have been receiving for the last few years, this one, in our opinion, is the
|
||||||
discourteous to the language it interprets. A simple 3-character fix will make
|
most obfuscated albeit the most discourteous to the language it interprets. A
|
||||||
it slightly less so.
|
simple 3-character fix will make it slightly less so.
|
||||||
|
|
||||||
Quite a few BF programs found on the Net expect byte-based memory, quite a few
|
Quite a few BF programs found on the Net expect byte-based memory, quite a few
|
||||||
exceed the capacity of this interpreter, but there are many that work. Some
|
exceed the capacity of this interpreter, but there are many that work. Some
|
||||||
small quines work, some don't.
|
small [quines][] work, some don't.
|
||||||
|
|
||||||
Why?
|
Why?
|
||||||
|
|
||||||
|
[quines]: https://en.wikipedia.org/wiki/Quine_(computing)
|
||||||
|
|
||||||
## Author's remarks:
|
## Author's remarks:
|
||||||
|
|
||||||
This is an interpreter for the programming language BrainFuck (BF).
|
This is an interpreter for the programming language
|
||||||
|
[BrainFuck](https://en.wikipedia.org/wiki/Brainfuck) (BF).
|
||||||
|
|
||||||
Input must be provided in the following format: First a sequence of integers
|
Input must be provided in the following format: First a sequence of integers
|
||||||
separated by whitespace (this will be the input to the BF program), then a
|
separated by whitespace (this will be the input to the BF program), then a `:`
|
||||||
colon (:), then the BF program itself.
|
(colon), then the BF program itself.
|
||||||
|
|
||||||
You must not pass any command-line arguments.
|
You must not pass any command-line arguments.
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* Supports the complete set of 8 BF instructions (+-<>[].,).
|
* Supports the complete set of 8 BF instructions (`+-<>[].,`).
|
||||||
* Supports the use of alternative characters for some of those instructions.
|
* Supports the use of alternative characters for some of those instructions.
|
||||||
Use this to obfuscate your BF programs!
|
Use this to obfuscate your BF programs!
|
||||||
|
|
||||||
For a challenge, figure out what this obfuscated BF program does:
|
For a challenge, figure out what this obfuscated BF program does:
|
||||||
|
|
||||||
J4mzt?Vazexx-20d~&&~AxdUV!x(~Jz&V)x*(P=J)JUN(dizz)xx_!xx'0&{Vz;}&Jj
|
J4mzt?Vazexx-20d~&&~AxdUV!x(~Jz&V)x*(P=J)JUN(dizz)xx_!xx'0&{Vz;}&Jj
|
||||||
|
|
||||||
It takes two integers as input and outputs one integer.
|
It takes two integers as input and outputs one integer.
|
||||||
|
|
||||||
* Ignores all whitespace (newlines, spaces and tabs) in the input program.
|
* Ignores all whitespace (newlines, spaces and tabs) in the input program.
|
||||||
|
|
||||||
### Limitations
|
### Limitations
|
||||||
|
|
||||||
@@ -70,13 +73,13 @@ one of these limits, the behaviour is undefined.
|
|||||||
|
|
||||||
### Obfuscations
|
### Obfuscations
|
||||||
|
|
||||||
Some of the superficial obfuscations are pretty obvious: I'm using #defines to
|
Some of the superficial obfuscations are pretty obvious: I'm using `#define`s to
|
||||||
make everything look nice and liney, and the program is merely a recursive
|
make everything look nice and lineal, and the program is merely a recursive
|
||||||
main function with only a single 'return' statement which uses nested ternary
|
`main` function with only a single `return` statement which uses nested ternary
|
||||||
operators to make even the pre-processed code unreadable.
|
operators to make even the pre-processed code unreadable.
|
||||||
|
|
||||||
However, the more subtle obfuscations relate to the way the program works.
|
However, the more subtle obfuscations relate to the way the program works.
|
||||||
After applying the pre-processing, you will see a lot of "1+1+1+...etc.", and
|
After applying the pre-processing, you will see a lot of `1+1+1`...etc., and
|
||||||
even if you replace these with their result, those numbers will still not
|
even if you replace these with their result, those numbers will still not
|
||||||
represent (or even relate to) the ASCII codes of the BF instructions.
|
represent (or even relate to) the ASCII codes of the BF instructions.
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user