diff --git a/1984/anonymous/README.md b/1984/anonymous/README.md index 9e825b388..80f50bec7 100644 --- a/1984/anonymous/README.md +++ b/1984/anonymous/README.md @@ -76,7 +76,7 @@ The author, when told about this tattoo, said: ``` I feel honored that my entry will be the first IOCCC winning entry to become a tattoo. It is the first entry to become a tattoo isn't it? -`` +``` Landon Curt Noll, the one who told the author about the tattoo, wrote back: diff --git a/1984/anonymous/index.html b/1984/anonymous/index.html index 32a212d70..c07cce8b6 100644 --- a/1984/anonymous/index.html +++ b/1984/anonymous/index.html @@ -189,13 +189,9 @@ wished to remain anonymous and they said:

On the famous tattoo (see above):

The author, when told about this tattoo, said:

    I feel honored that my entry will be the first IOCCC winning entry to become a
-    tattoo. It is the first entry to become a tattoo isn't it?
-``
-
-Landon Curt Noll, the one who told the author about the tattoo, wrote back:
-
-

Yes, to our knowledge it is. -```

+ tattoo. It is the first entry to become a tattoo isn't it? +

Landon Curt Noll, the one who told the author about the tattoo, wrote back:

+
    Yes, to our knowledge it is.

Regrets:

Landon Curt Noll wrote that the author regrets not making the program a one-liner and not moving the int i into an arg of main() (so that the line diff --git a/2018/burton2/README.md b/2018/burton2/README.md index 203202ec7..b1ce7393a 100644 --- a/2018/burton2/README.md +++ b/2018/burton2/README.md @@ -344,7 +344,7 @@ which is neither complete (`#define`, `#ifndef`, `#undef` are missing ``` yes, Virginia knows about `#define` omitted on purpose -`` +``` nor correct (many more are added: `I`, `true`, `bool`, `compl`, ...): diff --git a/2018/burton2/index.html b/2018/burton2/index.html index c92a1eb0a..4a622a38e 100644 --- a/2018/burton2/index.html +++ b/2018/burton2/index.html @@ -401,74 +401,55 @@ the IOJCC trash can.

