set pandoc 8 character tab stops for HTML conversion

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 "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`.

Performed `make www` to perform the above and test under macOS.
This commit is contained in:
Landon Curt Noll committed 2024-03-31 23:55:08 -07:00
1 parent 7141a1b808
commit b84c27ce02
402 files changed
+2414 -2396

No files matched your search

+3 -3
View File
@@ -201,11 +201,11 @@ display strange results with more than one argument.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -271,7 +271,7 @@ display strange results with more than one argument.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -329,11 +329,11 @@ string so that it returns right away without blocking. The first time the
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -396,7 +396,7 @@ string so that it returns right away without blocking. The first time the
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -280,11 +280,11 @@ code a little to pretend to use the return value of <code>fscanf(3)</code>.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -354,7 +354,7 @@ code a little to pretend to use the return value of <code>fscanf(3)</code>.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -171,11 +171,11 @@ render for a larger terminal window? How about adding more glyphs?</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -248,7 +248,7 @@ render for a larger terminal window? How about adding more glyphs?</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -141,11 +141,11 @@ the all items and generates <a href="prog.c">prog.c</a>.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -182,7 +182,7 @@ the all items and generates <a href="prog.c">prog.c</a>.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -176,11 +176,11 @@ time might depend on what time it is.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -245,7 +245,7 @@ time might depend on what time it is.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -191,11 +191,11 @@ the proper function (and/or cast to the right type).</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -232,7 +232,7 @@ the proper function (and/or cast to the right type).</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+21 -17
View File
@@ -146,8 +146,10 @@ snake’s syllabary) for all snake and herpetologist programmers alike.</p>
<ul>
<li><p>Modifications</p>
<ul>
<li>Modifying the colours</li>
<li>Modifying the colours
<ul>
<li>Background colour</li>
</ul></li>
<li>Modifying the characters for the wall, bug and snake</li>
<li>Modifying input keys</li>
<li>Modifying the status/score line</li>
@@ -157,8 +159,10 @@ snake’s syllabary) for all snake and herpetologist programmers alike.</p>
<ul>
<li>Health (and/or Lives)</li>
<li>Saving the game</li>
<li>Different types of walls</li>
<li>Different types of walls
<ul>
<li>Blockades</li>
</ul></li>
<li>Diagonal movement</li>
<li>Special abilities</li>
<li>Obstacles</li>
@@ -279,27 +283,27 @@ not wanting to mess with anything that’s unnecessary):</p>
<div class="sourceCode" id="cb10"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#define J Z</span><span class="op">(</span><span class="pp">SIZE</span><span class="op">:</span><span class="pp"> </span><span class="op">%</span><span class="pp">zu BUGS</span><span class="op">:</span><span class="pp"> </span><span class="op">%</span><span class="pp">zu\n</span><span class="op">),</span><span class="pp"> A</span><span class="op">,</span><span class="pp"> c</span><span class="op">);</span></span></code></pre></div>
<p>More generally the following expressions and data types (with format specifiers)
come to mind as information that might be of interest.</p>
<pre><code> DESCRIPTION EXPRESSION TYPE FORMAT SPECIFIER
<pre><code> DESCRIPTION EXPRESSION TYPE FORMAT SPECIFIER
Snake size A size_t %zu
Snake size A size_t %zu
Y coordinate Y int %d
Y coordinate Y int %d
of snake head
X coordinate X int %d
X coordinate X int %d
of snake head
Max snake size g size_t %zu
Max snake size g size_t %zu
Bugs eaten c size_t %zu
Bugs eaten c size_t %zu
Bug line (Y) *U int %d
Bug line (Y) *U int %d
Bug column (X) *V int %d
Bug column (X) *V int %d
Snake size A size_t %zu
Snake size A size_t %zu
Growth size (per N size_t %zu
Growth size (per N size_t %zu
bug)</code></pre>
<h2 id="make-it-so-the-snake-starts-at-a-random-location">Make it so the snake starts at a random location</h2>
<p>Quite simply change:</p>
@@ -406,9 +410,9 @@ coordinates. This of course is very different now but the idea remains the same:
<div class="sourceCode" id="cb14"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> <span class="op">(</span>p <span class="op">&amp;&amp;</span> <span class="op">!(*</span>O<span class="op">&gt;=</span>O<span class="op">[</span><span class="dv">1</span><span class="op">]||</span>H<span class="op">&gt;=</span>M<span class="op">(</span><span class="dv">1</span><span class="op">)))</span></span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="op">{</span></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="op">(</span>X<span class="op">&lt;</span><span class="dv">1</span><span class="op">||</span>X<span class="op">&gt;=</span>H<span class="op">)</span></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a> X <span class="op">=</span> X<span class="op">&lt;</span><span class="dv">1</span><span class="op">?</span>H<span class="op">-</span><span class="dv">1</span><span class="op">:</span><span class="dv">1</span><span class="op">;</span></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a> X <span class="op">=</span> X<span class="op">&lt;</span><span class="dv">1</span><span class="op">?</span>H<span class="op">-</span><span class="dv">1</span><span class="op">:</span><span class="dv">1</span><span class="op">;</span></span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="op">(</span>Y<span class="op">&lt;</span><span class="dv">2</span><span class="op">||</span>Y<span class="op">&gt;=*</span>O<span class="op">)</span></span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a> Y <span class="op">=</span> Y<span class="op">&lt;</span><span class="dv">2</span><span class="op">?*</span>O<span class="op">-</span><span class="dv">1</span><span class="op">:</span><span class="dv">2</span><span class="op">;</span></span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a> Y <span class="op">=</span> Y<span class="op">&lt;</span><span class="dv">2</span><span class="op">?*</span>O<span class="op">-</span><span class="dv">1</span><span class="op">:</span><span class="dv">2</span><span class="op">;</span></span>
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
<p>You can ignore the first if if you like; I’m not going to explain that part. The
inner if statements however are testing if the new snake coordinates are beyond
@@ -501,11 +505,11 @@ no default limit on max moves.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -542,7 +546,7 @@ no default limit on max moves.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+5 -5
View File
@@ -232,8 +232,8 @@ me and I figured I better note it.</p>
second pointing to where it happens and the third being what’s left after the
rest of the snake has gone through). Doing <code>SHED=100 SHEDS=-1</code>:</p>
<pre><code>ooooooooo&gt;ooo&gt;
^
&gt;</code></pre>
^
&gt;</code></pre>
<p>The <code>^</code> points to the part that’s split from the snake and which will be
there on its own after the snake passes through it. Here’s an example with
it being <code>SHEDS=-3</code>:</p>
@@ -342,11 +342,11 @@ but it is very much appreciated and it means a great deal to me. Cheers.)</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -383,7 +383,7 @@ but it is very much appreciated and it means a great deal to me. Cheers.)</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -309,11 +309,11 @@ hadn’t yet moved (that is it was still growing):</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -350,7 +350,7 @@ hadn’t yet moved (that is it was still growing):</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -279,11 +279,11 @@ thick BUT not too thick. <strong>Make <em>SURE</em> ICING DOES <em>NOT</em> GET
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -320,7 +320,7 @@ thick BUT not too thick. <strong>Make <em>SURE</em> ICING DOES <em>NOT</em> GET
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -226,11 +226,11 @@ could safely go through that part of the screen.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -267,7 +267,7 @@ could safely go through that part of the screen.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+8 -8
View File
@@ -522,11 +522,11 @@ could also set the max size to be the highest possible by saying</p>
perfect: the snake after all does not leave gaps and the game does not support
diagonal movement and I also made a mistake and had to modify what I was aiming
for. But you can consider this mode drawing or practice mode.</p>
<pre><code> oooooooooo ooooo o oo ooooo
o o oo o oo o ooo o
oooo o oo ooooooo oooo ooooo
o o ooo oo o ooo o
oooo o oo ooo oooooooo&gt;</code></pre>
<pre><code> oooooooooo ooooo o oo ooooo
o o oo o oo o ooo o
oooo o oo ooooooo oooo ooooo
o o ooo oo o ooo o
oooo o oo ooo oooooooo&gt;</code></pre>
<h2 id="gameplay-mode-computer-playing-automatic-mode-photosensitive-epilepsystimulation-overload-trigger"><a name="auto" href="#toc">Gameplay mode: Computer playing / Automatic mode (Photosensitive epilepsy/Stimulation overload trigger)</a></h2>
<p><strong>Photosensitive epilepsy/stimulation overload trigger warning:</strong>
For those who have epilepsy or are susceptible to stimulation overload from
@@ -713,11 +713,11 @@ years ago but I know it’s true now. <strong>Believe in yourself. Always.</stro
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -754,7 +754,7 @@ years ago but I know it’s true now. <strong>Believe in yourself. Always.</stro
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -603,11 +603,11 @@ email but I’m more likely to respond to mastodon messages.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -700,7 +700,7 @@ email but I’m more likely to respond to mastodon messages.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+84 -84
View File
@@ -278,21 +278,21 @@ in real life increases in size like that so suddenly? :)</p>
<li><p>I make use of the C token pasting operator. Although this is well known it’s
probably less known and either way it’s not as simple as just having the code
that it translates to. For example why have:</p>
<pre><code> attroff(COLOR_PAIR(L));</code></pre>
<pre><code> attroff(COLOR_PAIR(L));</code></pre>
<p>When you can have instead:</p>
<pre><code> attroff(m(PAIR(L)));</code></pre>
<pre><code> attroff(m(PAIR(L)));</code></pre>
<p>It’s an extra layer of indirection. This used to be more used but when
making it easier for users to change the colour pairs I no longer used it to
set up colour pairs. It might not defeat <code>cpp</code> but it does make for more
reading otherwise (depending on how you look at it maybe less?).</p>
<p>It also helps save iocccsize bytes (but not as many as it used to!).</p></li>
<li><p>What is this block of code?</p>
<pre><code> F(MAXSIZE)g d g = f((a)((*y-2)*(y[-2]-2)),g);
F(GROW)N d
F(SIZE)A d
F(WAIT)y[-3] = (int) strtol(z,NULL,0));
F(EVADE)W d
/* and so on */</code></pre>
<pre><code> F(MAXSIZE)g d g = f((a)((*y-2)*(y[-2]-2)),g);
F(GROW)N d
F(SIZE)A d
F(WAIT)y[-3] = (int) strtol(z,NULL,0));
F(EVADE)W d
/* and so on */</code></pre>
<p>There are several things going on here but I’ll focus on the main one here and
leave the others to their own: the <code>F</code> macro and the associated <code>d</code> macro are
here important.</p>
@@ -303,7 +303,7 @@ the one that clearly shows strtol()).</p>
<p>There are other things going on (below).</p>
<p>Now it might not defeat the cpp but can you tell me what this is even with the
cpp?</p>
<pre><code> f((a)((*y-2)*(y[-2]-2)),g);</code></pre>
<pre><code> f((a)((*y-2)*(y[-2]-2)),g);</code></pre>
<p>The cpp might get it closer to what you might expect in a normal program but I
refer to the array offsets (below also).</p></li>
<li><p>Stringification: there isn’t a single <code>"</code> in the source code! The <code>F</code> macro
@@ -313,7 +313,7 @@ made it use it instead. If I remember rightly that uses extra bytes but somehow
it felt better this way in my head. Then to save many bytes I made the macro do
much more than that (that is the <code>F</code> macro).</p>
<p>As for the Z() macro it means that I could remove <code>"</code>s; for example:</p>
<pre><code> #define J Z(X:%d/%d Y:%d/%d S:%zu/%zu B:%zu\n), Y, y[-2], X,*y,A,g, c);</code></pre>
<pre><code> #define J Z(X:%d/%d Y:%d/%d S:%zu/%zu B:%zu\n), Y, y[-2], X,*y,A,g, c);</code></pre>
<p>Which as I have discussed elsewhere is the entire set of parameters to both
<code>mvprintw()</code> and <code>printf()</code> plus the end of the function call (i.e. <code>);</code>.</p>
<p>BTW: There’s another really cool benefit of stringification: because more than
@@ -321,7 +321,7 @@ one space is converted to a single space I can have it spread across columns on
the format and even new lines if necessary. This fact along with the next
technique causes some beautifiers problems too.</p></li>
<li><p>Another use of the <code>Z</code> macro is this curious line:</p>
<pre><code> static const char*s =Z( ; +&lt;&gt;^v);</code></pre>
<pre><code> static const char*s =Z( ; +&lt;&gt;^v);</code></pre>
<p>There are a number of curious parts. First is the Z() part makes it look
like a function call. Of course that wouldn’t work as such because an array
initialiser needs an initialiser list or a string literal. Whether that’s
@@ -340,7 +340,7 @@ only one copy is needed. Why I have it in the function is to move it further
away from the definition of <code>Z()</code>. I will also be returning to this one
again.</p>
<p>Another example is using the <code>E()</code> function e.g.:</p>
<pre><code> E(Z(YOU WIN!));</code></pre>
<pre><code> E(Z(YOU WIN!));</code></pre>
<p>Which happens to be in the same function the above char array is defined. Also
it’s more like a string than anything but yet it’s not visibly a string.</p>
<p>Some beautifiers didn’t like this at all.</p></li>
@@ -374,10 +374,10 @@ not the good kind!</p></li>
<li><p>On the note of pausing there’s at least one instance of removing <code>if..else</code>
(besides those in e.g. environmental variable processing) that’s curious: I
converted this:</p>
<pre><code> if (!P) P = 1;
else P = 0;</code></pre>
<pre><code> if (!P) P = 1;
else P = 0;</code></pre>
<p>To this:</p>
<pre><code> (!P &amp;&amp; (P = 1))||(P=0);</code></pre></li>
<pre><code> (!P &amp;&amp; (P = 1))||(P=0);</code></pre></li>
<li><p>Makes use of the different namespaces to have variables and labels be the
same identifier. For example in main() there’s a variable that also have the
same name label for <code>goto</code> (there used to be two pairs in <code>main()</code>).</p></li>
@@ -390,30 +390,30 @@ to then <code>goto x</code>? Do I need to check <code>Q</code> at all? In fact I
it might be easy to miss.</p></li>
<li><p>Uses an unnamed array (compound literal) for several different game variables.
The pointer to the first element is defined like <code>int *j</code>:</p>
<pre><code> static int Y,X,*j = (int[8]){231,0}, *U, *V, *e, *n, Q, P,x,*y,l=4,*D;</code></pre>
<pre><code> static int Y,X,*j = (int[8]){231,0}, *U, *V, *e, *n, Q, P,x,*y,l=4,*D;</code></pre>
<p>Does the 231 seem familiar? It should: it’s the default key delay for the
<code>timeout()</code> call (which I will return to again). The rest are 0 default. But
what about <code>j</code>? Is it even used? Actually in main:</p>
<pre><code> y = j+3;</code></pre>
<pre><code> y = j+3;</code></pre>
<p>But aside from that <code>j</code> is not used. However…</p></li>
<li><p>Major abuse of negative pointer offsets along with confusing names. I’ll say
this in two parts: the negative offsets and then the confusing names.</p>
<p>Can you honestly tell me that this is easy to follow?</p>
<pre><code> if (Y &lt; 1 || Y &gt;= y[-2] || X &lt; 2 || X &gt;= *y || y[-2] &gt;= y[-1] || *y &gt;= 1[y])
{
if (*p &amp;&amp; !(*y&gt;=1[y]||y[-2]&gt;=y[-1]))
<pre><code> if (Y &lt; 1 || Y &gt;= y[-2] || X &lt; 2 || X &gt;= *y || y[-2] &gt;= y[-1] || *y &gt;= 1[y])
{
if (Y&lt;1||Y&gt;=y[-2])
Y = Y&lt;1?y[-2]-1:1;
if (X&lt;2||X&gt;=*y)
X = X&lt;2?*y-1:2;
}
/* ... */
}</code></pre>
if (*p &amp;&amp; !(*y&gt;=1[y]||y[-2]&gt;=y[-1]))
{
if (Y&lt;1||Y&gt;=y[-2])
Y = Y&lt;1?y[-2]-1:1;
if (X&lt;2||X&gt;=*y)
X = X&lt;2?*y-1:2;
}
/* ... */
}</code></pre>
<p>That’s not the only place negative offsets occur! Observe the ternary operators
there too.</p>
<p>I’ll go back to the <code>F()</code> macro and in particular what follows one of them:</p>
<pre><code> g d g = f((a)((*y-2)*(y[-2]-2)),g);</code></pre>
<pre><code> g d g = f((a)((*y-2)*(y[-2]-2)),g);</code></pre>
<p>To parse that at the very least you have to know that <code>y</code> points to <code>j + 3</code>.
Then you have to know that <code>j</code> points to the first element of an unnamed
array (compound literal). But then you also have to know that that array has
@@ -422,17 +422,17 @@ then have to account for the offset that <code>y</code> is. Then once you have t
figured out you need to consider the negative offsets to <code>y</code> (this also
applies to the block above of course and maybe more so). Then you have to
think of operator precedence etc. I mean what is:</p>
<pre><code> (*y-2) * (y[-2]-2])</code></pre>
<pre><code> (*y-2) * (y[-2]-2])</code></pre>
<p>…about? An offset of <code>-2</code> and subtract <code>-2</code> from that. Multiply that by the <code>*y</code>
(which is <code>j[3]</code>) <code>- 2</code>.</p>
<p>But why is there a <code>g d g =</code> when the other lines only have the variable (or
location) and a <code>d</code>? (Excepting the one that doesn’t refer to <code>d</code>.)</p></li>
<li><p>On the confusing names etc.: the <code>getmaxyx()</code> function gets the maximum Y, X
dimensions. Now in the first call in <code>main()</code> I have the code and tests following:</p>
<pre><code> getmaxyx(v, *y, y[-2]);
--*y; --y[-2];
if (y[-2] &lt; 9 || *y &lt; 9)
return E(Z(term too small));</code></pre>
<pre><code> getmaxyx(v, *y, y[-2]);
--*y; --y[-2];
if (y[-2] &lt; 9 || *y &lt; 9)
return E(Z(term too small));</code></pre>
<p>Clearly the <code>max x</code> must be stored in <code>*y</code> and the <code>max y</code> must be stored in ..
<code>y[-2]</code>. After all anyone knows that the coordinates are in the order <code>(X,Y)</code>!
In fact the output of my entry and my documentation demonstrates this
@@ -466,7 +466,7 @@ what it knows, and since <code>X</code> and <code>Y</code> are used for coordina
of the brain is to assume <code>Y</code> is what is really <code>X</code> and <code>X</code> is what is really <code>Y</code>.</p></li>
<li><p>More confusion with variable names: If you notice the <code>int *U, *V</code> they are
also part of the compound literal: that is they point into it:</p>
<pre><code> U=y+2; V=U+1;</code></pre>
<pre><code> U=y+2; V=U+1;</code></pre>
<p>Except that these two are done in two different places: away from the
assignment of <code>y</code> to remove them further away from the contexts they are
used in.</p>
@@ -477,13 +477,13 @@ location at <code>*U, *V</code> but then assign the new location differently. Th
<code>main()</code> I draw it at <code>*U, *V</code> and also check for the bug being eaten there
too.</p></li>
<li><p>There’s another array that holds a variety of data.</p>
<pre><code> static k p[5]={1,0},W=300;</code></pre>
<pre><code> static k p[5]={1,0},W=300;</code></pre>
<p>It holds the following information (but not necessarily in this order):</p>
<pre><code> WALLS
CANNIBAL
SHED
SHEDS
EVADE</code></pre>
<pre><code> WALLS
CANNIBAL
SHED
SHEDS
EVADE</code></pre>
<p>But how will you know that just looking at the declaration? Many variables
and they’re part of collections but the many layers of indirection cause
confusion to the already unhelpful variable names (for those that even have
@@ -496,18 +496,18 @@ don’t know why.</p></li>
<li><p>On arrays/pointers in general I also use e.g. <code>3[p]</code> and <code>p[3]</code> (there are
many other examples that I have already shown).</p></li>
<li><p>Expanding on referring to the same thing in more than one way take a look at:</p>
<pre><code> case KEY_LEFT:
V[1] = l-3;
break;
case KEY_RIGHT:
V[l/l] = l/2;
break;
case KEY_UP:
V[l-3] = l-1;
break;
case KEY_DOWN:
V[l/4] = l;
break;</code></pre>
<pre><code> case KEY_LEFT:
V[1] = l-3;
break;
case KEY_RIGHT:
V[l/l] = l/2;
break;
case KEY_UP:
V[l-3] = l-1;
break;
case KEY_DOWN:
V[l/4] = l;
break;</code></pre>
<p>What’s going on there? First of all the letter ell looks very much like the
digit one but above there are only two references to the digit <code>1</code>; the
others are the letter <code>l</code>. If you’re tired though, don’t have the best
@@ -529,7 +529,7 @@ possible that I could have negative offsets here (and there’s nothing that
would prevent negating a variable either in this case): I have done it many
other places! But even after all of that you still need to do the
calculations when I could simply have had:</p>
<pre><code> V[1] = 1; V[1] = 2; ...</code></pre>
<pre><code> V[1] = 1; V[1] = 2; ...</code></pre>
<p>Etc.</p></li>
<li><p>Variable reuse. For example in the function E() there’s a variable that keeps
track of whether or not it’s been called; that variable is <code>h</code> and it says
@@ -556,20 +556,20 @@ is to make sure that they’re actually bigger? How does that work? Why not just
check if it’s &gt; than the current?</p></li>
<li><p>More confusion with the max x/y dimensions: Going back to max x/y dimensions
and coordinates of the snake; I showed this code before:</p>
<pre><code> if (Y &lt; 1 || Y &gt;= y[-2] || X &lt; 2 || X &gt;= *y || y[-2] &gt;= y[-1] || *y &gt;= 1[y])
{
if (*p &amp;&amp; !(*y&gt;=1[y]||y[-2]&gt;=y[-1]))
<pre><code> if (Y &lt; 1 || Y &gt;= y[-2] || X &lt; 2 || X &gt;= *y || y[-2] &gt;= y[-1] || *y &gt;= 1[y])
{
if (Y&lt;1||Y&gt;=y[-2])
Y = Y&lt;1?y[-2]-1:1;
if (X&lt;2||X&gt;=*y)
X = X&lt;2?*y-1:2;
}
else
{
/* ... */
}
}</code></pre>
if (*p &amp;&amp; !(*y&gt;=1[y]||y[-2]&gt;=y[-1]))
{
if (Y&lt;1||Y&gt;=y[-2])
Y = Y&lt;1?y[-2]-1:1;
if (X&lt;2||X&gt;=*y)
X = X&lt;2?*y-1:2;
}
else
{
/* ... */
}
}</code></pre>
<p>I asked if you could honestly figure that out easily. But here’s a bit more
elaboration. I already talked about the negative offsets - and they should
talk enough themselves - but look at the mess. Even if they weren’t negative
@@ -593,10 +593,10 @@ and not even in this part of the code).</p></li>
<li><p>The function <code>B()</code> ends with a <code>goto</code>. Why? It’s also another place where
there’s at least one negative offset.</p></li>
<li><p>A note on the many <code>#define</code>s in my entry. You say you dislike them:</p>
<pre><code> Doing masses of #defines to obscure the source has become &#39;old&#39;. We
tend to &#39;see thru&#39; masses of #defines due to our pre-processor tests
that we apply. Simply abusing #defines or -Dfoo=bar won&#39;t go as far
as a program that is more well rounded in confusion.</code></pre>
<pre><code> Doing masses of #defines to obscure the source has become &#39;old&#39;. We
tend to &#39;see thru&#39; masses of #defines due to our pre-processor tests
that we apply. Simply abusing #defines or -Dfoo=bar won&#39;t go as far
as a program that is more well rounded in confusion.</code></pre>
<p>As I have noted though many of these save quite a lot of bytes too. It’s
true that they might aid (but barely) in obfuscation but I think that my
entry is more rounded in confusion; certainly the other techniques I have
@@ -613,24 +613,24 @@ the way I have it now).</p></li>
magical about the number 7 isn’t there? I do not refer to primes although
certainly one could say that primes have a magic to them. No. I’m instead
referring to another property: bitwise AND. For example consider the following:</p>
<pre><code> 7 &amp; 0
7 &amp; 1
7 &amp; 2
7 &amp; 3
7 &amp; 4
7 &amp; 5
7 &amp; 6
7 &amp; 7</code></pre>
<pre><code> 7 &amp; 0
7 &amp; 1
7 &amp; 2
7 &amp; 3
7 &amp; 4
7 &amp; 5
7 &amp; 6
7 &amp; 7</code></pre>
<p>What is the result of each operation? Quite simply it’s the number itself!
How does this relate to the <code>s</code> array though? Let me back up. Is there any
place in the code that has the number 7 (by itself - 997 doesn’t count)? A
quick check will answer that: no. But here’s a curious thing:</p>
<pre><code> q X, Y, s[*D+2&amp;(1&lt;&lt;3)-!Q]);</code></pre>
<pre><code> q X, Y, s[*D+2&amp;(1&lt;&lt;3)-!Q]);</code></pre>
<p>We KNOW that at this place <code>Q</code> is 0 so the <code>!Q</code> has to be 1. Now <code>1 &lt;&lt; 3</code> is 8. Therefore</p>
<pre><code> (1 &lt;&lt; 3) - !Q == 7</code></pre>
<pre><code> (1 &lt;&lt; 3) - !Q == 7</code></pre>
<p>But what’s <code>*D</code>? If the snake hasn’t moved once yet it’s 0; otherwise it’s the number
of the direction the snake is currently facing. Thus</p>
<pre><code> *D&amp;(1&lt;&lt;3)-!Q</code></pre>
<pre><code> *D&amp;(1&lt;&lt;3)-!Q</code></pre>
<p>…refers to <code>*D</code>. However if I were to have that be the element it wouldn’t
work right: I wanted the semicolon in there but the space was needed to
reduce the iocccsize down by one (ironic that adding a byte reduces it by
@@ -845,11 +845,11 @@ matter having a ‘o’ at 0,0 isn’t either).</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -886,7 +886,7 @@ matter having a ‘o’ at 0,0 isn’t either).</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+24 -25
View File
@@ -252,14 +252,13 @@ messed up. There are numerous things you might try but probably the easiest is
to run the game again without modifying the dimensions (and then just quit) or
even just the <code>reset</code> command.</p>
<p>The Linux man page says:</p>
<pre><code>You might have to run the `reset` tool like:
&lt;LF&gt;reset&lt;LF&gt;
<p>You might have to run the <code>reset</code> tool like:</p>
<pre><code> &lt;LF&gt;reset&lt;LF&gt;
(the line-feed character is normally control-J) to get the terminal
to work, as carriage-return may no longer work in the abnormal state.</code></pre>
<p>If you don’t have the reset utility you can try:</p>
<pre><code> echo -e \\033c</code></pre>
<pre><code> echo -e \\033c</code></pre>
<p>Otherwise try <code>clear; stty sane</code> (that will turn on echo also) or if all else
fails log out and back in.</p>
<p>For more information on this subject generally see the <a href="https://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html">Linux keyboard and
@@ -271,10 +270,10 @@ outside what’s actually possible with their screen. But then player 4 comes
along and thinks he/she will be clever and mess with the dimensions a bit. Let’s
say they have a 13” monitor and they think it’d be funny to see how 997 lines
would work; they might try something like:</p>
<pre><code> LINES=997 ./prog</code></pre>
<pre><code> LINES=997 ./prog</code></pre>
<p>What then? Well expect trouble; curses will not know any better and the max
number of lines will be 997. If they were to do:</p>
<pre><code> COLUMNS=997 ./prog</code></pre>
<pre><code> COLUMNS=997 ./prog</code></pre>
<p>Then they will see a different effect. Again the same reason: the player trying
to be funny.</p>
<p>The game will try and be funny in return and you can expect it to not function
@@ -306,7 +305,7 @@ GitHub) file).</p>
<p>According to my tests for monochrome terminals the screen has the white and
black background; if terminal is configured to be black background white
foreground that is the order it is too. You can try that like:</p>
<pre><code> TERM=linux-m ./prog</code></pre>
<pre><code> TERM=linux-m ./prog</code></pre>
<p>But I do not specifically check if the terminal has colours. Is there a curses
implementation that has a problem here? Below I explain what to comment out
should you need colours to be disabled but I personally have not run into any
@@ -324,7 +323,7 @@ including COLORS-1.</code></pre>
[...]
COLOR_PAIRS corresponds to the terminal database&#39;s max_pairs capability, (see terminfo(5)).</code></pre>
COLOR_PAIRS corresponds to the terminal database&#39;s max_pairs capability, (see terminfo(5)).</code></pre>
<p>Based on the two as well as the fact that monochrome terminals (I’ve tried under
both Linux and macOS) seem to work fine I believe I am fine here too. And to
confirm this I wrote the following code with the output below:</p>
@@ -332,11 +331,11 @@ confirm this I wrote the following code with the output below:</p>
int main()
{
initscr();
start_color();
printw(&quot;COLORS: %d\nCOLOR_PAIRS: %d\n&quot;, COLORS, COLOR_PAIRS);
getch();
endwin();
initscr();
start_color();
printw(&quot;COLORS: %d\nCOLOR_PAIRS: %d\n&quot;, COLORS, COLOR_PAIRS);
getch();
endwin();
}
TERM=linux-m ./colour_pairs
@@ -351,17 +350,17 @@ even it would only be a runtime error if the colours are supported and the
number is out of the range? To try and figure this out I did another test:</p>
<pre><code> int main()
{
initscr();
start_color();
initscr();
start_color();
init_pair(COLOR_PAIRS+1, COLOR_WHITE, COLOR_GREEN);
bkgd(COLOR_PAIR(COLOR_PAIRS+1));
init_pair(1, COLOR_WHITE, COLOR_BLACK);
attron(COLOR_PAIR(1));
printw(&quot;COLORS: %d\nCOLOR_PAIRS: %d\n&quot;, COLORS, COLOR_PAIRS);
init_pair(COLOR_PAIRS+1, COLOR_WHITE, COLOR_GREEN);
bkgd(COLOR_PAIR(COLOR_PAIRS+1));
init_pair(1, COLOR_WHITE, COLOR_BLACK);
attron(COLOR_PAIR(1));
printw(&quot;COLORS: %d\nCOLOR_PAIRS: %d\n&quot;, COLORS, COLOR_PAIRS);
getch();
endwin();
getch();
endwin();
}</code></pre>
<p>Running it like</p>
<pre><code> TERM=linux-m ./colour_pairs</code></pre>
@@ -388,11 +387,11 @@ but I do not know for certain.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -429,7 +428,7 @@ but I do not know for certain.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+23 -23
View File
@@ -155,9 +155,9 @@ needed. This won’t work right if you change the score line!</p>
small screen will make it harder to play esp without the cheat modes enabled
(but they can still be fun with large screens).</p></li>
<li><p>RESOLUTION #1: Open the <a href="prog.c">prog.c</a> and change the line</p>
<pre><code> #define J Z(X:%d/%d Y:%d/%d S:%zu/%zu B:%zu\n),Y,y[-2],X, *y, A, g, c );</code></pre>
<pre><code> #define J Z(X:%d/%d Y:%d/%d S:%zu/%zu B:%zu\n),Y,y[-2],X, *y, A, g, c );</code></pre>
<p>To be something like:</p>
<pre><code> #define J Z(B:%zu\n), c);</code></pre>
<pre><code> #define J Z(B:%zu\n), c);</code></pre>
<p>Recompile and try again. That will then show only the number of bugs eaten.
See the <a href="HACKING.html">HACKING.html</a> (<a href="HACKING.md">HACKING.md</a> on GitHub) file for other data you
can include (though there are some discrepancies here and there as you’ll
@@ -248,16 +248,16 @@ theoretically happen. If this happens you will have to kill the game by e.g.
ctrl-c. Try increasing the screen size and/or decreasing the max size of the
snake. See below for some tests.</p>
<p>I removed caps in a test and then:</p>
<pre><code> GROW=1 COLUMNS=30 LINES=10 CANNIBAL=1 MAXSIZE=10000 ./prog</code></pre>
<pre><code> GROW=1 COLUMNS=30 LINES=10 CANNIBAL=1 MAXSIZE=10000 ./prog</code></pre>
<p>It froze at this point:</p>
<pre><code> X:14/29 Y:5/9 S:323/10000 B:318</code></pre>
<pre><code> X:14/29 Y:5/9 S:323/10000 B:318</code></pre>
<p>This is because there was only one place for the bug - where the snake head
was to be. With these parameters the limit is actually 189! This could
perhaps be increased but the calculation I have used is easy and although I
certainly could make it so it’s one less than the max that takes more bytes
and I don’t see it actually mattering.</p>
<p>Another time I tried:</p>
<pre><code> LINES=6 COLUMNS=6</code></pre>
<pre><code> LINES=6 COLUMNS=6</code></pre>
<p>And it also froze (as noted I impose a minimum of &gt;= 10 for both LINES and
COLUMNS).</p>
<p>Ultimately I had to kill the program due to the game being stuck in the bug
@@ -266,29 +266,29 @@ good would that do? It would use more bytes and what would it do anyway,
win? Well that’s what the max size is for.</p></li>
<li><p>TERMINAL SIZE TO MAX SNAKE SIZE CALCULATION ETC.</p>
<p>For this information and more use the termcaps utility:</p>
<pre><code> make test</code></pre>
<pre><code> make test</code></pre>
<p>An example:</p>
<pre><code> terminal supports cursor movement
terminal supports making cursor invisible
terminal supports bold
terminal supports colours
<pre><code> terminal supports cursor movement
terminal supports making cursor invisible
terminal supports bold
terminal supports colours
terminal rows 41 (38 playable)
terminal cols 154 (152 playable)
terminal rows 41 (38 playable)
terminal cols 154 (152 playable)
snake size: 997 (max size: 5738)
bugs: 199 (max size: 1147)
snake size: 997 (max size: 5738)
bugs: 199 (max size: 1147)
at least 34 columns (currently 154) recommended for snake size 997
at least 37 columns (currently 154) recommended for capped snake size 5738
at least 34 columns (currently 154) recommended for snake size 997
at least 37 columns (currently 154) recommended for capped snake size 5738
No problems detected.</code></pre>
No problems detected.</code></pre>
<p>Why are there only 38 playable lines for 41 rows? The first row is the score
line, the second is the top wall, the last is the bottom wall. For columns
you have the left and rightmost columns for the walls.</p>
<p>The calculation for max size takes place after decrementing the max y/x;
then it’s <code>(maxy - 2) * (maxx - 2)</code>; above that would be:</p>
<pre><code> (41 - 2) * (156 - 2) == 6006</code></pre>
<pre><code> (41 - 2) * (156 - 2) == 6006</code></pre>
<p>If for some reason the game were to stall for this purpose you would have to
kill the game by e.g. ctrl-c since the bug placement is stuck in a loop.
This shouldn’t happen though.</p></li>
@@ -313,7 +313,7 @@ Or is the system rather busy?</p></li>
is 0? The head is the obvious choice so once you do get to size 1 you will still
only have the head. When you get to size 2 you’ll have part of the body too.
Try:</p>
<pre><code> SIZE=1 GROW=1</code></pre>
<pre><code> SIZE=1 GROW=1</code></pre>
<p>And you will see that at one bug you’ll have size two and just as if you had
two bugs with the previous invocation.</p>
<p>BTW: When you are size 1 you can go back on yourself even if cannibalism is
@@ -336,7 +336,7 @@ terminal is under <code>/usr/share/terminfo/l/linux-m</code> and under macOS (Ca
at least) it’s at <code>/usr/share/terminfo/6c/linux-m</code> (for macOS Ventura it’s
<code>/usr/share/terminfo/6c/linux-m</code>).</p></li>
<li><p>BOTTOM LINE: Try using a monochrome terminal for the game by e.g.:</p>
<pre><code> TERM=linux-m ./prog</code></pre>
<pre><code> TERM=linux-m ./prog</code></pre>
<p>And then on your white background terminal the game should keep the
background white and the foreground black. This will of course mean you have
no colour but unfortunately changing the background colour of curses would
@@ -440,11 +440,11 @@ is 0 and I limit the size to be no bigger than the max size.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -481,7 +481,7 @@ is 0 and I limit the size to be no bigger than the max size.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+4 -4
View File
@@ -517,7 +517,7 @@ which was exactly 75 years from the day that the person responsible for the
<a href="https://en.wikipedia.org/wiki/World_War_II">Second World War</a>, Adolf Hitler,
ended his life. (I later made a bug fix but I consider this inconsequential).</p>
<p>As for <a href="recode.c">recode.c</a> though I really love this:</p>
<div class="sourceCode" id="cb22"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a> <span class="op">/</span>\</span>
<div class="sourceCode" id="cb22"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a> <span class="op">/</span>\</span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a> <span class="op">/</span> This is <span class="op">*</span>not<span class="op">*</span> what you think<span class="op">:</span></span></code></pre></div>
<p>…because it seems so wrong in C code at first glance. Also what does the
‘this’ refer to?</p>
@@ -799,11 +799,11 @@ email but I’m more likely to respond to mastodon messages.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -881,7 +881,7 @@ email but I’m more likely to respond to mastodon messages.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+28 -28
View File
@@ -145,7 +145,7 @@ ints:</p>
g = e + 1;
for (j=-3; j &lt; 0; ++j)
e&lt;:j:&gt; = j+3;</code></pre>
e&lt;:j:&gt; = j+3;</code></pre>
<p>Which I think is more confusing: when one is iterating an array you don’t
expect to start out with index &lt; 0 but to then compare that that index &lt; 0
and increment until 0 along with setting the value of the array to j + 3 is
@@ -156,21 +156,21 @@ e&lt;:i-3:&gt; = (j &lt; 1 ? 1 : (j &gt; 5 ? 5 : j))-1;</code></pre></li>
<li><p>Observe these two functions:</p>
<pre><code>void w(char *s, int k, int v)
{
for(e&lt;:2:&gt; = 0; s&lt;:*P:&gt;; ++e&lt;:2:&gt;)
{
v = s&lt;:e&lt;:2:&gt;:&gt;;
if(v &gt; 64 &amp;&amp; v &lt; 91)
s&lt;:e&lt;:2:&gt;:&gt; = (((v - 65 + k) % 26) + 65);
}
for(e&lt;:2:&gt; = 0; s&lt;:*P:&gt;; ++e&lt;:2:&gt;)
{
v = s&lt;:e&lt;:2:&gt;:&gt;;
if(v &gt; 64 &amp;&amp; v &lt; 91)
s&lt;:e&lt;:2:&gt;:&gt; = (((v - 65 + k) % 26) + 65);
}
}
void Q(void)
{
for(*g = 0; *g &lt; 3; ++*g)
{
*Y&lt;:16+e&lt;:1:&gt;:&gt;=S&lt;:e&lt;:e&lt;:1:&gt;-3:&gt;:&gt;;
R&lt;:e&lt;:1:&gt;:&gt;=Y&lt;:e&lt;:-3+e&lt;:1:&gt;:&gt;:&gt;;
w(R[*g],*(e+e&lt;:1:&gt;-6)=q(Y&lt;:8:&gt;,*Y&lt;:7:&gt;),*g);
}
for(*g = 0; *g &lt; 3; ++*g)
{
*Y&lt;:16+e&lt;:1:&gt;:&gt;=S&lt;:e&lt;:e&lt;:1:&gt;-3:&gt;:&gt;;
R&lt;:e&lt;:1:&gt;:&gt;=Y&lt;:e&lt;:-3+e&lt;:1:&gt;:&gt;:&gt;;
w(R[*g],*(e+e&lt;:1:&gt;-6)=q(Y&lt;:8:&gt;,*Y&lt;:7:&gt;),*g);
}
}</code></pre>
<p>First of all: why do I set <code>e[2]</code> to 0 and increment it for each pass in the
loop, but then the condition for the loop is <code>s[*P]</code>?</p>
@@ -197,11 +197,11 @@ and (2) I didn’t want to risk changing all the offsets: thus I just made that
address <code>e[1]</code>. Thus I also have:</p>
<pre><code>for (*g = 0 ; *g &lt; 10; ++*g)
{
r&lt;:-2:&gt; = Y&lt;:14:&gt;&lt;:*(e+1):&gt;; r&lt;:-3:&gt; = Y&lt;:15:&gt;&lt;:1&lt;:e:&gt;:&gt;;
if (r&lt;:-3:&gt; &amp;&amp; r&lt;:-2:&gt; == r&lt;:-1:&gt;)
return r&lt;:-3:&gt;;
if (r&lt;:-2:&gt; &amp;&amp; r&lt;:-3:&gt; == r&lt;:-1:&gt;)
return r&lt;:-2:&gt;;
r&lt;:-2:&gt; = Y&lt;:14:&gt;&lt;:*(e+1):&gt;; r&lt;:-3:&gt; = Y&lt;:15:&gt;&lt;:1&lt;:e:&gt;:&gt;;
if (r&lt;:-3:&gt; &amp;&amp; r&lt;:-2:&gt; == r&lt;:-1:&gt;)
return r&lt;:-3:&gt;;
if (r&lt;:-2:&gt; &amp;&amp; r&lt;:-3:&gt; == r&lt;:-1:&gt;)
return r&lt;:-2:&gt;;
}</code></pre>
<p>This <code>e[1]</code> of course is the same as <code>*g</code> as above and as you can see has
multiple dimensions (that is the reference to Y does) too (and this is also
@@ -211,7 +211,7 @@ both Y[14] and Y[15]. I also happen to use S (via r which points to S + 10)
which I use as the two chars to compare (this is the plugboard function).</p></li>
<li><p>The above function Z() takes a <code>char x</code> but you won’t notice it being used
at all. Why? In fact I call it like so:</p>
<pre><code>k = Z(r&lt;:-1:&gt;=k);</code></pre>
<pre><code> k = Z(r&lt;:-1:&gt;=k);</code></pre>
<p>The char is just used as a way to be able to call the function and assign to
the proper variable at the same time: in the function Z I don’t care about x
because it’s the same value as r[-1] (which I do care about). Why is it
@@ -221,7 +221,7 @@ again negative offsets to cause more confusion.</p></li>
<li><p>Although this is clearly already shown in the above there are other ways I
refer to the same variable in more than one way (or in some cases maybe more
correct to say ‘same location’). In the Z() function for example:</p>
<pre><code>r&lt;:-2:&gt; = Y&lt;:14:&gt;&lt;:*(e+1):&gt;; r&lt;:-3:&gt; = Y&lt;:15:&gt;&lt;:1&lt;:e:&gt;:&gt;;</code></pre>
<pre><code> r&lt;:-2:&gt; = Y&lt;:14:&gt;&lt;:*(e+1):&gt;; r&lt;:-3:&gt; = Y&lt;:15:&gt;&lt;:1&lt;:e:&gt;:&gt;;</code></pre>
<p>I refer to e[1] as both: *(e+1) and 1[e].</p></li>
<li><p>Replacing a number of <code>if ..</code>s with <code>... &amp;&amp; (...)</code>s (in one case at least
it’s nested further: <code>f &amp;&amp; (f = 0 &amp;&amp; (a = W(A,a)));</code>).</p></li>
@@ -262,14 +262,14 @@ it to 9.</p></li>
enough because as they rightly point out they can just use the C preprocessor
itself. But although I have quite a few cpp directives I am not using them for
obfuscation but rather to save bytes. For examples:</p>
<pre><code>%:define J(x) do(*x)=getchar(); while((*x)==&#39;\n&#39;)</code></pre>
<pre><code>%:define J(x) do(*x)=getchar(); while((*x)==&#39;\n&#39;)</code></pre>
<p>Is used quite a number of times and although it could be a function that
takes a pointer to an int it was more convenient this way (I believe it used
more bytes but I no longer know that). There are many others and they all
save bytes (or at least most of them do if not all). There is one in
particular I want to bring up though because I think it’s a curious one and
it ties in to another point above:</p>
<pre><code>%:define A(y) *(&amp;Y&lt;:7:&gt;&lt;:1:&gt;+(y))</code></pre>
<pre><code>%:define A(y) *(&amp;Y&lt;:7:&gt;&lt;:1:&gt;+(y))</code></pre>
<p>What is special about this one: Above I noted how I sort of refer directly
to the notch settings (I think it was the notch settings anyway). Now I
could have done say</p>
@@ -301,9 +301,9 @@ recode.c doesn’t use the Enigma algorithm and even the strings are done very
differently (and separated) so that one cannot easily replace the <code>char</code>
variables in recode.c, move them to prog.c, compile and expect it to work right.</p></li>
<li><p>Also what is this about ?</p>
<pre><code> /\
/ This is *not* what you think:
void D(char*x){ /* ... */ }</code></pre>
<pre><code> /\
/ This is *not* what you think:
void D(char*x){ /* ... */ }</code></pre>
<p>Is that valid and if so how does it function? Yes it’s valid but I’ll leave
the other part of the question up to the reader to answer. Hint: you already
know how it works (yes, really you do)! Another hint: This is and is not a
@@ -316,11 +316,11 @@ also not).</p></li>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -357,7 +357,7 @@ also not).</p></li>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+5 -5
View File
@@ -172,8 +172,8 @@ wonderful ‘challenge’ for everyone.</p>
<h1 id="options"><a name="options" href="#toc">Options</a></h1>
<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="ex">./recode</span> <span class="at">-h</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="ex">usage:</span> ./recode <span class="pp">[</span><span class="ss">options</span><span class="pp">]</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="ex">-v</span> display selected settings</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="ex">-r</span> pseudo-randomly select settings</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="ex">-v</span> display selected settings</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="ex">-r</span> pseudo-randomly select settings</span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="ex">-f</span><span class="op">&lt;</span>input file<span class="op">&gt;</span> read file for Enigma input</span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="ex">-R</span><span class="op">&lt;</span>string<span class="kw">|</span><span class="fu">file</span><span class="op">&gt;</span> init settings from settings string or file</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="ex">-o</span><span class="op">&lt;</span>output file<span class="op">&gt;</span> write settings to file</span></code></pre></div>
@@ -593,11 +593,11 @@ the key you wish to select is</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -634,7 +634,7 @@ the key you wish to select is</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -266,11 +266,11 @@ single pure sine wave.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -335,7 +335,7 @@ single pure sine wave.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -180,11 +180,11 @@ See also <a href="../faq.html">the IOCCC FAQ</a> for additional information on t
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -249,7 +249,7 @@ See also <a href="../faq.html">the IOCCC FAQ</a> for additional information on t
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -220,11 +220,11 @@ the binary code is larger due to fewer registers and lack of 64-bit multiply.</l
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -291,7 +291,7 @@ the binary code is larger due to fewer registers and lack of 64-bit multiply.</l
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -216,11 +216,11 @@ For instance after running the command suggested by the judges:</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -287,7 +287,7 @@ For instance after running the command suggested by the judges:</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -180,11 +180,11 @@ as these letters are encoded in the higher part of the single-byte character set
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -250,7 +250,7 @@ as these letters are encoded in the higher part of the single-byte character set
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -243,11 +243,11 @@ ster lieutenant comes. Master lieutenant, pray you,-- CORIOLANUS: What&#39;s tha
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -313,7 +313,7 @@ ster lieutenant comes. Master lieutenant, pray you,-- CORIOLANUS: What&#39;s tha
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -249,11 +249,11 @@ very thoroughly).</li>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -318,7 +318,7 @@ very thoroughly).</li>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -237,11 +237,11 @@ it.</li>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -304,7 +304,7 @@ it.</li>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>
+3 -3
View File
@@ -238,11 +238,11 @@ then compile it with a c++ compiler of your choice.</p>
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
https://creativecommons.org/licenses/by-sa/4.0/
-->
@@ -307,7 +307,7 @@ then compile it with a c++ compiler of your choice.</p>
<div class="footer">
<h2>Copyright and CC BY-SA 4.0 License</h2>
<p>This file and web page is:</p>
<blockquote><p><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></p></blockquote>
<blockquote><b>Copyright &copy; 1984-2024 by Landon Curt Noll. All Rights Reserved.</b></blockquote>
<p>You are free to share and adapt this file under the terms of this license:</p>
<blockquote><b>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</b></blockquote>
<p>For more information, see:</p>