Merge pull request #2699 from xexyl/html2020
This commit is contained in:
12 files changed
+128
-122
No files matched your search
@@ -10,8 +10,9 @@ code](#alternate-code) below.
|
|||||||
|
|
||||||
## To use:
|
## To use:
|
||||||
|
|
||||||
|
**IMPORTANT for macOS**: run under Terminal.app.
|
||||||
|
|
||||||
``` <!---sh-->
|
``` <!---sh-->
|
||||||
# IMPORTANT for macOS: run under Terminal.app
|
|
||||||
|
|
||||||
./prog
|
./prog
|
||||||
```
|
```
|
||||||
@@ -19,8 +20,9 @@ code](#alternate-code) below.
|
|||||||
|
|
||||||
## Try:
|
## Try:
|
||||||
|
|
||||||
|
**IMPORTANT for macOS**: run under Terminal.app.
|
||||||
|
|
||||||
``` <!---sh-->
|
``` <!---sh-->
|
||||||
# IMPORTANT for macOS: run under Terminal.app
|
|
||||||
|
|
||||||
# Try resizing the terminal window before the first click.
|
# Try resizing the terminal window before the first click.
|
||||||
|
|
||||||
|
|||||||
@@ -413,12 +413,12 @@ Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
|
|||||||
<p>There is an alternate version provided by the author. See <a href="#alternate-code">Alternate
|
<p>There is an alternate version provided by the author. See <a href="#alternate-code">Alternate
|
||||||
code</a> below.</p>
|
code</a> below.</p>
|
||||||
<h2 id="to-use">To use:</h2>
|
<h2 id="to-use">To use:</h2>
|
||||||
<pre><code> # IMPORTANT for macOS: run under Terminal.app
|
<p><strong>IMPORTANT for macOS</strong>: run under Terminal.app.</p>
|
||||||
|
<pre><code>
|
||||||
./prog</code></pre>
|
./prog</code></pre>
|
||||||
<h2 id="try">Try:</h2>
|
<h2 id="try">Try:</h2>
|
||||||
<pre><code> # IMPORTANT for macOS: run under Terminal.app
|
<p><strong>IMPORTANT for macOS</strong>: run under Terminal.app.</p>
|
||||||
|
<pre><code>
|
||||||
# Try resizing the terminal window before the first click.
|
# Try resizing the terminal window before the first click.
|
||||||
|
|
||||||
# Try resizing the terminal window after the first click.
|
# Try resizing the terminal window after the first click.
|
||||||
|
|||||||
@@ -872,11 +872,14 @@ seem to both be compared to <code>y</code> but never <code>x</code> (that variab
|
|||||||
and not even in this part of the code).</p></li>
|
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
|
<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>
|
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>
|
<li><p>A note on the many <code>#define</code>s in my entry. You say you dislike them:</p></li>
|
||||||
<pre><code> Doing masses of #defines to obscure the source has become 'old'. We
|
</ul>
|
||||||
tend to 'see thru' masses of #defines due to our pre-processor tests
|
<blockquote>
|
||||||
that we apply. Simply abusing #defines or -Dfoo=bar won't go as far
|
<p>Doing masses of #defines to obscure the source has become ‘old’. We tend to
|
||||||
as a program that is more well rounded in confusion.</code></pre>
|
‘see thru’ masses of #defines due to our pre-processor tests that we apply.
|
||||||
|
Simply abusing #defines or -Dfoo=bar won’t go as far as a program that is more
|
||||||
|
well rounded in confusion.</p>
|
||||||
|
</blockquote>
|
||||||
<p>As I have noted though many of these save quite a lot of bytes too. It’s
|
<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
|
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
|
entry is more rounded in confusion; certainly the other techniques I have
|
||||||
@@ -888,7 +891,8 @@ also removed some that saved bytes and in fact I think it makes it more
|
|||||||
obscure if in no other way but making it more difficult to look at (for
|
obscure if in no other way but making it more difficult to look at (for
|
||||||
example I might have been able to save bytes by defining for the array
|
example I might have been able to save bytes by defining for the array
|
||||||
offsets but I find that it looks much better - which is to say much worse -
|
offsets but I find that it looks much better - which is to say much worse -
|
||||||
the way I have it now).</p></li>
|
the way I have it now).</p>
|
||||||
|
<ul>
|
||||||
<li><p>Going back to the curious <code>static char s[]=Z(; +<>^v);</code>: there’s something
|
<li><p>Going back to the curious <code>static char s[]=Z(; +<>^v);</code>: there’s something
|
||||||
magical about the number 7 isn’t there? I do not refer to primes although
|
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
|
certainly one could say that primes have a magic to them. No. I’m instead
|
||||||
@@ -1117,7 +1121,7 @@ the score line is made an empty string it doesn’t matter because it’ll appea
|
|||||||
all spaces anyway. Thus I could save another three bytes by changing it to:</p>
|
all spaces anyway. Thus I could save another three bytes by changing it to:</p>
|
||||||
<pre><code> !o && q *U,*V,' ');</code></pre>
|
<pre><code> !o && q *U,*V,' ');</code></pre>
|
||||||
<p>Technically it would be a <code>" "</code> (see <a href="HACKING.html">HACKING.html</a>
|
<p>Technically it would be a <code>" "</code> (see <a href="HACKING.html">HACKING.html</a>
|
||||||
else for N (not referring to the variable though it might very
|
for N (not referring to the variable though it might very
|
||||||
well matter here too) movements (i.e. due to sizes) you will at times (e.g.
|
well matter here too) movements (i.e. due to sizes) you will at times (e.g.
|
||||||
after eating a bug) see the snake body char at 0,0. I’m not bothered about that
|
after eating a bug) see the snake body char at 0,0. I’m not bothered about that
|
||||||
though because the score line is meant to display something, it squeezes a few
|
though because the score line is meant to display something, it squeezes a few
|
||||||
|
|||||||
@@ -630,10 +630,10 @@ there's at least one negative offset.
|
|||||||
|
|
||||||
- A note on the many `#define`s in my entry. You say you dislike them:
|
- A note on the many `#define`s in my entry. You say you dislike them:
|
||||||
|
|
||||||
Doing masses of #defines to obscure the source has become 'old'. We
|
> Doing masses of #defines to obscure the source has become 'old'. We tend to
|
||||||
tend to 'see thru' masses of #defines due to our pre-processor tests
|
'see thru' masses of #defines due to our pre-processor tests that we apply.
|
||||||
that we apply. Simply abusing #defines or -Dfoo=bar won't go as far
|
Simply abusing #defines or -Dfoo=bar won't go as far as a program that is more
|
||||||
as a program that is more well rounded in confusion.
|
well rounded in confusion.
|
||||||
|
|
||||||
As I have noted though many of these save quite a lot of bytes too. It's
|
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
|
true that they might aid (but barely) in obfuscation but I think that my
|
||||||
@@ -955,7 +955,7 @@ all spaces anyway. Thus I could save another three bytes by changing it to:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Technically it would be a `" "` (see [HACKING.html][]
|
Technically it would be a `" "` (see [HACKING.html][]
|
||||||
else for N (not referring to the variable though it might very
|
for N (not referring to the variable though it might very
|
||||||
well matter here too) movements (i.e. due to sizes) you will at times (e.g.
|
well matter here too) movements (i.e. due to sizes) you will at times (e.g.
|
||||||
after eating a bug) see the snake body char at 0,0. I'm not bothered about that
|
after eating a bug) see the snake body char at 0,0. I'm not bothered about that
|
||||||
though because the score line is meant to display something, it squeezes a few
|
though because the score line is meant to display something, it squeezes a few
|
||||||
|
|||||||
@@ -530,12 +530,12 @@ 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
|
to run the game again without modifying the dimensions (and then just quit) or
|
||||||
even just the <code>reset</code> command.</p>
|
even just the <code>reset</code> command.</p>
|
||||||
<p>The Linux man page says:</p>
|
<p>The Linux man page says:</p>
|
||||||
<pre><code> You might have to run the `reset` tool like:
|
<blockquote>
|
||||||
|
<p>You might have to run the <code>reset</code> tool like:</p>
|
||||||
<LF>reset<LF>
|
<p><LF>reset<LF></p>
|
||||||
|
<p>(the line-feed character is normally control-J) to get the terminal to work,
|
||||||
(the line-feed character is normally control-J) to get the terminal
|
as carriage-return may no longer work in the abnormal state.</p>
|
||||||
to work, as carriage-return may no longer work in the abnormal state.</code></pre>
|
</blockquote>
|
||||||
<p>If you don’t have the reset utility you can try:</p>
|
<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
|
<p>Otherwise try <code>clear; stty sane</code> (that will turn on echo also) or if all else
|
||||||
@@ -603,17 +603,20 @@ support in the source code itself.</p>
|
|||||||
<h2 id="colour-limitations"><a href="#toc">Colour limitations</a></h2>
|
<h2 id="colour-limitations"><a href="#toc">Colour limitations</a></h2>
|
||||||
</div>
|
</div>
|
||||||
<p>According to X/Open Curses, Issue 7 (pg. 57):</p>
|
<p>According to X/Open Curses, Issue 7 (pg. 57):</p>
|
||||||
<pre><code> With init_pair() and pair_content(), the value of pair must be in a range
|
<blockquote>
|
||||||
from 0 to and including COLOR_PAIRS-1. (There may be an
|
<p>With <code>init_pair()</code> and <code>pair_content()</code>, the value of pair must be in a range from
|
||||||
implementation-specific upper limit on the valid value of pair, but any such
|
0 to and including <code>COLOR_PAIRS-1</code>. (There may be an implementation-specific upper
|
||||||
limit is at least 63.) Valid values for f and b are the range from 0 to and
|
limit on the valid value of pair, but any such limit is at least 63.) Valid
|
||||||
including COLORS-1.</code></pre>
|
values for f and b are the range from 0 to and including <code>COLORS-1</code>.</p>
|
||||||
|
</blockquote>
|
||||||
<p>The manpage for <code>init_pair()</code> says this:</p>
|
<p>The manpage for <code>init_pair()</code> says this:</p>
|
||||||
<pre><code> These limits apply to color values and color pairs. Values outside these limits are not legal, and may result in a runtime error:
|
<blockquote>
|
||||||
|
<p>These limits apply to color values and color pairs. Values outside these
|
||||||
[...]
|
limits are not legal, and may result in a runtime error:</p>
|
||||||
|
<p>[…]</p>
|
||||||
COLOR_PAIRS corresponds to the terminal database's max_pairs capability, (see terminfo(5)).</code></pre>
|
<p><code>COLOR_PAIRS</code> corresponds to the terminal database’s <code>max_pairs</code> capability,
|
||||||
|
(see <code>terminfo(5)</code>).</p>
|
||||||
|
</blockquote>
|
||||||
<p>Based on the two as well as the fact that monochrome terminals (I’ve tried under
|
<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
|
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>
|
confirm this I wrote the following code with the output below:</p>
|
||||||
|
|||||||
+17
-22
@@ -191,14 +191,12 @@ even just the `reset` command.
|
|||||||
|
|
||||||
The Linux man page says:
|
The Linux man page says:
|
||||||
|
|
||||||
```
|
> You might have to run the `reset` tool like:
|
||||||
You might have to run the `reset` tool like:
|
>
|
||||||
|
> <LF>reset<LF>
|
||||||
<LF>reset<LF>
|
>
|
||||||
|
> (the line-feed character is normally control-J) to get the terminal to work,
|
||||||
(the line-feed character is normally control-J) to get the terminal
|
as carriage-return may no longer work in the abnormal state.
|
||||||
to work, as carriage-return may no longer work in the abnormal state.
|
|
||||||
```
|
|
||||||
|
|
||||||
If you don't have the reset utility you can try:
|
If you don't have the reset utility you can try:
|
||||||
|
|
||||||
@@ -305,23 +303,20 @@ support in the source code itself.
|
|||||||
|
|
||||||
According to X/Open Curses, Issue 7 (pg. 57):
|
According to X/Open Curses, Issue 7 (pg. 57):
|
||||||
|
|
||||||
```
|
> With `init_pair()` and `pair_content()`, the value of pair must be in a range from
|
||||||
With init_pair() and pair_content(), the value of pair must be in a range
|
0 to and including `COLOR_PAIRS-1`. (There may be an implementation-specific upper
|
||||||
from 0 to and including COLOR_PAIRS-1. (There may be an
|
limit on the valid value of pair, but any such limit is at least 63.) Valid
|
||||||
implementation-specific upper limit on the valid value of pair, but any such
|
values for f and b are the range from 0 to and including `COLORS-1`.
|
||||||
limit is at least 63.) Valid values for f and b are the range from 0 to and
|
|
||||||
including COLORS-1.
|
|
||||||
```
|
|
||||||
|
|
||||||
The manpage for `init_pair()` says this:
|
The manpage for `init_pair()` says this:
|
||||||
|
|
||||||
```
|
> These limits apply to color values and color pairs. Values outside these
|
||||||
These limits apply to color values and color pairs. Values outside these limits are not legal, and may result in a runtime error:
|
limits are not legal, and may result in a runtime error:
|
||||||
|
>
|
||||||
[...]
|
> [...]
|
||||||
|
>
|
||||||
COLOR_PAIRS corresponds to the terminal database's max_pairs capability, (see terminfo(5)).
|
> `COLOR_PAIRS` corresponds to the terminal database's `max_pairs` capability,
|
||||||
```
|
(see `terminfo(5)`).
|
||||||
|
|
||||||
Based on the two as well as the fact that monochrome terminals (I've tried under
|
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
|
both Linux and macOS) seem to work fine I believe I am fine here too. And to
|
||||||
|
|||||||
+13
-16
@@ -217,21 +217,18 @@ With my entry we can complete the loop!
|
|||||||
The author [Nathan Sidwell](../../authors.html#Nathan_Sidwell) of the [1992 Worst
|
The author [Nathan Sidwell](../../authors.html#Nathan_Sidwell) of the [1992 Worst
|
||||||
Abuse of the Rules][] had this to say about his program:
|
Abuse of the Rules][] had this to say about his program:
|
||||||
|
|
||||||
```
|
> This program is a hello world text encrypter/decrypter. It uses an
|
||||||
This program is a hello world text encrypter/decrypter. It uses an
|
[enigma](https://www.cryptomuseum.com/crypto/enigma/index.htm) (I think) style
|
||||||
[enigma](https://www.cryptomuseum.com/crypto/enigma/index.htm) (I think) style
|
encryption algorithm, where the encryption key character is modified by a value,
|
||||||
encryption algorithm, where the encryption key character is modified by a value,
|
determined from the previous character. Non-printable characters (those with
|
||||||
determined from the previous character. Non-printable characters (those with
|
ASCII values `< ' '` or `> 0x7e`) are passed unaltered, thus any kind of file
|
||||||
ASCII values `< ' '` or `> 0x7e`) are passed unaltered, thus any kind of file
|
may be successfully processed, but if the original is printable, the processed
|
||||||
may be successfully processed, but if the original is printable, the processed
|
file will be too. The input is read from stdin, and the output presented to
|
||||||
file will be too. The input is read from stdin, and the output presented to
|
stdout. The key, a text string, is presented as a command argument. This is
|
||||||
stdout. The key, a text string, is presented as a command argument. This is
|
optional, and if omitted, the file is self-{de,en}crypted. To specify
|
||||||
optional, and if omitted, the file is self-{de,en}crypted. To specify
|
decryption, a `-` should be given before the key. (Actually encryption and
|
||||||
decryption, a `-` should be given before the key. (Actually encryption and
|
decryption proper inverse operations, so you can use decrypt to scramble and
|
||||||
decryption proper inverse operations, so you can use decrypt to scramble and
|
encrypt to descramble, if you're perverse.)
|
||||||
encrypt to descramble, if you're perverse.)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
But the Enigma algorithm is more complex than that and my entry can encipher
|
But the Enigma algorithm is more complex than that and my entry can encipher
|
||||||
(and by extension decipher) text in the manner of the Enigma machines of the
|
(and by extension decipher) text in the manner of the Enigma machines of the
|
||||||
@@ -862,7 +859,7 @@ change the rest of the text. If you wish to see how I went about this see
|
|||||||
[recode.c]: recode.c
|
[recode.c]: recode.c
|
||||||
[obfuscation.html]: obfuscation.html
|
[obfuscation.html]: obfuscation.html
|
||||||
[obfuscation.txt]: obfuscation.txt
|
[obfuscation.txt]: obfuscation.txt
|
||||||
[obfuscation.key]: obfuscation.key
|
[obfuscation.key]: %%REPO_URL%%/2020/ferguson2/obfuscation.key
|
||||||
[Tony Sale's pages on The Enigma cipher machine]: https://web.archive.org/web/20200621180323/http://www.codesandciphers.co.uk/enigma/index.htm
|
[Tony Sale's pages on The Enigma cipher machine]: https://web.archive.org/web/20200621180323/http://www.codesandciphers.co.uk/enigma/index.htm
|
||||||
[Technical Details of the Enigma Machine]: https://web.archive.org/web/20200710094303/http://users.telenet.be/d.rijmenants/en/enigmatech.htm
|
[Technical Details of the Enigma Machine]: https://web.archive.org/web/20200710094303/http://users.telenet.be/d.rijmenants/en/enigmatech.htm
|
||||||
[The German Enigma Cipher Machine]: https://web.archive.org/web/20200710094243/http://users.telenet.be/d.rijmenants/en/enigma.htm
|
[The German Enigma Cipher Machine]: https://web.archive.org/web/20200710094243/http://users.telenet.be/d.rijmenants/en/enigma.htm
|
||||||
|
|||||||
+16
-14
@@ -563,18 +563,20 @@ With my entry we can complete the loop!</p>
|
|||||||
</div>
|
</div>
|
||||||
<p>The author <a href="../../authors.html#Nathan_Sidwell">Nathan Sidwell</a> of the <a href="../../1992/nathan/index.html">1992 Worst
|
<p>The author <a href="../../authors.html#Nathan_Sidwell">Nathan Sidwell</a> of the <a href="../../1992/nathan/index.html">1992 Worst
|
||||||
Abuse of the Rules</a> had this to say about his program:</p>
|
Abuse of the Rules</a> had this to say about his program:</p>
|
||||||
<pre><code> This program is a hello world text encrypter/decrypter. It uses an
|
<blockquote>
|
||||||
[enigma](https://www.cryptomuseum.com/crypto/enigma/index.htm) (I think) style
|
<p>This program is a hello world text encrypter/decrypter. It uses an
|
||||||
encryption algorithm, where the encryption key character is modified by a value,
|
<a href="https://www.cryptomuseum.com/crypto/enigma/index.htm">enigma</a> (I think) style
|
||||||
determined from the previous character. Non-printable characters (those with
|
encryption algorithm, where the encryption key character is modified by a value,
|
||||||
ASCII values `< ' '` or `> 0x7e`) are passed unaltered, thus any kind of file
|
determined from the previous character. Non-printable characters (those with
|
||||||
may be successfully processed, but if the original is printable, the processed
|
ASCII values <code>< ' '</code> or <code>> 0x7e</code>) are passed unaltered, thus any kind of file
|
||||||
file will be too. The input is read from stdin, and the output presented to
|
may be successfully processed, but if the original is printable, the processed
|
||||||
stdout. The key, a text string, is presented as a command argument. This is
|
file will be too. The input is read from stdin, and the output presented to
|
||||||
optional, and if omitted, the file is self-{de,en}crypted. To specify
|
stdout. The key, a text string, is presented as a command argument. This is
|
||||||
decryption, a `-` should be given before the key. (Actually encryption and
|
optional, and if omitted, the file is self-{de,en}crypted. To specify
|
||||||
decryption proper inverse operations, so you can use decrypt to scramble and
|
decryption, a <code>-</code> should be given before the key. (Actually encryption and
|
||||||
encrypt to descramble, if you're perverse.)</code></pre>
|
decryption proper inverse operations, so you can use decrypt to scramble and
|
||||||
|
encrypt to descramble, if you’re perverse.)</p>
|
||||||
|
</blockquote>
|
||||||
<p>But the Enigma algorithm is more complex than that and my entry can encipher
|
<p>But the Enigma algorithm is more complex than that and my entry can encipher
|
||||||
(and by extension decipher) text in the manner of the Enigma machines of the
|
(and by extension decipher) text in the manner of the Enigma machines of the
|
||||||
<a href="https://en.wikipedia.org/wiki/German_Army_(1935%E2%80%931945)">Heer</a> (army) and <a href="https://en.wikipedia.org/wiki/Luftwaffe">Luftwaffe</a> (air
|
<a href="https://en.wikipedia.org/wiki/German_Army_(1935%E2%80%931945)">Heer</a> (army) and <a href="https://en.wikipedia.org/wiki/Luftwaffe">Luftwaffe</a> (air
|
||||||
@@ -810,10 +812,10 @@ has some of the ways I think this entry is obfuscated. To decipher try:</p>
|
|||||||
<pre><code> ./recode -Robfuscation.key -fobfuscation.txt | ./prog - 2>/dev/null > obfuscation.md</code></pre>
|
<pre><code> ./recode -Robfuscation.key -fobfuscation.txt | ./prog - 2>/dev/null > obfuscation.md</code></pre>
|
||||||
<p>To encipher:</p>
|
<p>To encipher:</p>
|
||||||
<pre><code> ./recode -Robfuscation.key -fobfuscation.md | ./prog - 2>/dev/null > obfuscation.txt</code></pre>
|
<pre><code> ./recode -Robfuscation.key -fobfuscation.md | ./prog - 2>/dev/null > obfuscation.txt</code></pre>
|
||||||
<p>The file <a href="obfuscation.key">obfuscation.key</a> is the key to decipher/encipher
|
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/obfuscation.key">obfuscation.key</a> is the key to decipher/encipher
|
||||||
<a href="obfuscation.txt">obfuscation.txt</a>.</p>
|
<a href="obfuscation.txt">obfuscation.txt</a>.</p>
|
||||||
<p>For the lazy <a href="obfuscation.html">obfuscation.html</a> has the deciphered version.</p>
|
<p>For the lazy <a href="obfuscation.html">obfuscation.html</a> has the deciphered version.</p>
|
||||||
<p>As for the <a href="obfuscation.key">obfuscation.key</a> file if you observe the contents you’ll find the
|
<p>As for the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/obfuscation.key">obfuscation.key</a> file if you observe the contents you’ll find the
|
||||||
word <code>OBFUSCATION</code>:</p>
|
word <code>OBFUSCATION</code>:</p>
|
||||||
<pre><code> 2OB5FU1SC2ATIONCDEFGHJKLMPQRYZ
|
<pre><code> 2OB5FU1SC2ATIONCDEFGHJKLMPQRYZ
|
||||||
OB FU SC ATION</code></pre>
|
OB FU SC ATION</code></pre>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ It is interesting how well smeonoe can raed txet wtih lots of tyops in it.
|
|||||||
How well can you raed porg.c, C prgoarm that is in the shpae of an SD card (or
|
How well can you raed porg.c, C prgoarm that is in the shpae of an SD card (or
|
||||||
is it a pnuch crad)?
|
is it a pnuch crad)?
|
||||||
|
|
||||||
BTW: this funny reading of English (which also works with several other
|
**BTW**: this funny reading of English (which also works with several other
|
||||||
languages) is called
|
languages) is called
|
||||||
[typoglycemia](https://www.mrc-cbu.cam.ac.uk/personal/matt.davis/Cmabrigde/)
|
[typoglycemia](https://www.mrc-cbu.cam.ac.uk/personal/matt.davis/Cmabrigde/)
|
||||||
(the article however is incorrect in stating that if the letters were more
|
(the article however is incorrect in stating that if the letters were more
|
||||||
|
|||||||
@@ -426,7 +426,7 @@ code</a> below.</p>
|
|||||||
<p>It is interesting how well smeonoe can raed txet wtih lots of tyops in it.
|
<p>It is interesting how well smeonoe can raed txet wtih lots of tyops in it.
|
||||||
How well can you raed porg.c, C prgoarm that is in the shpae of an SD card (or
|
How well can you raed porg.c, C prgoarm that is in the shpae of an SD card (or
|
||||||
is it a pnuch crad)?</p>
|
is it a pnuch crad)?</p>
|
||||||
<p>BTW: this funny reading of English (which also works with several other
|
<p><strong>BTW</strong>: this funny reading of English (which also works with several other
|
||||||
languages) is called
|
languages) is called
|
||||||
<a href="https://www.mrc-cbu.cam.ac.uk/personal/matt.davis/Cmabrigde/">typoglycemia</a>
|
<a href="https://www.mrc-cbu.cam.ac.uk/personal/matt.davis/Cmabrigde/">typoglycemia</a>
|
||||||
(the article however is incorrect in stating that if the letters were more
|
(the article however is incorrect in stating that if the letters were more
|
||||||
|
|||||||
+22
-23
@@ -21,11 +21,10 @@ context length decreases:
|
|||||||
./try.sh
|
./try.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
> Performance depends on the number of same hashes found. Too many identical
|
||||||
Performance depends on the number of same hashes found.
|
strings if the context length is small.
|
||||||
Too many identical strings if the context length is small.
|
>
|
||||||
-- Author
|
> -- Author
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
@@ -38,30 +37,30 @@ The author wrote in reply:
|
|||||||
|
|
||||||
<hr style="width:10%;text-align:left;margin-left:0">
|
<hr style="width:10%;text-align:left;margin-left:0">
|
||||||
|
|
||||||
Wow, amazing! Very fast, but there is a drawback to randomness.
|
> Wow, amazing! Very fast, but there is a drawback to randomness.
|
||||||
If some string only appears after half the input, the first instance
|
> If some string only appears after half the input, the first instance
|
||||||
of this string will have a 50% chance of occurrence.
|
> of this string will have a 50% chance of occurrence.
|
||||||
Example:
|
> Example:
|
||||||
|
>
|
||||||
```
|
> `echo "00000000000000000000 01 02 02 02 02 02 02" > test.txt`
|
||||||
echo "00000000000000000000 01 02 02 02 02 02 02" > test.txt
|
>
|
||||||
./prog test.txt 1000 2 123
|
> `./prog test.txt 1000 2 123`
|
||||||
# more twos in output
|
>
|
||||||
./rand test.txt 1000 2 123
|
> `# more twos in output`
|
||||||
# more ones in output
|
>
|
||||||
```
|
> `./rand test.txt 1000 2 123`
|
||||||
|
>
|
||||||
```
|
> `# more ones in output`
|
||||||
But this will happen very rarely on real data.
|
>
|
||||||
-- Author
|
> But this will happen very rarely on real data.
|
||||||
```
|
> -- Author
|
||||||
|
|
||||||
<hr style="width:10%;text-align:left;margin-left:0">
|
<hr style="width:10%;text-align:left;margin-left:0">
|
||||||
|
|
||||||
|
|
||||||
Try using the same random seed and varying the context size.
|
Try using the same random seed and varying the context size.
|
||||||
|
|
||||||
BTW: what on Middle-earth is `lámatyávë`? It's Quenya, one of the languages of
|
**BTW**: what on Middle-earth is `lámatyávë`? It's Quenya, one of the languages of
|
||||||
the Elves in Tolkien's Legendarium. It means sound taste (plural is `lámatyáver`)
|
the Elves in Tolkien's Legendarium. It means sound taste (plural is `lámatyáver`)
|
||||||
and it refers to phonaesthesia - in other words, it refers to the pleasure of
|
and it refers to phonaesthesia - in other words, it refers to the pleasure of
|
||||||
sound and form of words. It's discussed in [Morgoth's
|
sound and form of words. It's discussed in [Morgoth's
|
||||||
|
|||||||
+15
-11
@@ -416,29 +416,33 @@ Location: <a href="../../location.html#RU">RU</a> - <em>Russian Federation</em>
|
|||||||
<p>When running this, ask yourself why it gets progressively slower when the
|
<p>When running this, ask yourself why it gets progressively slower when the
|
||||||
context length decreases:</p>
|
context length decreases:</p>
|
||||||
<pre><code> ./try.sh</code></pre>
|
<pre><code> ./try.sh</code></pre>
|
||||||
<pre><code> Performance depends on the number of same hashes found.
|
<blockquote>
|
||||||
Too many identical strings if the context length is small.
|
<p>Performance depends on the number of same hashes found. Too many identical
|
||||||
-- Author</code></pre>
|
strings if the context length is small.</p>
|
||||||
|
<p>– Author</p>
|
||||||
|
</blockquote>
|
||||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||||
<p>We were able to <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov4/rand.c">write our own program</a> performing the same trick using
|
<p>We were able to <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov4/rand.c">write our own program</a> performing the same trick using
|
||||||
the (still non-standard, for some reason) library function <code>memmem()</code>, but that
|
the (still non-standard, for some reason) library function <code>memmem()</code>, but that
|
||||||
way it works too fast regardless of the context length, and it’s much less fun.</p>
|
way it works too fast regardless of the context length, and it’s much less fun.</p>
|
||||||
<p>The author wrote in reply:</p>
|
<p>The author wrote in reply:</p>
|
||||||
<hr style="width:10%;text-align:left;margin-left:0">
|
<hr style="width:10%;text-align:left;margin-left:0">
|
||||||
|
<blockquote>
|
||||||
<p>Wow, amazing! Very fast, but there is a drawback to randomness.
|
<p>Wow, amazing! Very fast, but there is a drawback to randomness.
|
||||||
If some string only appears after half the input, the first instance
|
If some string only appears after half the input, the first instance
|
||||||
of this string will have a 50% chance of occurrence.
|
of this string will have a 50% chance of occurrence.
|
||||||
Example:</p>
|
Example:</p>
|
||||||
<pre><code> echo "00000000000000000000 01 02 02 02 02 02 02" > test.txt
|
<p><code>echo "00000000000000000000 01 02 02 02 02 02 02" > test.txt</code></p>
|
||||||
./prog test.txt 1000 2 123
|
<p><code>./prog test.txt 1000 2 123</code></p>
|
||||||
# more twos in output
|
<p><code># more twos in output</code></p>
|
||||||
./rand test.txt 1000 2 123
|
<p><code>./rand test.txt 1000 2 123</code></p>
|
||||||
# more ones in output</code></pre>
|
<p><code># more ones in output</code></p>
|
||||||
<pre><code> But this will happen very rarely on real data.
|
<p>But this will happen very rarely on real data.
|
||||||
-- Author</code></pre>
|
– Author</p>
|
||||||
|
</blockquote>
|
||||||
<hr style="width:10%;text-align:left;margin-left:0">
|
<hr style="width:10%;text-align:left;margin-left:0">
|
||||||
<p>Try using the same random seed and varying the context size.</p>
|
<p>Try using the same random seed and varying the context size.</p>
|
||||||
<p>BTW: what on Middle-earth is <code>lámatyávë</code>? It’s Quenya, one of the languages of
|
<p><strong>BTW</strong>: what on Middle-earth is <code>lámatyávë</code>? It’s Quenya, one of the languages of
|
||||||
the Elves in Tolkien’s Legendarium. It means sound taste (plural is <code>lámatyáver</code>)
|
the Elves in Tolkien’s Legendarium. It means sound taste (plural is <code>lámatyáver</code>)
|
||||||
and it refers to phonaesthesia - in other words, it refers to the pleasure of
|
and it refers to phonaesthesia - in other words, it refers to the pleasure of
|
||||||
sound and form of words. It’s discussed in <a href="https://en.wikipedia.org/wiki/Morgoth%27s_Ring">Morgoth’s
|
sound and form of words. It’s discussed in <a href="https://en.wikipedia.org/wiki/Morgoth%27s_Ring">Morgoth’s
|
||||||
|
|||||||
Reference in new issue
Block a user