fix problematic HTML caused by certain trailing backslashes
In cases that are **outside of a markdown code block**, a markdown line with ending in a tailing "\" can generate problematic HTML. We certain trailing backslashes outside of a markdown code block with "<br>" HTML elements, or in some cases eliminated the need for a trailing backslash. In a few cases some unnecessary trailing backslashes inside of a markdown code block were removed. The following markdown files were changed in this commit: ``` 1990/dds/README.md 1990/jaw/README.md 1991/ant/README.md 1991/rince/README.md 1991/westley/README.md 1992/vern/README.md 1992/westley/README.md 1998/schweikh1/README.md 2004/anonymous/README.md 2005/sykes/README.md 2006/toledo2/README.md 2011/toledo/README.md 2012/endoh2/README.md 2012/tromp/README.md 2013/robison/README.md 2015/hou/README.md 2015/howe/README.md 2015/schweikhardt/README.md 2018/burton1/README.md 2018/burton2/README.md 2018/ferguson/README.md 2018/vokes/README.md 2020/ferguson1/README.md ``` Performed `make www` to test these changes.
This commit is contained in:
1 parent
1785da1728
commit
4c3649a3c1
47 files changed
+481
-502
No files matched your search
@@ -219,13 +219,15 @@ It pre-dates `varargs.h`, and assembly was the only way to gain access to the
|
||||
variable argument types. The first edition _The C Programming Language_, 1978,
|
||||
page 71, remarks:
|
||||
|
||||
> By the way, there is no entirely satisfactory way to write a portable function
|
||||
> that accepts a variable number of arguments, because there is no portable way
|
||||
> for the called function to determine how many arguments where actually passed
|
||||
> to it in a given call.
|
||||
> ...\
|
||||
> `printf`, the most common C function with a variable number of arguments,
|
||||
> ... is also non-portable and must be modified for different environments.
|
||||
```
|
||||
By the way, there is no entirely satisfactory way to write a portable function
|
||||
that accepts a variable number of arguments, because there is no portable way
|
||||
for the called function to determine how many arguments where actually passed
|
||||
to it in a given call.
|
||||
...
|
||||
`printf`, the most common C function with a variable number of arguments,
|
||||
... is also non-portable and must be modified for different environments.
|
||||
```
|
||||
|
||||
It is fascinating to explore the roots of C through the history of the operating
|
||||
system it was birthed within. C is often criticized as a difficult, inscrutable
|
||||
|
||||
@@ -298,15 +298,13 @@ shortest code that compiles and runs correctly in Ancient UNIX.</p>
|
||||
It pre-dates <code>varargs.h</code>, and assembly was the only way to gain access to the
|
||||
variable argument types. The first edition <em>The C Programming Language</em>, 1978,
|
||||
page 71, remarks:</p>
|
||||
<blockquote>
|
||||
<p>By the way, there is no entirely satisfactory way to write a portable function
|
||||
that accepts a variable number of arguments, because there is no portable way
|
||||
for the called function to determine how many arguments where actually passed
|
||||
to it in a given call.
|
||||
…<br />
|
||||
<code>printf</code>, the most common C function with a variable number of arguments,
|
||||
… is also non-portable and must be modified for different environments.</p>
|
||||
</blockquote>
|
||||
<pre><code> By the way, there is no entirely satisfactory way to write a portable function
|
||||
that accepts a variable number of arguments, because there is no portable way
|
||||
for the called function to determine how many arguments where actually passed
|
||||
to it in a given call.
|
||||
...
|
||||
`printf`, the most common C function with a variable number of arguments,
|
||||
... is also non-portable and must be modified for different environments.</code></pre>
|
||||
<p>It is fascinating to explore the roots of C through the history of the operating
|
||||
system it was birthed within. C is often criticized as a difficult, inscrutable
|
||||
language, but as this contest demonstrates, this is in parody. <em>Shell-gol</em> is
|
||||
|
||||
+35
-35
@@ -36,45 +36,45 @@ What is this program weighing and how much does it weigh?
|
||||
|
||||
### tac - tokenize and count C and derivative languages:
|
||||
|
||||
`tac` computes C program size\
|
||||
(obfuscated / otherwise)\
|
||||
by splitting code as tokens small,\
|
||||
ignoring space, then counting all.\
|
||||
`tac` computes C program size<br>
|
||||
(obfuscated / otherwise)<br>
|
||||
by splitting code as tokens small,<br>
|
||||
ignoring space, then counting all.<br>
|
||||
|
||||
It tries quite hard to act the same\
|
||||
as counting tool of I-OCCC fame.\
|
||||
Some bugs were fixed, it's faster too,\
|
||||
and does more things, just add some glue!\
|
||||
It tries quite hard to act the same<br>
|
||||
as counting tool of I-OCCC fame.<br>
|
||||
Some bugs were fixed, it's faster too,<br>
|
||||
and does more things, just add some glue!<br>
|
||||
|
||||
It does far more than print the size:\
|
||||
the token part's a better prize!\
|
||||
With each upon on a single line,\
|
||||
how many things can you design?\
|
||||
It does far more than print the size:<br>
|
||||
the token part's a better prize!<br>
|
||||
With each upon on a single line,<br>
|
||||
how many things can you design?<br>
|
||||
|
||||
Included is a keyword sorter,\
|
||||
de-obfuscator, freq reporter.\
|
||||
With code produced as little parts,\
|
||||
just add your own creative arts.\
|
||||
Included is a keyword sorter,<br>
|
||||
de-obfuscator, freq reporter.<br>
|
||||
With code produced as little parts,<br>
|
||||
just add your own creative arts.<br>
|
||||
|
||||
But first you have to figure out\
|
||||
the braces part, without a doubt!\
|
||||
And then the code - it isn't easy:\
|
||||
for as else? That's rather cheesy!\
|
||||
But first you have to figure out<br>
|
||||
the braces part, without a doubt!<br>
|
||||
And then the code - it isn't easy:<br>
|
||||
for as else? That's rather cheesy!<br>
|
||||
|
||||
The rest of it is standard fare:\
|
||||
expressions strange, the globals bare,\
|
||||
confusing symbols one and oh,\
|
||||
and precedence you have to know.\
|
||||
The rest of it is standard fare:<br>
|
||||
expressions strange, the globals bare,<br>
|
||||
confusing symbols one and oh,<br>
|
||||
and precedence you have to know.<br>
|
||||
|
||||
The keyword list was made external,\
|
||||
because of standards change eternal.\
|
||||
Thus other languages can now,\
|
||||
be counted just like C, somehow!\
|
||||
The keyword list was made external,<br>
|
||||
because of standards change eternal.<br>
|
||||
Thus other languages can now,<br>
|
||||
be counted just like C, somehow!<br>
|
||||
|
||||
I hope you find this code obscure\
|
||||
enough to win, and thus procure\
|
||||
a public place for all to see\
|
||||
how badly I can butcher C!\
|
||||
I hope you find this code obscure<br>
|
||||
enough to win, and thus procure<br>
|
||||
a public place for all to see<br>
|
||||
how badly I can butcher C!<br>
|
||||
|
||||
|
||||
### Said another way....
|
||||
@@ -270,9 +270,9 @@ language_. It really is this easy with `tac`:
|
||||
|
||||
* I assume you noticed the [braces][2]?
|
||||
|
||||
_Every brace is sacred,\
|
||||
Every brace is great.\
|
||||
If a brace is wasted,\
|
||||
_Every brace is sacred,<br>
|
||||
Every brace is great.<br>
|
||||
If a brace is wasted,<br>
|
||||
Clang gets quite irate_.
|
||||
|
||||
* Keywords follow the 2010s top five, without the `if`, for interesting flow control.
|
||||
|
||||
+35
-43
@@ -164,46 +164,38 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
What is this program weighing and how much does it weigh?</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="tac---tokenize-and-count-c-and-derivative-languages">tac - tokenize and count C and derivative languages:</h3>
|
||||
<p><code>tac</code> computes C program size<br />
|
||||
(obfuscated / otherwise)<br />
|
||||
by splitting code as tokens small,<br />
|
||||
ignoring space, then counting all.<br />
|
||||
</p>
|
||||
<p>It tries quite hard to act the same<br />
|
||||
as counting tool of I-OCCC fame.<br />
|
||||
Some bugs were fixed, it’s faster too,<br />
|
||||
and does more things, just add some glue!<br />
|
||||
</p>
|
||||
<p>It does far more than print the size:<br />
|
||||
the token part’s a better prize!<br />
|
||||
With each upon on a single line,<br />
|
||||
how many things can you design?<br />
|
||||
</p>
|
||||
<p>Included is a keyword sorter,<br />
|
||||
de-obfuscator, freq reporter.<br />
|
||||
With code produced as little parts,<br />
|
||||
just add your own creative arts.<br />
|
||||
</p>
|
||||
<p>But first you have to figure out<br />
|
||||
the braces part, without a doubt!<br />
|
||||
And then the code - it isn’t easy:<br />
|
||||
for as else? That’s rather cheesy!<br />
|
||||
</p>
|
||||
<p>The rest of it is standard fare:<br />
|
||||
expressions strange, the globals bare,<br />
|
||||
confusing symbols one and oh,<br />
|
||||
and precedence you have to know.<br />
|
||||
</p>
|
||||
<p>The keyword list was made external,<br />
|
||||
because of standards change eternal.<br />
|
||||
Thus other languages can now,<br />
|
||||
be counted just like C, somehow!<br />
|
||||
</p>
|
||||
<p>I hope you find this code obscure<br />
|
||||
enough to win, and thus procure<br />
|
||||
a public place for all to see<br />
|
||||
how badly I can butcher C!<br />
|
||||
</p>
|
||||
<p><code>tac</code> computes C program size<br>
|
||||
(obfuscated / otherwise)<br>
|
||||
by splitting code as tokens small,<br>
|
||||
ignoring space, then counting all.<br></p>
|
||||
<p>It tries quite hard to act the same<br>
|
||||
as counting tool of I-OCCC fame.<br>
|
||||
Some bugs were fixed, it’s faster too,<br>
|
||||
and does more things, just add some glue!<br></p>
|
||||
<p>It does far more than print the size:<br>
|
||||
the token part’s a better prize!<br>
|
||||
With each upon on a single line,<br>
|
||||
how many things can you design?<br></p>
|
||||
<p>Included is a keyword sorter,<br>
|
||||
de-obfuscator, freq reporter.<br>
|
||||
With code produced as little parts,<br>
|
||||
just add your own creative arts.<br></p>
|
||||
<p>But first you have to figure out<br>
|
||||
the braces part, without a doubt!<br>
|
||||
And then the code - it isn’t easy:<br>
|
||||
for as else? That’s rather cheesy!<br></p>
|
||||
<p>The rest of it is standard fare:<br>
|
||||
expressions strange, the globals bare,<br>
|
||||
confusing symbols one and oh,<br>
|
||||
and precedence you have to know.<br></p>
|
||||
<p>The keyword list was made external,<br>
|
||||
because of standards change eternal.<br>
|
||||
Thus other languages can now,<br>
|
||||
be counted just like C, somehow!<br></p>
|
||||
<p>I hope you find this code obscure<br>
|
||||
enough to win, and thus procure<br>
|
||||
a public place for all to see<br>
|
||||
how badly I can butcher C!<br></p>
|
||||
<h3 id="said-another-way.">Said another way….</h3>
|
||||
<p><code>tac</code> is the inverse of <code>cat</code>(1): it un-concatenates its input into C tokens,
|
||||
writing the token stream to <code>stdout</code>. There are options to suppress the token
|
||||
@@ -353,9 +345,9 @@ language</em>. It really is this easy with <code>tac</code>:</p>
|
||||
<h3 id="on-the-question-of-obfuscation">On the question of obfuscation:</h3>
|
||||
<ul>
|
||||
<li><p>I assume you noticed the <a href="https://www.youtube.com/watch?v=fUspLVStPbk&start=53" title="Meaning of Life">braces</a>?</p>
|
||||
<p><em>Every brace is sacred,<br />
|
||||
Every brace is great.<br />
|
||||
If a brace is wasted,<br />
|
||||
<p><em>Every brace is sacred,<br>
|
||||
Every brace is great.<br>
|
||||
If a brace is wasted,<br>
|
||||
Clang gets quite irate</em>.</p></li>
|
||||
<li><p>Keywords follow the 2010s top five, without the <code>if</code>, for interesting flow control.</p></li>
|
||||
<li><p>Sometimes a <code>for</code> can be an <code>else</code> - <a href="https://www.youtube.com/watch?v=OHVjs4aobqs" title="Inconceivable">inconceivable</a>!</p></li>
|
||||
|
||||
@@ -223,7 +223,7 @@ monkey; I thought the monkey had it too easy: unlike his limited keyboard I have
|
||||
`isprint()` returns non-zero except that only capital letters are included;
|
||||
the file [prog.alt.c](prog.alt.c) has a slightly smaller keyboard. There are some
|
||||
additional features I have added (including two Easter eggs); amongst others:
|
||||
ability to change the target string and maximum length. See\
|
||||
ability to change the target string and maximum length. See
|
||||
**[How it works](#how)**, **[Hints](#hints)** and **[How to build](#build)** for
|
||||
more details.
|
||||
|
||||
@@ -465,8 +465,8 @@ If you do one of:
|
||||
```
|
||||
|
||||
It will search for `MONKEY` in both cases; in other words it's the last one.
|
||||
If the string is too long given the value of `S` (see\
|
||||
**[How to build](#build)**) it will be truncated.
|
||||
If the string is too long given the value of `S` (see **[How to build](#build)**)
|
||||
it will be truncated.
|
||||
|
||||
If you actually do want to search for a string starting with a `-` you must
|
||||
disable further parsing of options by using the `-` option itself; for
|
||||
@@ -492,7 +492,7 @@ examples of the last set of three above are equivalent i.e. the following two
|
||||
are equivalent:
|
||||
|
||||
```
|
||||
-q-\
|
||||
-q-
|
||||
-q --
|
||||
```
|
||||
|
||||
@@ -735,7 +735,7 @@ people. Take the following invocations:
|
||||
(1) $ echo test > test
|
||||
(2) $ ./weasel test
|
||||
(3) $ ./weasel < test
|
||||
(4) $ cat test | ./weasel\
|
||||
(4) $ cat test | ./weasel
|
||||
(5) $ < test-strings.txt ./weasel
|
||||
(6) $ cat | ./weasel
|
||||
```
|
||||
@@ -819,7 +819,7 @@ Skip to [Obfuscation](#obfuscation).
|
||||
|
||||
There is a type of input error, as I said, that might appear to be a bug. What
|
||||
actually is going on though is due to a technicality on how spaces are printed
|
||||
and the fact the program does not accept spaces other than a literal space\
|
||||
and the fact the program does not accept spaces other than a literal space
|
||||
` `; when a character in the string to be found isn't in the keyboard the
|
||||
program prints an error message and then exits (returning 1). But since the
|
||||
keyboard doesn't have `'\n'` if you were to type a `'` and send a
|
||||
|
||||
@@ -305,7 +305,7 @@ monkey; I thought the monkey had it too easy: unlike his limited keyboard I have
|
||||
<code>isprint()</code> returns non-zero except that only capital letters are included;
|
||||
the file <a href="prog.alt.c">prog.alt.c</a> has a slightly smaller keyboard. There are some
|
||||
additional features I have added (including two Easter eggs); amongst others:
|
||||
ability to change the target string and maximum length. See<br />
|
||||
ability to change the target string and maximum length. See
|
||||
<strong><a href="#how">How it works</a></strong>, <strong><a href="#hints">Hints</a></strong> and <strong><a href="#build">How to build</a></strong> for
|
||||
more details.</p>
|
||||
<p>In its simplest invocation this program will work its way (using a genetic
|
||||
@@ -481,8 +481,8 @@ specially by your shell e.g. parentheses. For instance if you just want to find
|
||||
<pre><code> ./weasel "METHINKS IT IS A" "MONKEY"
|
||||
./weasel METHINKS IT IS A MONKEY</code></pre>
|
||||
<p>It will search for <code>MONKEY</code> in both cases; in other words it’s the last one.
|
||||
If the string is too long given the value of <code>S</code> (see<br />
|
||||
<strong><a href="#build">How to build</a></strong>) it will be truncated.</p>
|
||||
If the string is too long given the value of <code>S</code> (see <strong><a href="#build">How to build</a></strong>)
|
||||
it will be truncated.</p>
|
||||
<p>If you actually do want to search for a string starting with a <code>-</code> you must
|
||||
disable further parsing of options by using the <code>-</code> option itself; for
|
||||
example if you were to do any of:</p>
|
||||
@@ -497,7 +497,7 @@ longer parse additional options: only target strings if anything left on the
|
||||
command line. Because of the joining of arguments this means that the first two
|
||||
examples of the last set of three above are equivalent i.e. the following two
|
||||
are equivalent:</p>
|
||||
<pre><code> -q-\
|
||||
<pre><code> -q-
|
||||
-q --</code></pre>
|
||||
<p>As for the caveat I referenced what does the following do?</p>
|
||||
<pre><code> ./weasel -qr 5</code></pre>
|
||||
@@ -660,7 +660,7 @@ people. Take the following invocations:</p>
|
||||
<pre><code> (1) $ echo test > test
|
||||
(2) $ ./weasel test
|
||||
(3) $ ./weasel < test
|
||||
(4) $ cat test | ./weasel\
|
||||
(4) $ cat test | ./weasel
|
||||
(5) $ < test-strings.txt ./weasel
|
||||
(6) $ cat | ./weasel</code></pre>
|
||||
<p>Only the first invocation of <code>./weasel</code> will search for <code>TEST</code> because
|
||||
@@ -718,7 +718,7 @@ example shows (but the strings will still only be read from the
|
||||
<p>Skip to <a href="#obfuscation">Obfuscation</a>.</p>
|
||||
<p>There is a type of input error, as I said, that might appear to be a bug. What
|
||||
actually is going on though is due to a technicality on how spaces are printed
|
||||
and the fact the program does not accept spaces other than a literal space<br />
|
||||
and the fact the program does not accept spaces other than a literal space
|
||||
<code></code>; when a character in the string to be found isn’t in the keyboard the
|
||||
program prints an error message and then exits (returning 1). But since the
|
||||
keyboard doesn’t have <code>'\n'</code> if you were to type a <code>'</code> and send a
|
||||
|
||||
@@ -104,8 +104,7 @@ Limitations](#issues-and-limitations).
|
||||
To build:
|
||||
|
||||
```
|
||||
${CC} -o prog prog.c -std=c11 -O3 \
|
||||
-Wall -Wextra -pedantic -Wno-missing-prototypes
|
||||
${CC} -o prog prog.c -std=c11 -O3 -Wall -Wextra -pedantic -Wno-missing-prototypes
|
||||
```
|
||||
|
||||
`-Wno-missing-prototypes` is necessary because there aren't any
|
||||
|
||||
@@ -209,8 +209,7 @@ implementation of counting sort, which sorts each group.</p>
|
||||
Limitations</a>.</p>
|
||||
<h3 id="building">Building:</h3>
|
||||
<p>To build:</p>
|
||||
<pre><code> ${CC} -o prog prog.c -std=c11 -O3 \
|
||||
-Wall -Wextra -pedantic -Wno-missing-prototypes</code></pre>
|
||||
<pre><code> ${CC} -o prog prog.c -std=c11 -O3 -Wall -Wextra -pedantic -Wno-missing-prototypes</code></pre>
|
||||
<p><code>-Wno-missing-prototypes</code> is necessary because there aren’t any
|
||||
prototypes. (They would put the program well over the size limit.)</p>
|
||||
<p>Note: The program can also be built with <code>-std=c99</code> or <code>-std=c89</code>.</p>
|
||||
|
||||
Reference in new issue
Block a user