From 50f55b4c6a7f8abeab981b2c53bddebc5f1bcb00 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Thu, 18 Apr 2024 17:50:33 -0700 Subject: [PATCH] fix HTML problems associated with leading ---'s Please do not use "**---**" in markdown lines to separate sections. This causes `pandoc(1)` to generate "**\
**". The "**\
**" has no effect in standard HTML 5 and interacts badly with unquoted attribute values. If a horizontal line is really needed, use "**\
**". If a short line is needed, use: "**\
**" --- 1992/gson/README.md | 2 +- 1992/gson/index.html | 2 +- 1996/august/README.md | 6 +- 1996/august/index.html | 6 +- 1998/df/README.md | 4 +- 1998/df/index.html | 4 +- 1998/dorssel/dorssel.html | 4 +- 1998/dorssel/dorssel.md | 4 +- 2000/jarijyrki/README.md | 2 +- 2000/jarijyrki/index.html | 2 +- 2013/hou/README.md | 9 ++- 2013/hou/doc/example.html | 50 ++++------------ 2013/hou/doc/example.md | 32 ++++------- 2013/hou/index.html | 4 +- 2018/burton2/README.md | 6 +- 2018/burton2/index.html | 113 ++++++++++++++++++++++--------------- 2018/mills/README.md | 2 +- 2018/mills/index.html | 2 +- 2019/duble/README.md | 4 +- 2019/duble/index.html | 4 +- 2019/mills/README.md | 22 +++++--- 2019/mills/index.html | 21 +++---- 2020/kurdyukov4/README.md | 4 +- 2020/kurdyukov4/index.html | 4 +- sitemap.xml | 56 +++++++++--------- 25 files changed, 181 insertions(+), 188 deletions(-) diff --git a/1992/gson/README.md b/1992/gson/README.md index 1dd421a22..f15731019 100644 --- a/1992/gson/README.md +++ b/1992/gson/README.md @@ -151,7 +151,7 @@ Here follows a description of some of the data structures and algorithms used by AG. It is by no means complete, but it may help you get an idea about the general principles. ---- +
Internally, AG represents words and sentences as arrays of 32 4-bit integer elements. Each element represents the number of diff --git a/1992/gson/index.html b/1992/gson/index.html index 52b210c21..4e013dbec 100644 --- a/1992/gson/index.html +++ b/1992/gson/index.html @@ -242,7 +242,7 @@ algorithms are outlined in the spoiler below.

Here follows a description of some of the data structures and algorithms used by AG. It is by no means complete, but it may help you get an idea about the general principles.

-
+

Internally, AG represents words and sentences as arrays of 32 4-bit integer elements. Each element represents the number of times a letter occurs in the word/sentence. There are 32 elements diff --git a/1996/august/README.md b/1996/august/README.md index 3ccd30412..b7b57ba8e 100644 --- a/1996/august/README.md +++ b/1996/august/README.md @@ -178,7 +178,7 @@ And another... cat august.oo august.oo august.oo test.oo | ./august ``` ---- +


Fitting the byte code for the compiler into the initial comment was a challenge. I had to strip the compiler/interpreter of @@ -202,7 +202,7 @@ coder), but decompression then takes up too much code. Maybe this would be a way to fit it all into the 1536 bytes, but I don't have time to try it. ---- +
Execution starts at `main()`. Nothing can be used before it is defined. `getchar()` and `putchar()` are predefined functions. @@ -271,7 +271,7 @@ Terminals are in quotes, `()` is used for bracketing. stars: "*"* ``` ---- +
Well, that is enough ranting for now. diff --git a/1996/august/index.html b/1996/august/index.html index 289c99c2f..d954fe234 100644 --- a/1996/august/index.html +++ b/1996/august/index.html @@ -235,7 +235,7 @@ level of interpretation:

    cat august.oo august.oo test.oo | ./august

And another…

    cat august.oo august.oo august.oo test.oo | ./august
-
+

Fitting the byte code for the compiler into the initial comment was a challenge. I had to strip the compiler/interpreter of a lot of functionality to bring down their sizes. The initial @@ -255,7 +255,7 @@ the code further with a better entropy coder (e.g. an arithmetic coder), but decompression then takes up too much code. Maybe this would be a way to fit it all into the 1536 bytes, but I don’t have time to try it.

-
+

Execution starts at main(). Nothing can be used before it is defined. getchar() and putchar() are predefined functions.

Below is a description of the OC grammar.

@@ -316,7 +316,7 @@ defined. getchar() and putchar() are predefined functi "char" stars stars: "*"* -
+

Well, that is enough ranting for now.

diff --git a/2018/burton2/index.html b/2018/burton2/index.html index 62e42d244..af3d19d24 100644 --- a/2018/burton2/index.html +++ b/2018/burton2/index.html @@ -399,56 +399,75 @@ the IOJCC trash can.

  • ioccc.kw.freq c11 + additional words, sorted on frequency of occurrence in IOCCC entries
  • 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 +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
     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.) – 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.
    • -
    -

    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).

    -

    Try:

    -
        ./manpage.sh tac
    +([you want a manpage? Because that's how you get a manpage.][5]) -- a rather
    +significant point of contention made moot.
     
    -    ./manpage.sh -h
    -    ./manpage.sh -h | ./manpage.sh
    -    ./manpage.sh -h | ./manpage.sh -R | less
    -    ./manpage.sh -h | ./manpage.sh -P | lpr
    +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
    +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).
    +
    +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 +```

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