improved indentation and whitespace for markdown code blocks

All code blocks in markdown have been intended by at least 4 spaces.

We add `--tab-stop=8` to all `pandoc(1)` executions in order to set
a better tab stop indentation, especially for tab intended code blocks.

Changed `bin/pandoc-wrapper.sh` VERSION from "1.5.3 2024-03-26"
to "1.6 2024-03-31".

Fixed `1991/brnstnd/sorta.README.md` so that the sorta code
is code blocks.

Removed unneeded paragraph group in copyright in `inc/footer.default.html`.

Fixed excess whitespace after list Author on entry `index.html` page.

Changed `bin/output-index-author.sh` VERSION from "1.5.2 2024-03-26"
to "1.6 2024-03-31".

Performed `make www` to perform the above and test under macOS.

TODO: Fix the problem of the initial line of code being extra intended.
TODO: Fix excess whitespace around code that is inline.
This commit is contained in:
Landon Curt Noll committed 2024-04-01 04:48:48 -07:00
1 parent b84c27ce02
commit a996f8d2b8
734 files changed
+16723 -16963

No files matched your search

+44 -44
View File
@@ -1,7 +1,7 @@
## To build:
```sh
make all
make all
```
@@ -10,8 +10,8 @@ make all
The current status of this entry is:
```
STATUS: known bug - please help us fix
STATUS: INABIAF - please **DO NOT** fix
STATUS: known bug - please help us fix
STATUS: INABIAF - please **DO NOT** fix
```
For more detailed information see [1992 adrian bugs](../../bugs.html#1992_adrian).
@@ -20,13 +20,13 @@ For more detailed information see [1992 adrian bugs](../../bugs.html#1992_adrian
## Try:
```sh
./try.sh
./try.sh
```
For the slow minded, try:
```sh
./adsleep 32767
./adsleep 32767
```
@@ -59,7 +59,7 @@ The deterministic finite automaton is specified as a series of rules for
each state:
```
<state> chars1 <dest1> chars2 <dest2> ...
<state> chars1 <dest1> chars2 <dest2> ...
```
`chars1` is a list of characters (_only the first 8_ are significant) which
@@ -72,10 +72,10 @@ significant to only eight characters like `chars1`.
### Example 1: matches `^abc$`
```
<q0> a <q1> The first state to appear is the start state
<q1> b <q2>
<q2> c [q3]
[q3]
<q0> a <q1> The first state to appear is the start state
<q1> b <q2>
<q2> c [q3]
[q3]
```
Technically, a deterministic finite automaton should have a rule for each
@@ -88,54 +88,54 @@ character list.
### Example 2: `^abc`
```
<q0> a <q1>
<q1> b <q2>
<q2> c [q3]
[q3] . [q3]
<q0> a <q1>
<q1> b <q2>
<q2> c [q3]
[q3] . [q3]
```
### Example 3: `abc$`
```
<q0> a <q1> . <q0>
<q1> b <q2> a <q1> . <q0>
<q2> c [q3] a <q1> . <q0>
[q3] . <q1>
<q0> a <q1> . <q0>
<q1> b <q2> a <q1> . <q0>
<q2> c [q3] a <q1> . <q0>
[q3] . <q1>
```
### Example 4: `^(abc)*$`
```
[q0] a <q1>
<q1> b <q2>
<q2> c [q0]
[q0] a <q1>
<q1> b <q2>
<q2> c [q0]
```
### Example 5: `^[ab][cd][ef]$`
```
<q0> ab <q1>
<q1> cd <q2>
<q2> ef [q3]
[q3]
<q0> ab <q1>
<q1> cd <q2>
<q2> ef [q3]
[q3]
```
### Example 6: `^(abc|efg)$`
```
<q0> a <q1> e <q3>
<q1> b <q2>
<q2> c [q5]
<q3> f <q4>
<q4> g [q5]
[q5]
<q0> a <q1> e <q3>
<q1> b <q2>
<q2> c [q5]
<q3> f <q4>
<q4> g [q5]
[q5]
```
With the automaton specification in `filename`, invoke the program by
typing
```sh
./adrian filename
./adrian filename
```
@@ -152,7 +152,7 @@ occurs if your automaton has more than 257 states.
Running:
```sh
./adrian from < your_mailbox
./adrian from < your_mailbox
```
will perform a function similar to that of the unix `from` command.
@@ -164,13 +164,13 @@ changed to `__FILE__`.) In this case, the program will search for matches to
the regular expression:
```
^.[^|C][^w[Q]*(Q|[w[]c).*|^.[C|]$
^.[^|C][^w[Q]*(Q|[w[]c).*|^.[C|]$
```
I suggest using `adrian.c` as input, and storing the output in `adwc.c`:
```sh
./adrian < adrian.c > adwc.c
./adrian < adrian.c > adwc.c
```
Compiling the new file, `adwc.c`, yields a clone of the unix `wc` command. It
@@ -182,19 +182,19 @@ Another possibly interesting automaton can be created by slightly
adjusting the `adrian.c` file. Change the first line to read
```c
/* . echo| . */
/* . echo| . */
```
and repeat the process above
```sh
./adrian <adrian.c > adecho.c
./adrian <adrian.c > adecho.c
```
The new file now contains all lines which match
```
^.[^5|m^]*[m^]([e=p,;]|[^e=+p,;].*)$
^.[^5|m^]*[m^]([e=p,;]|[^e=+p,;].*)$
```
Compile and run. This is an `echo(1)` clone. Note the efficient algorithm
@@ -205,13 +205,13 @@ Two other adjustments to the first line also yield useful results. By
changing it to
```c
/* . head; . */
/* . head; . */
```
you can search for matches to
```
^.[^W]*W..*$
^.[^W]*W..*$
```
By some freak happenstance, lines of `adrian.c` which match this regular
@@ -222,14 +222,14 @@ specified (again this was changed to `__FILE__`).
By setting the first line to
```c
/* . basename . */
/* . basename . */
```
a clone of the unix `basename(1)` command can be unearthed. The automaton will
search for
```
^.[^j]*jr.*$
^.[^j]*jr.*$
```
on standard input. And the program which results by running `adrian.c`
@@ -241,13 +241,13 @@ The resulting base name is printed to stdout.
Lastly, by setting the first line to
```c
/* . sleep . */
/* . sleep . */
```
you can search for
```
^.[^(~][^s]*sl.*$
^.[^(~][^s]*sl.*$
```
Filtering `adrian.c` through this search yields a clone of the `sleep(1)`
+45 -46
View File
@@ -132,8 +132,7 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Adrian_Mariano">Adrian Mariano</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -142,16 +141,16 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h2 id="to-build">To build:</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> all</span></code></pre></div>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> all</span></code></pre></div>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<pre><code>STATUS: known bug - please help us fix
STATUS: INABIAF - please **DO NOT** fix</code></pre>
<pre><code> STATUS: known bug - please help us fix
STATUS: INABIAF - please **DO NOT** fix</code></pre>
<p>For more detailed information see <a href="../../bugs.html#1992_adrian">1992 adrian bugs</a>.</p>
<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>
<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>For the slow minded, try:</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./adsleep</span> 32767</span></code></pre></div>
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./adsleep</span> 32767</span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Once you get past the obfuscation, you have an opportunity to learn
about regular expressions and state machines.</p>
@@ -171,51 +170,51 @@ string is consumed. If the current state at this point is one of the
accepting states, then the string is accepted.</p>
<p>The deterministic finite automaton is specified as a series of rules for
each state:</p>
<pre><code>&lt;state&gt; chars1 &lt;dest1&gt; chars2 &lt;dest2&gt; ...</code></pre>
<pre><code> &lt;state&gt; chars1 &lt;dest1&gt; chars2 &lt;dest2&gt; ...</code></pre>
<p><code>chars1</code> is a list of characters (<em>only the first 8</em> are significant) which
should trigger a transition to <code>&lt;dest1&gt;</code>. <code>&lt;dest1&gt;</code> is another state which
should have a similar specification somewhere. A state is accepting if
it is specified in square brackets: <code>[final]</code>; state strings are
significant to only eight characters like <code>chars1</code>.</p>
<h3 id="example-1-matches-abc">Example 1: matches <code>^abc$</code></h3>
<pre><code>&lt;q0&gt; a &lt;q1&gt; The first state to appear is the start state
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q3]
[q3]</code></pre>
<pre><code> &lt;q0&gt; a &lt;q1&gt; The first state to appear is the start state
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q3]
[q3]</code></pre>
<p>Technically, a deterministic finite automaton should have a rule for each
possible input character at each state. To simplify descriptions of the
automata, if no rule is present, the string will not be accepted. Also,
the <code>.</code> character matches any character if it occurs first in the
character list.</p>
<h3 id="example-2-abc">Example 2: <code>^abc</code></h3>
<pre><code>&lt;q0&gt; a &lt;q1&gt;
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q3]
[q3] . [q3]</code></pre>
<pre><code> &lt;q0&gt; a &lt;q1&gt;
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q3]
[q3] . [q3]</code></pre>
<h3 id="example-3-abc">Example 3: <code>abc$</code></h3>
<pre><code>&lt;q0&gt; a &lt;q1&gt; . &lt;q0&gt;
&lt;q1&gt; b &lt;q2&gt; a &lt;q1&gt; . &lt;q0&gt;
&lt;q2&gt; c [q3] a &lt;q1&gt; . &lt;q0&gt;
[q3] . &lt;q1&gt;</code></pre>
<pre><code> &lt;q0&gt; a &lt;q1&gt; . &lt;q0&gt;
&lt;q1&gt; b &lt;q2&gt; a &lt;q1&gt; . &lt;q0&gt;
&lt;q2&gt; c [q3] a &lt;q1&gt; . &lt;q0&gt;
[q3] . &lt;q1&gt;</code></pre>
<h3 id="example-4-abc">Example 4: <code>^(abc)*$</code></h3>
<pre><code>[q0] a &lt;q1&gt;
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q0]</code></pre>
<pre><code> [q0] a &lt;q1&gt;
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q0]</code></pre>
<h3 id="example-5-abcdef">Example 5: <code>^[ab][cd][ef]$</code></h3>
<pre><code>&lt;q0&gt; ab &lt;q1&gt;
&lt;q1&gt; cd &lt;q2&gt;
&lt;q2&gt; ef [q3]
[q3]</code></pre>
<pre><code> &lt;q0&gt; ab &lt;q1&gt;
&lt;q1&gt; cd &lt;q2&gt;
&lt;q2&gt; ef [q3]
[q3]</code></pre>
<h3 id="example-6-abcefg">Example 6: <code>^(abc|efg)$</code></h3>
<pre><code>&lt;q0&gt; a &lt;q1&gt; e &lt;q3&gt;
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q5]
&lt;q3&gt; f &lt;q4&gt;
&lt;q4&gt; g [q5]
[q5]</code></pre>
<pre><code> &lt;q0&gt; a &lt;q1&gt; e &lt;q3&gt;
&lt;q1&gt; b &lt;q2&gt;
&lt;q2&gt; c [q5]
&lt;q3&gt; f &lt;q4&gt;
&lt;q4&gt; g [q5]
[q5]</code></pre>
<p>With the automaton specification in <code>filename</code>, invoke the program by
typing</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./adrian</span> filename</span></code></pre></div>
<div class="sourceCode" id="cb12"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./adrian</span> filename</span></code></pre></div>
<p>It will read the file and print out all the lines which the automaton
accepts. If the file cannot be opened, a system error message will
be printed. If the input contains errors, then an error message along
@@ -226,52 +225,52 @@ being processed is printed. Error <code>no_destination</code> occurs if you spec
set of characters, but no destination state, and error <code>too_many_states</code>
occurs if your automaton has more than 257 states.</p>
<p>Running:</p>
<div class="sourceCode" id="cb13"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./adrian</span> from <span class="op">&lt;</span> your_mailbox</span></code></pre></div>
<div class="sourceCode" id="cb13"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./adrian</span> from <span class="op">&lt;</span> your_mailbox</span></code></pre></div>
<p>will perform a function similar to that of the unix <code>from</code> command.</p>
<p>If no filename is specified on the command line, then <code>__FILE__</code> is used as the
specification for the automaton. (Originally this was <code>"adgrep.c"</code> but the file
was renamed to <code>adrian.c</code> by the judges and for more portability the arg was
changed to <code>__FILE__</code>.) In this case, the program will search for matches to
the regular expression:</p>
<pre><code>^.[^|C][^w[Q]*(Q|[w[]c).*|^.[C|]$</code></pre>
<pre><code> ^.[^|C][^w[Q]*(Q|[w[]c).*|^.[C|]$</code></pre>
<p>I suggest using <code>adrian.c</code> as input, and storing the output in <code>adwc.c</code>:</p>
<div class="sourceCode" id="cb15"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./adrian</span> <span class="op">&lt;</span> adrian.c <span class="op">&gt;</span> adwc.c</span></code></pre></div>
<div class="sourceCode" id="cb15"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./adrian</span> <span class="op">&lt;</span> adrian.c <span class="op">&gt;</span> adwc.c</span></code></pre></div>
<p>Compiling the new file, <code>adwc.c</code>, yields a clone of the unix <code>wc</code> command. It
runs on one file, defaulting to <code>"adrian.c"</code> if no file is given (again, this
was changed to be <code>__FILE__</code>) and displays the number of lines, words, and bytes
in the input file.</p>
<p>Another possibly interesting automaton can be created by slightly
adjusting the <code>adrian.c</code> file. Change the first line to read</p>
<div class="sourceCode" id="cb16"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* . echo| . */</span></span></code></pre></div>
<div class="sourceCode" id="cb16"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a> <span class="co">/* . echo| . */</span></span></code></pre></div>
<p>and repeat the process above</p>
<div class="sourceCode" id="cb17"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./adrian</span> <span class="op">&lt;</span>adrian.c <span class="op">&gt;</span> adecho.c</span></code></pre></div>
<div class="sourceCode" id="cb17"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./adrian</span> <span class="op">&lt;</span>adrian.c <span class="op">&gt;</span> adecho.c</span></code></pre></div>
<p>The new file now contains all lines which match</p>
<pre><code>^.[^5|m^]*[m^]([e=p,;]|[^e=+p,;].*)$</code></pre>
<pre><code> ^.[^5|m^]*[m^]([e=p,;]|[^e=+p,;].*)$</code></pre>
<p>Compile and run. This is an <code>echo(1)</code> clone. Note the efficient algorithm
employed.</p>
<p>Two other adjustments to the first line also yield useful results. By
changing it to</p>
<div class="sourceCode" id="cb19"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* . head; . */</span></span></code></pre></div>
<div class="sourceCode" id="cb19"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a> <span class="co">/* . head; . */</span></span></code></pre></div>
<p>you can search for matches to</p>
<pre><code>^.[^W]*W..*$</code></pre>
<pre><code> ^.[^W]*W..*$</code></pre>
<p>By some freak happenstance, lines of <code>adrian.c</code> which match this regular
expression form a unix <code>head(1)</code> command. It prints the first ten lines of
the file specified on the command line or <code>adrian.c</code> if no file is
specified (again this was changed to <code>__FILE__</code>).</p>
<p>By setting the first line to</p>
<div class="sourceCode" id="cb21"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* . basename . */</span></span></code></pre></div>
<div class="sourceCode" id="cb21"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a> <span class="co">/* . basename . */</span></span></code></pre></div>
<p>a clone of the unix <code>basename(1)</code> command can be unearthed. The automaton will
search for</p>
<pre><code>^.[^j]*jr.*$</code></pre>
<pre><code> ^.[^j]*jr.*$</code></pre>
<p>on standard input. And the program which results by running <code>adrian.c</code>
through this filter requires two parameters. The first is meant to be a
filename, and the second, an extension. All leading pathname components
are removed from the filename, and the extension is removed if present.
The resulting base name is printed to stdout.</p>
<p>Lastly, by setting the first line to</p>
<div class="sourceCode" id="cb23"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* . sleep . */</span></span></code></pre></div>
<div class="sourceCode" id="cb23"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a> <span class="co">/* . sleep . */</span></span></code></pre></div>
<p>you can search for</p>
<pre><code>^.[^(~][^s]*sl.*$</code></pre>
<pre><code> ^.[^(~][^s]*sl.*$</code></pre>
<p>Filtering <code>adrian.c</code> through this search yields a clone of the <code>sleep(1)</code>
command. Invoke with a single integer parameter, and it will pause for that
many seconds.</p>