NB: The keyword file used in this code is derived from the list in iocccsize.c, which is neither complete (#define, #ifndef, #undef are missing

-
yes, Virginia knows about `#define` omitted on purpose
-``
-
-nor correct (many more are added: `I`, `true`, `bool`, `compl`, ...):
-
-

(sed -n ‘1p’ c11; sed -n ‘2,$p’ ioccc.kw.freq | sort) | comm -3 - c11

-

-That is an obfuscated way to say "diff".  But it also more clearly shows the, um, diffs.
-
-The usage string is similarly externalized, providing a better usability string than
-the limits would otherwise allow.  If this is considered bending the rules too far,
-just `-DU=O` to get a passible, if cryptic, usage message using no additional octets
+
yes, Virginia knows about `#define` omitted on purpose
+

nor correct (many more are added: I, true, bool, compl, …):

+
    (sed -n '1p' c11; sed -n '2,$p' ioccc.kw.freq | sort) | comm -3 - c11
+

That is an obfuscated way to say “diff”. But it also more clearly shows the, um, diffs.

+

The usage string is similarly externalized, providing a better usability string than +the limits would otherwise allow. If this is considered bending the rules too far, +just -DU=O to get a passible, if cryptic, usage message using no additional octets than without the define. This also allows the builder to configure the amount of help a utility should provide -([you want a manpage? Because that's how you get a manpage.][5]) -- a rather -significant point of contention made moot. - -There is definitely abuse of the Rule2 counter, exploiting a "feature" of -`iocccsize`: `iocccsize` does not Rule2 count `{`, `}` and `;` when followed by -whitespace -- even within a string! Thus: Freecode, a simple, uncounted, highly -obfuscated encoding of a central part of this program. (The reserved word list +(you want a manpage? Because that’s how you get a manpage.) – a rather +significant point of contention made moot.

+

There is definitely abuse of the Rule2 counter, exploiting a “feature” of +iocccsize: iocccsize does not Rule2 count {, } and ; when followed by +whitespace – even within a string! Thus: Freecode, a simple, uncounted, highly +obfuscated encoding of a central part of this program. (The reserved word list is not Freecoded, both because it is useful apart from the program, and because -Freecode is not entirely free.) - -* Some restrictions apply. Not approved for all uses. Some assembly required. - -[5]: https://www.youtube.com/watch?v=VU0GYSA1POs "Ants" - -### Compilation: - -The code is ANSI compliant, but it does have a string longer than 509 characters. -It has been tested on OSX and Linux, Clang and GCC. - -The code uses trigraphs, ironically: it parses trigraphs with trigraph code. -Because that's funny. And it remains obscure after, so trigraphs are not used -for obfuscation. Thus `-trigraphs -Wno-trigraphs` (which is also humorous). - -It's obfuscated C. Thus `-Wno-parentheses -Wno-empty-body -Wno-char-subscripts`. - -The code uses `unsigned char`s, but C strings are `signed`. Thus `-Wno-pointer-sign`. -NB: This is *not* a portability concern, the one string holds only printable ASCII characters. - -Thus: -

-

cc -ansi -Wall -trigraphs -Wno-trigraphs -Wno-parentheses -Wno-empty-body -Wno-char-subscripts -Wno-pointer-sign -DU=O -DW="keywords" -o prog prog.c

-

-### Coda:
-
-[Cody Boone Ferguson](../../authors.html#Cody_Boone_Ferguson) was relentless in his pursuit of bugs.
-Thanks to his reports, the version of [unob.sh](unob.sh) is stronger,
-`tac` groks digraphs, [tokenfix.sh](tokenfix.sh) corrects for missing digraphs
-in [prog.c](prog.c), and the program [manpage.sh](manpage.sh) was added to the corpus.
-
-[manpage.sh](manpage.sh) is a useful program that turns ASCII versions of man
-pages (e.g. [tac.man](tac.man)) into real man pages.  It works for C and C-like
-languages, command lines, and was designed to handle man page sections 1-8.  It
+Freecode is not entirely free.)

+ +

Compilation:

+

The code is ANSI compliant, but it does have a string longer than 509 characters. +It has been tested on OSX and Linux, Clang and GCC.

+

The code uses trigraphs, ironically: it parses trigraphs with trigraph code. +Because that’s funny. And it remains obscure after, so trigraphs are not used +for obfuscation. Thus -trigraphs -Wno-trigraphs (which is also humorous).

+

It’s obfuscated C. Thus -Wno-parentheses -Wno-empty-body -Wno-char-subscripts.

+

The code uses unsigned chars, but C strings are signed. Thus -Wno-pointer-sign. +NB: This is not a portability concern, the one string holds only printable ASCII characters.

+

Thus:

+
    cc -ansi -Wall -trigraphs -Wno-trigraphs -Wno-parentheses -Wno-empty-body -Wno-char-subscripts -Wno-pointer-sign -DU=O -DW=\"keywords\" -o prog prog.c
+

Coda:

+

Cody Boone Ferguson was relentless in his pursuit of bugs. +Thanks to his reports, the version of unob.sh is stronger, +tac groks digraphs, tokenfix.sh corrects for missing digraphs +in prog.c, and the program manpage.sh was added to the corpus.

+

manpage.sh is a useful program that turns ASCII versions of man +pages (e.g. tac.man) into real man pages. It works for C and C-like +languages, command lines, and was designed to handle man page sections 1-8. It works well on most inputs, but tends to need some raw nroff for more fancy -constructions, such as combined arguments (e.g. the `-r` and `-s` arguments to tac -are not recognised when written as `-rs` in prose). +constructions, such as combined arguments (e.g. the -r and -s arguments to tac +are not recognised when written as -rs in prose).

+

Try:

+
    ./manpage.sh tac
 
-Try:
-
-

./manpage.sh tac

-

./manpage.sh -h -./manpage.sh -h | ./manpage.sh -./manpage.sh -h | ./manpage.sh -R | less -./manpage.sh -h | ./manpage.sh -P | lpr -```

+ ./manpage.sh -h + ./manpage.sh -h | ./manpage.sh + ./manpage.sh -h | ./manpage.sh -R | less + ./manpage.sh -h | ./manpage.sh -P | lpr

NOTE: in 2023 the tac.man was updated to proper man format and renamed tac.1.