Format fix 2000/schneiderwent/README.md
This commit is contained in:
1 parent
e6dfaf0d52
commit
43d4057682
1 file changed
+27
-27
@@ -19,8 +19,11 @@ make
|
||||
|
||||
```sh
|
||||
./schneiderwent schneiderwent.data
|
||||
./schneiderwent
|
||||
```
|
||||
|
||||
What's the difference?
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
Very nice play by the rules and portable text obfuscation.
|
||||
@@ -35,46 +38,43 @@ keeping the program portable between different encodings
|
||||
|
||||
This entry displays the current time to the console, for example:
|
||||
|
||||
it's just after ten 'til 6 in the evening
|
||||
> it's just after ten 'til 6 in the evening
|
||||
|
||||
FWIW, none of the compilers with which this entry was tested issued
|
||||
any warnings or errors in compiling the source for this entry. No
|
||||
doubt lint will complain about the goto statements.
|
||||
|
||||
The schneiderwent.data file consists of the values used by multiple
|
||||
table lookups. This is simply good program design, separating
|
||||
these values from the source code allows changing the behavior of
|
||||
the application without recompiling.
|
||||
The [schneiderwent.data](schneiderwent.data) file consists of the values used by
|
||||
multiple table lookups. This is simply good program design, separating these
|
||||
values from the source code allows changing the behavior of the application
|
||||
without recompiling.
|
||||
|
||||
Having learned COBOL at an early age, the pthreads of my thought
|
||||
Having learned COBOL at an early age, the `pthread`s of my thought
|
||||
processes tend to be translated into code in a verbose manner. Some
|
||||
of the #defines in this entry's code are to mitigate this personal
|
||||
of the `#define`s in this entry's code are to mitigate this personal
|
||||
deficiency.
|
||||
|
||||
### Obfuscation
|
||||
|
||||
Obfuscation in this entry consists of:
|
||||
|
||||
* printfing console messages stored as EBCDIC character values - this is not an
|
||||
attempt at encryption, but rather at cross platform compatibility
|
||||
* `printf()`ing console messages stored as EBCDIC character values - this is not
|
||||
an attempt at encryption, but rather at cross platform compatibility.
|
||||
* ASCII character values are calculated from the EBCDIC in a particularly ugly
|
||||
abuse of the '?' operator
|
||||
* detection of whether to print the ASCII or EBCDIC values is done by taking the
|
||||
remainder of dividing the character 'J' by 2 - the ASCII value of the character
|
||||
is even, the EBCDIC value is odd
|
||||
|
||||
* the messages to be printfed are determined via multiple table lookups and
|
||||
bitmasked values
|
||||
|
||||
* for minutes, the bit position turned on is multiplied by two to determine the
|
||||
message to be printfed
|
||||
|
||||
* for hours, the straight bit position is used
|
||||
|
||||
* this entry mostly eschews function calls for the often overlooked
|
||||
setjmp/longjmp combination
|
||||
|
||||
* the trigraphs are not there as obfuscation nor are they there to annoy the
|
||||
abuse of the '?' operator.
|
||||
* Detection of whether to print the ASCII or EBCDIC values is done by taking the
|
||||
remainder of dividing the character `'J'` by `2` - the ASCII value of the
|
||||
character is even, the EBCDIC value is odd.
|
||||
* The messages to be `printf`ed are determined via multiple table lookups and
|
||||
bit-masked values.
|
||||
* For minutes, the bit position turned on is multiplied by two to determine the
|
||||
message to be `printf`ed.
|
||||
* For hours, the straight bit position is used.
|
||||
* This entry mostly eschews function calls for the often overlooked
|
||||
setjmp/longjmp combination.
|
||||
* The trigraphs are not there as obfuscation nor are they there to annoy the
|
||||
judges - it's just the easiest way to get around the absence of square brackets
|
||||
in a normal 3270 environment
|
||||
in a normal 3270 environment.
|
||||
|
||||
## Copyright and CC BY-SA 4.0 License:
|
||||
|
||||
|
||||
Reference in new issue
Block a user