Author:
- Name: Qiming HOU
Location: CN - People’s Republic of China (China)
To build:
make
Bugs and (Mis)features:
The current status of this entry is:
STATUS: INABIAF - please DO NOT fix
For more detailed information see 2018/hou in bugs.html.
To use:
./prog < input.json > output.html
View output.html
in a browser.
Try:
./try.sh
The script will generate a JSON file called ioccc.json
, showing it via
tee(1)
and then run the program on that. Can you find any problem with the
JSON file? What happens if you try and fix it?
As the script says, open ioccc.html
in a browser.
Is anything wrong with the output? How can you fix it if so?
Judges’ remarks:
This entry exhibits a way of obfuscation we haven’t seen before, we think.
The rulez
of programming in an imperative language are violated, aren’t they?
Try figuring out how to increase the number of different colors, if you can.
Author’s remarks:
Nowadays almost every programmer needs to do some Web chore. With all the open source stuff readily available, often we just need to call a bunch of libraries to generate an HTML page from a JSON feed.
This entry takes such decadence to an extreme. It just calls a bunch of
libraries to generate an HTML page from a JSON feed, literally. There is no
variable (function parameters included), no operator, no flow control statements
except a few decorative return
s. In compliance to production coding standards,
the code is littered with fashionable jargon, doxygen comment, and license text.
As one would expect from such an approach, this program is much more resource intensive than it should be. And one needs a C99-compatible libc (with the common UNIX stuff) to build this and an HTML5-compatible browser to open the result. And it terminates with an assertion failure, but who cares if the web page is already generated?
Inventory for 2018/hou
Primary files
- prog.c - entry source code
- Makefile - entry Makefile
- prog.orig.c - original source code
- input.json - sample JSON data
- try.sh - script to try entry
Secondary files
- 2018_hou.tar.bz2 - download entry tarball
- README.md - markdown source for this web page
- .entry.json - entry summary and manifest in JSON
- .gitignore - list of files that should not be committed under git
- .path - directory path from top level directory
- index.html - this web page