force use of pandoc version >= 3.1.12.2
The `bin/pandoc-wrapper.sh` tool will verify that the ssytem has a recent enough version of `pandoc(1)`. We explain why we insist on `pandoc(1)`. version >= 3.1.12.2 in comments where the $PANDOC_MIN_VERSION is set. Added `--wrap=preserve` as a default argument to `pandoc(1)`. While this change will impact every HTML file generated, we believe this will improve the ability of someone to look at the generated HTML and correlate with the original markdown. Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17" to "1.4.3 2024-03-18". Performed `make www` to achieve all of the above and to generate HTML using the new `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+89
-117
@@ -129,9 +129,9 @@
|
||||
|
||||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||||
<ul>
|
||||
<li>Name: <a href="../../authors.html#Daniel_Fischer">Daniel
|
||||
Fischer</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
|
||||
<em>Unknown location</em> <br><br></li>
|
||||
<li>Name: <a href="../../authors.html#Daniel_Fischer">Daniel Fischer</a><br>
|
||||
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em>
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||||
@@ -145,8 +145,8 @@ Fischer</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./df</span></span></code></pre></div>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<p>This will run the program in a loop until you exit (<code>q</code>
|
||||
when prompted or ctrl-c/intr).</p>
|
||||
<p>This will run the program in a loop until you exit (<code>q</code> when prompted or
|
||||
ctrl-c/intr).</p>
|
||||
<p>Can you figure out a very simple pipeline to cheat?</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks;</h2>
|
||||
<p>Everyone talks about how data hiding can produce clearer code; I am
|
||||
@@ -156,10 +156,10 @@ game has some data - but where? It’s unclear which of the contents of
|
||||
the program are used.</p>
|
||||
<p>Curiously, the program only works if its source is in the directory
|
||||
it’s run in. More curiously, the program would fail if the program’s
|
||||
name’s second letter wasn’t <code>r</code> (the source has been changed
|
||||
for your convenience and this restriction no longer exist).</p>
|
||||
<p>Modern design has come a long way since the unreadable,
|
||||
tightly-coupled systems we used to have.</p>
|
||||
name’s second letter wasn’t <code>r</code> (the source has been changed for your
|
||||
convenience and this restriction no longer exist).</p>
|
||||
<p>Modern design has come a long way since the unreadable, tightly-coupled
|
||||
systems we used to have.</p>
|
||||
<p>Extra credit questions:</p>
|
||||
<ul>
|
||||
<li>Where are the words stored?</li>
|
||||
@@ -169,68 +169,62 @@ tightly-coupled systems we used to have.</p>
|
||||
</ul>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>This program lets you guess English words. It displays an underscore
|
||||
for each letter in the word; guessing a letter that actually is in the
|
||||
word replaces the corresponding underscores with the letter itself. You
|
||||
can guess a letter simply by typing it in. If your C implementation
|
||||
requires it, you may have to hit Return before it is recognized. In this
|
||||
case, you can also type multiple guesses on the same line (completely
|
||||
solve it by entering <code>abcdefghijklmnopqrstuvwxyz</code>). Execution
|
||||
stops when all underscores have been replaced.</p>
|
||||
<p>The program offers a number of different words to guess,
|
||||
<code>time()</code> is used to pick one at random. All words are eight
|
||||
characters long.</p>
|
||||
<p>The source should compile with any ANSI C compiler (I used
|
||||
CodeWarrior w/ ANSI strict). Using non-ANSI compilers that implement the
|
||||
ANSI features it uses will not work (unless they defined
|
||||
<code>__STDC__ 1</code> which they shouldn’t). Due to space
|
||||
restrictions, I did not use any trigraph sequences. It does not require
|
||||
any special <code>-D</code> defines.</p>
|
||||
for each letter in the word; guessing a letter that actually is in
|
||||
the word replaces the corresponding underscores with the letter
|
||||
itself. You can guess a letter simply by typing it in. If your C
|
||||
implementation requires it, you may have to hit Return before it
|
||||
is recognized. In this case, you can also type multiple guesses
|
||||
on the same line (completely solve it by entering
|
||||
<code>abcdefghijklmnopqrstuvwxyz</code>). Execution stops when all underscores
|
||||
have been replaced.</p>
|
||||
<p>The program offers a number of different words to guess, <code>time()</code> is
|
||||
used to pick one at random. All words are eight characters long.</p>
|
||||
<p>The source should compile with any ANSI C compiler (I used CodeWarrior
|
||||
w/ ANSI strict). Using non-ANSI compilers that implement the ANSI
|
||||
features it uses will not work (unless they defined <code>__STDC__ 1</code>
|
||||
which they shouldn’t). Due to space restrictions, I did not use
|
||||
any trigraph sequences. It does not require any special <code>-D</code> defines.</p>
|
||||
<p>The source passes lint without any complaint (if invoked with
|
||||
<code>>/dev/null</code>). (My lclint is unable to recover from some
|
||||
parts of it.)</p>
|
||||
<p>Actually, the code not only is compliant with the ANSI
|
||||
specifications, but uses a near minimum subset of them. C keywords that
|
||||
were not used have been re(de)fined to avoid unnecessary introduction of
|
||||
new, unknown character patterns. The source also includes all ANSI
|
||||
headers it needs (after most of the functions have been used), and the
|
||||
declaration of <code>main()</code> follows the guidelines (but the
|
||||
return type has a different meaning and the arguments are either misused
|
||||
or unused). There also may be some compiler warnings. These are not
|
||||
bugs, but features. The more warnings, the better the compiler. There
|
||||
wouldn’t be any if I had been allowed to use some extra space for
|
||||
prototypes etc.</p>
|
||||
<p>Multiple defines are used (but not all of them define), and
|
||||
<code>#define y define</code> is used with <code>#y</code> but the code
|
||||
doesn’t assume <code>#y</code> to expand to <code>#define</code>. I have
|
||||
also included comments in the code, and vital code in the comments. And
|
||||
of course there is code that doesn’t do anything but will crash the
|
||||
program if it is removed (just like those comments I mentioned above).
|
||||
Additionally, since you said you’d be preprocessing entries ignoring
|
||||
<code>#include</code>s I figured I should use some more of them instead
|
||||
of other obfuscation methods. Did I mention that preprocessed or
|
||||
beautified sources will crash or hang your system? The program will also
|
||||
crash on non-ASCII machines.</p>
|
||||
<code>>/dev/null</code>). (My lclint is unable to recover from some parts of it.)</p>
|
||||
<p>Actually, the code not only is compliant with the ANSI specifications, but uses
|
||||
a near minimum subset of them. C keywords that were not used have been
|
||||
re(de)fined to avoid unnecessary introduction of new, unknown character
|
||||
patterns. The source also includes all ANSI headers it needs (after most of the
|
||||
functions have been used), and the declaration of <code>main()</code> follows the
|
||||
guidelines (but the return type has a different meaning and the arguments are
|
||||
either misused or unused). There also may be some compiler warnings. These are
|
||||
not bugs, but features. The more warnings, the better the compiler. There
|
||||
wouldn’t be any if I had been allowed to use some extra space for prototypes
|
||||
etc.</p>
|
||||
<p>Multiple defines are used (but not all of them define), and <code>#define y define</code> is used with <code>#y</code> but the code doesn’t assume <code>#y</code> to expand
|
||||
to <code>#define</code>. I have also included comments in the code, and vital
|
||||
code in the comments. And of course there is code that doesn’t do
|
||||
anything but will crash the program if it is removed (just like
|
||||
those comments I mentioned above). Additionally, since you said
|
||||
you’d be preprocessing entries ignoring <code>#include</code>s I figured I should
|
||||
use some more of them instead of other obfuscation methods. Did
|
||||
I mention that preprocessed or beautified sources will crash or
|
||||
hang your system? The program will also crash on non-ASCII machines.</p>
|
||||
<p>The executable needs its source file present in the current directory
|
||||
or, depending on your system, in your path. The name of the source file
|
||||
is not hard-coded, <code>__FILE__</code> is used instead.</p>
|
||||
or, depending on your system, in your path. The name of the source
|
||||
file is not hard-coded, <code>__FILE__</code> is used instead.</p>
|
||||
<p>In the original version which was sent in to the contest, there were
|
||||
some restrictions on the file name:</p>
|
||||
<ul>
|
||||
<li>The second letter had to be a lowercase <code>r</code>.</li>
|
||||
<li>The third letter could never be a <code>+</code> or a
|
||||
<code>b</code>.</li>
|
||||
<li>The third letter could never be a <code>+</code> or a <code>b</code>.</li>
|
||||
</ul>
|
||||
<p>Valid names would have been <code>pr4.c</code>, <code>pr.c</code>,
|
||||
<code>prog.c</code>, <code>brownie.c</code> etc. My first private
|
||||
version would only run when compiled on a Friday. I decided it would be
|
||||
better this way… These restrictions have been removed for your
|
||||
convenience.</p>
|
||||
<p>Valid names would have been <code>pr4.c</code>, <code>pr.c</code>, <code>prog.c</code>, <code>brownie.c</code> etc.
|
||||
My first private version would only run when compiled on a Friday.
|
||||
I decided it would be better this way…
|
||||
These restrictions have been removed for your convenience.</p>
|
||||
<p>The following lines describe how this program works; if you don’t
|
||||
want to know it at this time, please skip them. If this entry would by
|
||||
some mistake win the contest, please do not rot13 this - I hate rot13
|
||||
spoilers since it is somewhat complicated on a Mac to reverse them.
|
||||
Anyone out there should have enough discipline and rot13 shouldn’t be
|
||||
required, really. After all, we are not children anymore :-)</p>
|
||||
want to know it at this time, please skip them. If this entry would
|
||||
by some mistake win the contest, please do not rot13 this - I hate
|
||||
rot13 spoilers since it is somewhat complicated on a Mac to
|
||||
reverse them. Anyone out there should have enough discipline and
|
||||
rot13 shouldn’t be required, really. After all, we are not children
|
||||
anymore :-)</p>
|
||||
<hr />
|
||||
<p>This paragraph is not part of the author’s remarks, but is a helpful
|
||||
gift from the judges; if you read too fast to stop yourself, this should
|
||||
@@ -239,79 +233,57 @@ you don’t want to read the spoilers, which really do spoil everything,
|
||||
we mean it.</p>
|
||||
<hr />
|
||||
<p>The source file needs to be present because the words are read from
|
||||
it. The wordlist is encoded within the source using a 24 entry sliding
|
||||
dictionary where lowercase letters are offsets into the dictionary,
|
||||
uppercase letters are new letters not yet in the dictionary, and all
|
||||
other characters are ignored. The words are spread over six lines in the
|
||||
source; decoding starts on a line after a tab and a whitespace have been
|
||||
found, and stops on a newline. The grin after the “Demonic Smiley”
|
||||
actually is one encoded letter while the string is completely ignored;
|
||||
and the <code>cut</code> in “cut here” is required while
|
||||
<code>here</code> is not.</p>
|
||||
it. The wordlist is encoded within the source using a 24 entry
|
||||
sliding dictionary where lowercase letters are offsets into the
|
||||
dictionary, uppercase letters are new letters not yet in the
|
||||
dictionary, and all other characters are ignored. The words are
|
||||
spread over six lines in the source; decoding starts on a line
|
||||
after a tab and a whitespace have been found, and stops on a newline.
|
||||
The grin after the “Demonic Smiley” actually is one encoded letter
|
||||
while the string is completely ignored; and the <code>cut</code> in “cut here”
|
||||
is required while <code>here</code> is not.</p>
|
||||
<p>“For extra credit”, explain why the words are sorted alphabetically
|
||||
(because I extracted them from a dictionary :-) )</p>
|
||||
<p>The file name had to fulfill the restrictions mentioned above because
|
||||
<code>__FILE__+1</code> was used as a second parameter to
|
||||
<code>fopen()</code>. (It essentially was
|
||||
<code>fopen(__FILE__,__FILE__+1)</code> ). This was an extra joke that
|
||||
doesn’t exist in the released version.</p>
|
||||
<p>You probably discovered that the <code>while(FILE)</code> in
|
||||
<code>main()</code> is not a while loop but the statement that opens the
|
||||
file and initializes the dictionary. Similarly, <code>int</code> and
|
||||
<code>signed</code> have been redefined (to save space, of course).</p>
|
||||
<p>The main function (the guessing part) is between the last
|
||||
<code>#else..#endif</code>, but still is declared before
|
||||
<code>main()</code>. The <code>5[O]()</code> in <code>main()</code>
|
||||
calls this function. Similarly, most indexing operations have been
|
||||
<p>The file name had to fulfill the restrictions mentioned above
|
||||
because <code>__FILE__+1</code> was used as a second parameter to <code>fopen()</code>. (It
|
||||
essentially was <code>fopen(__FILE__,__FILE__+1)</code> ). This was an extra joke
|
||||
that doesn’t exist in the released version.</p>
|
||||
<p>You probably discovered that the <code>while(FILE)</code> in <code>main()</code> is not a while loop
|
||||
but the statement that opens the file and initializes the dictionary.
|
||||
Similarly, <code>int</code> and <code>signed</code> have been redefined (to save space, of course).</p>
|
||||
<p>The main function (the guessing part) is between the last <code>#else..#endif</code>,
|
||||
but still is declared before <code>main()</code>. The <code>5[O]()</code> in <code>main()</code> calls
|
||||
this function. Similarly, most indexing operations have been
|
||||
changed to this form and I tried to write each such operation
|
||||
different.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
|
||||
License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
|
||||
Reserved. You are free to share and adapt this file under the terms of
|
||||
this license:</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0 License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
|
||||
You are free to share and adapt this file under the terms of this license:</p>
|
||||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||||
<p>For more information, see:
|
||||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
<h1 id="inventory-for-1998df"><a name="inventory"></a>Inventory for
|
||||
1998/df</h1>
|
||||
<h1 id="inventory-for-1998df"><a name="inventory"></a>Inventory for 1998/df</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/df.c">df.c</a>
|
||||
- entry source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/Makefile">Makefile</a>
|
||||
- entry Makefile</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/df.orig.c">df.orig.c</a>
|
||||
- original source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/try.sh">try.sh</a>
|
||||
- how to run</li>
|
||||
<li><a href="1998_df.tar.bz2">1998_df.tar.bz2</a> - download entry
|
||||
source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/df.c">df.c</a> - entry source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/df.orig.c">df.orig.c</a> - original source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/try.sh">try.sh</a> - how to run</li>
|
||||
<li><a href="1998_df.tar.bz2">1998_df.tar.bz2</a> - download entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/.gitignore">.gitignore</a>
|
||||
- list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href=".path">.path</a> - directory path from top directory</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/README.md">README.md</a> - markdown source for index.html</li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
Reference in new issue
Block a user