fix many internal links
Fixed a number of internal links that need to go to the GitHub site. Ran `make www` to perform the above.
This commit is contained in:
1 parent
b84f8cbe28
commit
e7d69bc232
175 files changed
+645
-631
No files matched your search
@@ -80,7 +80,7 @@ transformation occurs.
|
||||
|
||||
### Rule 2-ish:
|
||||
|
||||
Exporting the constants `B`,`I`,`T`,`S` to the [Makefile](Makefile) allows the
|
||||
Exporting the constants `B`,`I`,`T`,`S` to the [Makefile](%%REPO_URL%%/2020/burton/Makefile) allows the
|
||||
code to be compiled for either LE (little-endian) or BE (big-endian)
|
||||
machines(!!), so they are truly configuration parameters, not logic.
|
||||
|
||||
|
||||
@@ -412,7 +412,7 @@ result?</p>
|
||||
<p>Invoke this with a single non-negative integer less than 256, and a useful
|
||||
transformation occurs.</p>
|
||||
<h3 id="rule-2-ish">Rule 2-ish:</h3>
|
||||
<p>Exporting the constants <code>B</code>,<code>I</code>,<code>T</code>,<code>S</code> to the <a href="Makefile">Makefile</a> allows the
|
||||
<p>Exporting the constants <code>B</code>,<code>I</code>,<code>T</code>,<code>S</code> to the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/burton/Makefile">Makefile</a> allows the
|
||||
code to be compiled for either LE (little-endian) or BE (big-endian)
|
||||
machines(!!), so they are truly configuration parameters, not logic.</p>
|
||||
<h3 id="notes">Notes:</h3>
|
||||
|
||||
@@ -34,7 +34,7 @@ code](#alternate-code) below.
|
||||
|
||||
## Alternate code:
|
||||
|
||||
An alternate version of this entry, [prog.alt.c](prog.alt.c), is provided. This
|
||||
An alternate version of this entry, [prog.alt.c](%%REPO_URL%%/2020/endoh1/prog.alt.c), is provided. This
|
||||
alternate code lacks the additional rule to flag all unprobed cells. See the
|
||||
Author's remarks for more details.
|
||||
|
||||
@@ -217,13 +217,13 @@ There are mines in a cell whose "priorities-of-each-cell" is less than
|
||||
### Bug fixes and Credits
|
||||
|
||||
The judges pointed out a bug of the original version that I submitted
|
||||
([prog.alt.c](prog.alt.c)). Because this program does not provide a feature to
|
||||
([prog.alt.c](%%REPO_URL%%/2020/endoh1/prog.alt.c)). Because this program does not provide a feature to
|
||||
flag unprobed cells manually, we can do nothing if the number of unprobed cells
|
||||
are equal to the number of mines remaining; [unwinnable.txt](unwinnable.txt) is
|
||||
an example for such a case.
|
||||
|
||||
Thus, I implemented an additional rule to flag all unprobed cells in such a case
|
||||
into the final version ([prog.c](prog.c)).
|
||||
into the final version ([prog.c](%%REPO_URL%%/2020/endoh1/prog.c)).
|
||||
|
||||
[Ilya Kurdyukov](../../authors.html#Ilya_Kurdyukov) also pointed out a warning
|
||||
"ignoring return value of 'fscanf'" only when `-O3` is used. So I changed the
|
||||
|
||||
@@ -396,7 +396,7 @@ code</a> below.</p>
|
||||
|
||||
./prog unwinnable.txt</code></pre>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>An alternate version of this entry, <a href="prog.alt.c">prog.alt.c</a>, is provided. This
|
||||
<p>An alternate version of this entry, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh1/prog.alt.c">prog.alt.c</a>, is provided. This
|
||||
alternate code lacks the additional rule to flag all unprobed cells. See the
|
||||
Author’s remarks for more details.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
@@ -499,12 +499,12 @@ Analyze the code.</p>
|
||||
“number-of-mines”. (But the mine in the first-clicked cell is removed.)</p>
|
||||
<h3 id="bug-fixes-and-credits">Bug fixes and Credits</h3>
|
||||
<p>The judges pointed out a bug of the original version that I submitted
|
||||
(<a href="prog.alt.c">prog.alt.c</a>). Because this program does not provide a feature to
|
||||
(<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh1/prog.alt.c">prog.alt.c</a>). Because this program does not provide a feature to
|
||||
flag unprobed cells manually, we can do nothing if the number of unprobed cells
|
||||
are equal to the number of mines remaining; <a href="unwinnable.txt">unwinnable.txt</a> is
|
||||
an example for such a case.</p>
|
||||
<p>Thus, I implemented an additional rule to flag all unprobed cells in such a case
|
||||
into the final version (<a href="prog.c">prog.c</a>).</p>
|
||||
into the final version (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh1/prog.c">prog.c</a>).</p>
|
||||
<p><a href="../../authors.html#Ilya_Kurdyukov">Ilya Kurdyukov</a> also pointed out a warning
|
||||
“ignoring return value of ‘fscanf’” only when <code>-O3</code> is used. So I changed the
|
||||
code a little to pretend to use the return value of <code>fscanf(3)</code>.</p>
|
||||
|
||||
@@ -29,11 +29,11 @@ What happens if you do
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
Clever use of the C99 complex data type. The [spoiler](spoiler/) directory
|
||||
Clever use of the C99 complex data type. The [spoiler](%%REPO_URL%%/2020/endoh2/spoiler/spoiler.html) directory
|
||||
contains clues as to how some winning authors create / edit programs into ASCII
|
||||
shapes.
|
||||
|
||||
With the source from the [spoiler](spoiler/) directory could you make the code
|
||||
With the source from the [spoiler](%%REPO_URL%%/2020/endoh2/spoiler/spoiler.html) directory could you make the code
|
||||
render for a larger terminal window? How about adding more glyphs?
|
||||
|
||||
|
||||
|
||||
@@ -387,10 +387,10 @@ Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
|
||||
<pre><code> ./prog prog.c</code></pre>
|
||||
<p>?</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Clever use of the C99 complex data type. The <a href="spoiler/">spoiler</a> directory
|
||||
<p>Clever use of the C99 complex data type. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh2/spoiler/spoiler.html">spoiler</a> directory
|
||||
contains clues as to how some winning authors create / edit programs into ASCII
|
||||
shapes.</p>
|
||||
<p>With the source from the <a href="spoiler/">spoiler</a> directory could you make the code
|
||||
<p>With the source from the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh2/spoiler/spoiler.html">spoiler</a> directory could you make the code
|
||||
render for a larger terminal window? How about adding more glyphs?</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>No! Try not. Do, or do not. There is no try.</p>
|
||||
|
||||
@@ -25,7 +25,7 @@ code](#alternate-code) below.
|
||||
|
||||
## Alternate code:
|
||||
|
||||
An alternate version of this entry, [prog.alt.c](prog.alt.c), is provided. This
|
||||
An alternate version of this entry, [prog.alt.c](%%REPO_URL%%/2020/endoh3/prog.alt.c), is provided. This
|
||||
alternate code uses Unicode letters.
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ You may be tempted to use a mirror. Resist the temptation! Try figuring out how
|
||||
the clock hands are drawn. Can you change the program to make it draw a
|
||||
familiar (non-mirrored) clock face? Can you add the second hand?
|
||||
|
||||
When using the [run_clock.sh](run_clock.sh) shell script, your perception of
|
||||
When using the [run_clock.sh](%%REPO_URL%%/2020/endoh3/run_clock.sh) shell script, your perception of
|
||||
time might depend on what time it is.
|
||||
|
||||
|
||||
|
||||
@@ -387,7 +387,7 @@ code</a> below.</p>
|
||||
<pre><code> ./run_clock
|
||||
# And watch closely for 15-20 seconds</code></pre>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>An alternate version of this entry, <a href="prog.alt.c">prog.alt.c</a>, is provided. This
|
||||
<p>An alternate version of this entry, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh3/prog.alt.c">prog.alt.c</a>, is provided. This
|
||||
alternate code uses Unicode letters.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<pre><code> make alt</code></pre>
|
||||
@@ -400,7 +400,7 @@ alternate code uses Unicode letters.</p>
|
||||
<p>You may be tempted to use a mirror. Resist the temptation! Try figuring out how
|
||||
the clock hands are drawn. Can you change the program to make it draw a
|
||||
familiar (non-mirrored) clock face? Can you add the second hand?</p>
|
||||
<p>When using the <a href="run_clock.sh">run_clock.sh</a> shell script, your perception of
|
||||
<p>When using the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/endoh3/run_clock.sh">run_clock.sh</a> shell script, your perception of
|
||||
time might depend on what time it is.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>Prepare a mirror!</p>
|
||||
|
||||
@@ -60,7 +60,7 @@ and non-zero).
|
||||
size to grow every time you eat a bug. Default 5; negative
|
||||
values are allowed. 'Negativity' creates for fun gameplay modes with
|
||||
enough creativity. See [gameplay.html](gameplay.html)
|
||||
GitHub) as well as [play.sh](play.sh) for some examples.
|
||||
GitHub) as well as [play.sh](%%REPO_URL%%/2020/ferguson1/play.sh) for some examples.
|
||||
|
||||
* **SHED**<br>
|
||||
every **SHED** movements you will grow (> 0), shrink (< 0) or
|
||||
@@ -76,7 +76,7 @@ and non-zero).
|
||||
you can create some fun gameplay modes here. For instance you
|
||||
can grow upon eating a bug but shrink every **SHED** movements
|
||||
and then it's a battle of whether you win by **SIZE < 0** or
|
||||
**SIZE >= MAXSIZE**. See [play.sh](play.sh) for examples.
|
||||
**SIZE >= MAXSIZE**. See [play.sh](%%REPO_URL%%/2020/ferguson1/play.sh) for examples.
|
||||
NOTE: the concept of shedding in this game is a misnomer; see
|
||||
notes below.
|
||||
|
||||
@@ -516,13 +516,13 @@ been warned.
|
||||
I submitted three Snake versions; these are the other layouts for those few
|
||||
(more likely none) who are interested to see them.
|
||||
|
||||
The [prog.2.c](prog.2.c) has more digraphs but I think no other significant differences.
|
||||
The [prog.2.c](%%REPO_URL%%/2020/ferguson1/prog.2.c) has more digraphs but I think no other significant differences.
|
||||
|
||||
The [prog.3.c](prog.3.c) is in a more artistic layout (a backwards S), has at least one
|
||||
The [prog.3.c](%%REPO_URL%%/2020/ferguson1/prog.3.c) is in a more artistic layout (a backwards S), has at least one
|
||||
additional obfuscation technique (see spoilers) but it also has more digraphs
|
||||
and as the judges said they feel that digraphs are dated so that's probably why
|
||||
they chose the first layout. The [prog.3-j.c](prog.3-j.c) version is
|
||||
[prog.3.c](prog.3.c) with a shorter `J` macro.
|
||||
they chose the first layout. The [prog.3-j.c](%%REPO_URL%%/2020/ferguson1/prog.3-j.c) version is
|
||||
[prog.3.c](%%REPO_URL%%%%REPO_URL%%//2020/ferguson1/prog.3.c) with a shorter `J` macro.
|
||||
|
||||
The prog.alt.c version is the one that allows for customising the bug colour and
|
||||
it's used in both [snake-colours.sh][] and [play.sh][]. It also calls `erase()`
|
||||
@@ -544,7 +544,7 @@ but Don Yang and Edward Giles too.
|
||||
|
||||
But there are some others who I don't remember like [Ilya
|
||||
Kurdyukov](../../authors.html#Ilya_Kurdyukov)
|
||||
(who's offered a lot of interesting thoughts on [Snake](../ferguson1/prog.c) and
|
||||
(who's offered a lot of interesting thoughts on [Snake](%%REPO_URL%%/2020/ferguson1/prog.c) and
|
||||
who plans to have his own version after the entries are published), [Nathan
|
||||
Otterness](../../authors.html#Nathan_Otterness), [Nicholas
|
||||
Carlini](../../authors.html#Nicholas_Carlini) (your entry is an absolutely brilliant
|
||||
@@ -556,7 +556,7 @@ Well done and congratulations to all of you again! Thank you for submitting the
|
||||
wonderful entries and I'm honoured to have my two entries beside yours!
|
||||
|
||||
To Dave Burton I thank you for your wonderful comments as well as pointing out
|
||||
that even with [prog.alt.c](prog.alt.c) it probably would be better to make use
|
||||
that even with [prog.alt.c](%%REPO_URL%%/2020/ferguson1/prog.alt.c) it probably would be better to make use
|
||||
of the alt target instead of naming prog.c prog.alt.c. You're quite right, I had
|
||||
thought of it but you brought it up so I could correct it. Much appreciated
|
||||
mate.
|
||||
|
||||
@@ -417,7 +417,7 @@ MAXSIZE</strong> you win <em>before</em> you grow to the full size!</p></li>
|
||||
size to grow every time you eat a bug. Default 5; negative
|
||||
values are allowed. ‘Negativity’ creates for fun gameplay modes with
|
||||
enough creativity. See <a href="gameplay.html">gameplay.html</a>
|
||||
GitHub) as well as <a href="play.sh">play.sh</a> for some examples.</p></li>
|
||||
GitHub) as well as <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> for some examples.</p></li>
|
||||
<li><p><strong>SHED</strong><br>
|
||||
every <strong>SHED</strong> movements you will grow (> 0), shrink (< 0) or
|
||||
stay the same length (0) by the <strong>SHEDS</strong> (below) value. Again
|
||||
@@ -431,7 +431,7 @@ eats a bug the counter isn’t incremented. Again with creativity
|
||||
you can create some fun gameplay modes here. For instance you
|
||||
can grow upon eating a bug but shrink every <strong>SHED</strong> movements
|
||||
and then it’s a battle of whether you win by <strong>SIZE < 0</strong> or
|
||||
<strong>SIZE >= MAXSIZE</strong>. See <a href="play.sh">play.sh</a> for examples.
|
||||
<strong>SIZE >= MAXSIZE</strong>. See <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> for examples.
|
||||
NOTE: the concept of shedding in this game is a misnomer; see
|
||||
notes below.</p></li>
|
||||
<li><p><strong>CANNIBAL</strong><br>
|
||||
@@ -793,12 +793,12 @@ been warned.</li>
|
||||
</div>
|
||||
<p>I submitted three Snake versions; these are the other layouts for those few
|
||||
(more likely none) who are interested to see them.</p>
|
||||
<p>The <a href="prog.2.c">prog.2.c</a> has more digraphs but I think no other significant differences.</p>
|
||||
<p>The <a href="prog.3.c">prog.3.c</a> is in a more artistic layout (a backwards S), has at least one
|
||||
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.2.c">prog.2.c</a> has more digraphs but I think no other significant differences.</p>
|
||||
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> is in a more artistic layout (a backwards S), has at least one
|
||||
additional obfuscation technique (see spoilers) but it also has more digraphs
|
||||
and as the judges said they feel that digraphs are dated so that’s probably why
|
||||
they chose the first layout. The <a href="prog.3-j.c">prog.3-j.c</a> version is
|
||||
<a href="prog.3.c">prog.3.c</a> with a shorter <code>J</code> macro.</p>
|
||||
they chose the first layout. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3-j.c">prog.3-j.c</a> version is
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/masterhttps://github.com/ioccc-src/temp-test-ioccc/blob/master//2020/ferguson1/prog.3.c">prog.3.c</a> with a shorter <code>J</code> macro.</p>
|
||||
<p>The prog.alt.c version is the one that allows for customising the bug colour and
|
||||
it’s used in both <a href="snake-colours.sh">snake-colours.sh</a> and <a href="play.sh">play.sh</a>. It also calls <code>erase()</code>
|
||||
first, clearing the screen, which the play.sh and snake-colours.sh scripts also
|
||||
@@ -815,7 +815,7 @@ programmers. I’m especially proud to win besides Dave Burton and Yusuke Endoh
|
||||
but Don Yang and Edward Giles too.</p>
|
||||
<p>But there are some others who I don’t remember like <a href="../../authors.html#Ilya_Kurdyukov">Ilya
|
||||
Kurdyukov</a>
|
||||
(who’s offered a lot of interesting thoughts on <a href="../ferguson1/prog.c">Snake</a> and
|
||||
(who’s offered a lot of interesting thoughts on <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">Snake</a> and
|
||||
who plans to have his own version after the entries are published), <a href="../../authors.html#Nathan_Otterness">Nathan
|
||||
Otterness</a>, <a href="../../authors.html#Nicholas_Carlini">Nicholas
|
||||
Carlini</a> (your entry is an absolutely brilliant
|
||||
@@ -825,7 +825,7 @@ list!) and <a href="../../authors.html#_tsoj">tsoj</a> too.</p>
|
||||
<p>Well done and congratulations to all of you again! Thank you for submitting the
|
||||
wonderful entries and I’m honoured to have my two entries beside yours!</p>
|
||||
<p>To Dave Burton I thank you for your wonderful comments as well as pointing out
|
||||
that even with <a href="prog.alt.c">prog.alt.c</a> it probably would be better to make use
|
||||
that even with <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.alt.c">prog.alt.c</a> it probably would be better to make use
|
||||
of the alt target instead of naming prog.c prog.alt.c. You’re quite right, I had
|
||||
thought of it but you brought it up so I could correct it. Much appreciated
|
||||
mate.</p>
|
||||
|
||||
+16
-16
@@ -1,4 +1,4 @@
|
||||
## To build:
|
||||
%%REPO_URL%%/## To build:
|
||||
|
||||
``` <!---sh-->
|
||||
make
|
||||
@@ -43,7 +43,7 @@ at once. See [Alternate code](#alternate-code) below.
|
||||
./recode -v
|
||||
```
|
||||
|
||||
**NOTE**: in [recode](recode.c) no spaces between options and option arguments
|
||||
**NOTE**: in [recode](%%REPO_URL%%/2020/ferguson2/recode.c) no spaces between options and option arguments
|
||||
are allowed.
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ do?
|
||||
|
||||
## Alternate code:
|
||||
|
||||
This version, [prog.alt.c](prog.alt.c), writes a character at a time, sleeping
|
||||
This version, [prog.alt.c](%%REPO_URL%%/2020/ferguson2/prog.alt.c), writes a character at a time, sleeping
|
||||
after each character, so that one can read it more easily (for longer output)
|
||||
and to make it a bit more like the real thing.
|
||||
|
||||
@@ -107,7 +107,7 @@ This code is an [enigma](https://youtu.be/ybkkiGtJmkM). Try to decode it!
|
||||
|
||||
There is a good deal of useful documentation that is provided with this entry:
|
||||
|
||||
* [enigma.1](enigma.1) - A useful man page for this entry. To render, try:
|
||||
* [enigma.1](%%REPO_URL%%/2020/ferguson2/enigma.1) - A useful man page for this entry. To render, try:
|
||||
|
||||
|
||||
``` <!---sh-->
|
||||
@@ -116,7 +116,7 @@ There is a good deal of useful documentation that is provided with this entry:
|
||||
|
||||
|
||||
* [recode.html][] (or [recode.html](recode.html) if reading on GitHub)
|
||||
- Some useful information about [recode.c](recode.c)
|
||||
- Some useful information about [recode.c](%%REPO_URL%%/2020/ferguson2/recode.c)
|
||||
|
||||
|
||||
* [chocolate-cake.html][] (or [chocolate-cake.html](chocolate-cake.html) if reading on GitHub)
|
||||
@@ -131,7 +131,7 @@ There is a good deal of useful documentation that is provided with this entry:
|
||||
## Author's remarks:
|
||||
|
||||
My remarks about my [Heer][] (army) and [Luftwaffe][] (air force) [Enigma
|
||||
machine](https://www.cryptomuseum.com/crypto/enigma/index.htm) [simulator](prog.c) for
|
||||
machine](https://www.cryptomuseum.com/crypto/enigma/index.htm) [simulator](%%REPO_URL%%/2020/ferguson2/prog.c) for
|
||||
the 27th IOCCC.
|
||||
|
||||
I want to dedicate this entry in part to the millions of poor souls that were
|
||||
@@ -405,7 +405,7 @@ Phew! The program redeemed itself after the test failure! :)
|
||||
is with some of the things I pasted in the other file and maybe others here
|
||||
too. Notice also how it showed the same output that my program gave it - `UUMMX`.)
|
||||
|
||||
What about the other [Morse code entry](../../1998/dorssel/dorssel.c)?
|
||||
What about the other [Morse code entry](%%REPO_URL%%/1998/dorssel/dorssel.c)?
|
||||
|
||||
``` <!---sh-->
|
||||
$ echo IOCCC | ./prog | ./dorssel
|
||||
@@ -433,7 +433,7 @@ It has a randomise mode and it can save/read the settings to/from a file to
|
||||
allow for duplicity (an archaic term for the state of being double but obviously
|
||||
for Enigma it has to also mean deceitful).
|
||||
|
||||
I recommend using this in a pipeline instead of the [simulator](prog.c) itself
|
||||
I recommend using this in a pipeline instead of the [simulator](%%REPO_URL%%/2020/ferguson2/prog.c) itself
|
||||
if you want to change the configuration of the simulator because it offers a
|
||||
much richer experience (and because you can reuse the configuration without
|
||||
having to type it out again every time).
|
||||
@@ -453,7 +453,7 @@ For examples using it (and a delicious challenge) see [recode.html][] (or
|
||||
</div>
|
||||
|
||||
The parser is in a sense rather rudimentary but allows for both interactive and
|
||||
automatic (e.g. via the [recode](recode.c) program) input. This does mean that
|
||||
automatic (e.g. via the [recode]((%%REPO_URL%%/2020/ferguson2recode.c) program) input. This does mean that
|
||||
something like the following can happen:
|
||||
|
||||
``` <!---sh-->
|
||||
@@ -499,7 +499,7 @@ is buffering at play I believe but it's useful for allowing the `recode` program
|
||||
to easily configure the Enigma machine. In the [recode.html](recode.html) file
|
||||
(or [recode.html](recode.html) if reading on GitHub) file I give a hint as to how
|
||||
this could be fixed but the caveat is it would necessitate a need for rewriting
|
||||
[recode.c](recode.c).
|
||||
[recode.c](%%REPO_URL%%/2020/ferguson2/recode.c).
|
||||
|
||||
There's another thing to be aware of and that's the way the ranges are enforced.
|
||||
There are five rotors which obviously are in C 0-4 but in 'natural language'
|
||||
@@ -508,7 +508,7 @@ There are five rotors which obviously are in C 0-4 but in 'natural language'
|
||||
There are two
|
||||
[reflectors](https://www.ciphermachinesandcryptology.com/en/enigmatech.htm#Reflector) and the
|
||||
same applies: in C 0-1 but in human it's 1-2 (technically these were reflectors B and C in
|
||||
the Enigma machine which I display by name in [recode.c](recode.c) just like
|
||||
the Enigma machine which I display by name in [recode.c](%%REPO_URL%%/2020/ferguson2/recode.c) just like
|
||||
with the rotors).
|
||||
|
||||
For more information see [recode.html][] (or [recode.html](recode.html) if viewing on
|
||||
@@ -531,7 +531,7 @@ accomplished and made use of! :)
|
||||
</div>
|
||||
|
||||
The layout of [recode.c][] isn't too significant (but see below) but I want to
|
||||
mention [prog.c](prog.c) especially:
|
||||
mention [prog.c](%%REPO_URL%%/2020/ferguson2/prog.c) especially:
|
||||
|
||||
I did think of a more artistic layout but
|
||||
[reflecting](https://www.ciphermachinesandcryptology.com/en/enigmatech.htm#Reflector)
|
||||
@@ -587,7 +587,7 @@ The file [obfuscation.key][] is the key to decipher/encipher
|
||||
For the lazy [obfuscation.html](obfuscation.html) has the deciphered version. I am afraid I'm not
|
||||
so inclined to do that for the cake recipe: the idea there is to make it a fun
|
||||
exercise that when solved unlocks a wonderful double-layered chocolate fudge
|
||||
cake recipe. But given that my ['Don't tread on me'](../ferguson1) award entry
|
||||
cake recipe. But given that my ['Don't tread on me'](../ferguson1/index.html) award entry
|
||||
also has the [recipe](../ferguson1/chocolate-cake.html)
|
||||
([ferguson1/chocolate-cake.html](../ferguson1/chocolate-cake.html) if reading on
|
||||
GitHub), not enciphered, one might just go there instead. Still it's a fun way
|
||||
@@ -639,7 +639,7 @@ can at least have the output played in Morse code as the Germans did; I think
|
||||
that's really cool (I think it's really cool even if there's a bug in it). That
|
||||
it pays homage to that (and another) entry is a bonus here.
|
||||
|
||||
* The [simulator](prog.c) doesn't report errors but tries to gracefully deal
|
||||
* The [simulator](%%REPO_URL%%/2020/ferguson2/prog.c) doesn't report errors but tries to gracefully deal
|
||||
with them: if one chooses a value out of range it moves it into the range (if >
|
||||
the max then the max, if < min then the min). If invalid chars are input for the
|
||||
plugboard pairs then it's not added to the plugboard etc.
|
||||
@@ -798,7 +798,7 @@ rotor selection 'screen'. Then use the arrow buttons above each rotor to set
|
||||
from left to right B, B and C. After this you can type your message in the input
|
||||
field and watch the wiring of the rotors change and show the path it takes.
|
||||
|
||||
If I made use of the Enigma code in the [recode.c](recode.c) program I would
|
||||
If I made use of the Enigma code in the [recode.c](%%REPO_URL%%/2020/ferguson2/recode.c) program I would
|
||||
maybe consider doing something like that but I intentionally do not use it
|
||||
there: as cool as it might be it would give a better idea of how the algorithm
|
||||
works (unless I were to make it just as obscure as I do in prog.c but that's
|
||||
@@ -886,7 +886,7 @@ but Don Yang and Edward Giles too.
|
||||
|
||||
But there are some others who I don't remember like [Ilya
|
||||
Kurdyukov](../../authors.html#Ilya_Kurdyukov)
|
||||
(who's offered a lot of interesting thoughts on [Snake](../ferguson1/prog.c) and
|
||||
(who's offered a lot of interesting thoughts on [Snake](%%REPO_URL%%/2020/ferguson1/prog.c) and
|
||||
who plans to have his own version after the entries are published), [Nathan
|
||||
Otterness](../../authors.html#Nathan_Otterness), [Nicholas
|
||||
Carlini](../../authors.html#Nicholas_Carlini) (your entry is an absolutely brilliant
|
||||
|
||||
+16
-16
@@ -377,7 +377,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: 2020/ferguson2/README.md -->
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<p>https://github.com/ioccc-src/temp-test-ioccc/blob/master/## To build:</p>
|
||||
<pre><code> make</code></pre>
|
||||
<p>The author provided alternate code that prints the output one character at a
|
||||
time to make it a bit more like the real thing in that it isn’t dumped out all
|
||||
@@ -412,7 +412,7 @@ at once. See <a href="#alternate-code">Alternate code</a> below.</p>
|
||||
|
||||
# show Enigma machine settings after selection / generation:
|
||||
./recode -v</code></pre>
|
||||
<p><strong>NOTE</strong>: in <a href="recode.c">recode</a> no spaces between options and option arguments
|
||||
<p><strong>NOTE</strong>: in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/recode.c">recode</a> no spaces between options and option arguments
|
||||
are allowed.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
@@ -421,7 +421,7 @@ are allowed.</p>
|
||||
echo | ./recode -v</code></pre>
|
||||
<p>do?</p>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>This version, <a href="prog.alt.c">prog.alt.c</a>, writes a character at a time, sleeping
|
||||
<p>This version, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.alt.c">prog.alt.c</a>, writes a character at a time, sleeping
|
||||
after each character, so that one can read it more easily (for longer output)
|
||||
and to make it a bit more like the real thing.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
@@ -440,13 +440,13 @@ out! Can you figure out why this works this way?</p>
|
||||
<p>This code is an <a href="https://youtu.be/ybkkiGtJmkM">enigma</a>. Try to decode it!</p>
|
||||
<p>There is a good deal of useful documentation that is provided with this entry:</p>
|
||||
<ul>
|
||||
<li><a href="enigma.1">enigma.1</a> - A useful man page for this entry. To render, try:</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/enigma.1">enigma.1</a> - A useful man page for this entry. To render, try:</li>
|
||||
</ul>
|
||||
<pre><code> man ./enigma.1</code></pre>
|
||||
<ul>
|
||||
<li><a href="recode.html">recode.html</a> (or <a href="recode.html">recode.html</a> if reading on GitHub)
|
||||
<ul>
|
||||
<li>Some useful information about <a href="recode.c">recode.c</a></li>
|
||||
<li>Some useful information about <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/recode.c">recode.c</a></li>
|
||||
</ul></li>
|
||||
<li><a href="chocolate-cake.html">chocolate-cake.html</a> (or <a href="chocolate-cake.html">chocolate-cake.html</a> if reading on GitHub)
|
||||
<ul>
|
||||
@@ -456,7 +456,7 @@ out! Can you figure out why this works this way?</p>
|
||||
</ul>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>My remarks about my <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 force) <a href="https://www.cryptomuseum.com/crypto/enigma/index.htm">Enigma
|
||||
machine</a> <a href="prog.c">simulator</a> for
|
||||
machine</a> <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c">simulator</a> for
|
||||
the 27th IOCCC.</p>
|
||||
<p>I want to dedicate this entry in part to the millions of poor souls that were
|
||||
lost during the tragedy that is the <a href="https://en.wikipedia.org/wiki/World_War_II">Second World
|
||||
@@ -653,7 +653,7 @@ idea anyway. Neither do I know if the original transcoding is correct.</p>
|
||||
<p>(Technically above it didn’t print a newline after the output and this is how it
|
||||
is with some of the things I pasted in the other file and maybe others here
|
||||
too. Notice also how it showed the same output that my program gave it - <code>UUMMX</code>.)</p>
|
||||
<p>What about the other <a href="../../1998/dorssel/dorssel.c">Morse code entry</a>?</p>
|
||||
<p>What about the other <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/dorssel/dorssel.c">Morse code entry</a>?</p>
|
||||
<pre><code> $ echo IOCCC | ./prog | ./dorssel
|
||||
..- ..- -- -- -..-</code></pre>
|
||||
<div id="recode">
|
||||
@@ -673,7 +673,7 @@ alternatively you can specify a file to read in.</p>
|
||||
<p>It has a randomise mode and it can save/read the settings to/from a file to
|
||||
allow for duplicity (an archaic term for the state of being double but obviously
|
||||
for Enigma it has to also mean deceitful).</p>
|
||||
<p>I recommend using this in a pipeline instead of the <a href="prog.c">simulator</a> itself
|
||||
<p>I recommend using this in a pipeline instead of the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c">simulator</a> itself
|
||||
if you want to change the configuration of the simulator because it offers a
|
||||
much richer experience (and because you can reuse the configuration without
|
||||
having to type it out again every time).</p>
|
||||
@@ -688,7 +688,7 @@ make it more flexible by a wrapper program.</p>
|
||||
<h3 id="a-parser-subtlety-that-could-cause-confusion">A parser subtlety that could cause confusion</h3>
|
||||
</div>
|
||||
<p>The parser is in a sense rather rudimentary but allows for both interactive and
|
||||
automatic (e.g. via the <a href="recode.c">recode</a> program) input. This does mean that
|
||||
automatic (e.g. via the <a href="(https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2recode.c)%20program">recode</a> input. This does mean that
|
||||
something like the following can happen:</p>
|
||||
<pre><code> $ ./prog -
|
||||
Ring 1: 1AB
|
||||
@@ -728,14 +728,14 @@ is buffering at play I believe but it’s useful for allowing the <code>recode</
|
||||
to easily configure the Enigma machine. In the <a href="recode.html">recode.html</a> file
|
||||
(or <a href="recode.html">recode.html</a> if reading on GitHub) file I give a hint as to how
|
||||
this could be fixed but the caveat is it would necessitate a need for rewriting
|
||||
<a href="recode.c">recode.c</a>.</p>
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/recode.c">recode.c</a>.</p>
|
||||
<p>There’s another thing to be aware of and that’s the way the ranges are enforced.
|
||||
There are five rotors which obviously are in C 0-4 but in ‘natural language’
|
||||
1-5 (they were labelled I, II, III, IV and V though).</p>
|
||||
<p>There are two
|
||||
<a href="https://www.ciphermachinesandcryptology.com/en/enigmatech.htm#Reflector">reflectors</a> and the
|
||||
same applies: in C 0-1 but in human it’s 1-2 (technically these were reflectors B and C in
|
||||
the Enigma machine which I display by name in <a href="recode.c">recode.c</a> just like
|
||||
the Enigma machine which I display by name in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/recode.c">recode.c</a> just like
|
||||
with the rotors).</p>
|
||||
<p>For more information see <a href="recode.html">recode.html</a> (or <a href="recode.html">recode.html</a> if viewing on
|
||||
GitHub).</p>
|
||||
@@ -751,7 +751,7 @@ accomplished and made use of! :)</p>
|
||||
<h3 id="on-the-source-code-layout">On the source code layout</h3>
|
||||
</div>
|
||||
<p>The layout of <a href="recode.c">recode.c</a> isn’t too significant (but see below) but I want to
|
||||
mention <a href="prog.c">prog.c</a> especially:</p>
|
||||
mention <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c">prog.c</a> especially:</p>
|
||||
<p>I did think of a more artistic layout but
|
||||
<a href="https://www.ciphermachinesandcryptology.com/en/enigmatech.htm#Reflector">reflecting</a>
|
||||
on it I think that the blankness of it can be another way of honouring all the
|
||||
@@ -784,7 +784,7 @@ has some of the ways I think this entry is obfuscated. To decipher try:</p>
|
||||
<p>For the lazy <a href="obfuscation.html">obfuscation.html</a> has the deciphered version. I am afraid I’m not
|
||||
so inclined to do that for the cake recipe: the idea there is to make it a fun
|
||||
exercise that when solved unlocks a wonderful double-layered chocolate fudge
|
||||
cake recipe. But given that my <a href="../ferguson1">‘Don’t tread on me’</a> award entry
|
||||
cake recipe. But given that my <a href="../ferguson1/index.html">‘Don’t tread on me’</a> award entry
|
||||
also has the <a href="../ferguson1/chocolate-cake.html">recipe</a>
|
||||
(<a href="../ferguson1/chocolate-cake.html">ferguson1/chocolate-cake.html</a> if reading on
|
||||
GitHub), not enciphered, one might just go there instead. Still it’s a fun way
|
||||
@@ -825,7 +825,7 @@ processes each letter - but with the <a href="../../2014/vik/index.html">2014 Mo
|
||||
can at least have the output played in Morse code as the Germans did; I think
|
||||
that’s really cool (I think it’s really cool even if there’s a bug in it). That
|
||||
it pays homage to that (and another) entry is a bonus here.</p></li>
|
||||
<li><p>The <a href="prog.c">simulator</a> doesn’t report errors but tries to gracefully deal
|
||||
<li><p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c">simulator</a> doesn’t report errors but tries to gracefully deal
|
||||
with them: if one chooses a value out of range it moves it into the range (if >
|
||||
the max then the max, if < min then the min). If invalid chars are input for the
|
||||
plugboard pairs then it’s not added to the plugboard etc.</p></li>
|
||||
@@ -949,7 +949,7 @@ centre, right). To do this click the button at the top right that looks like:</p
|
||||
rotor selection ‘screen’. Then use the arrow buttons above each rotor to set
|
||||
from left to right B, B and C. After this you can type your message in the input
|
||||
field and watch the wiring of the rotors change and show the path it takes.</p>
|
||||
<p>If I made use of the Enigma code in the <a href="recode.c">recode.c</a> program I would
|
||||
<p>If I made use of the Enigma code in the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/recode.c">recode.c</a> program I would
|
||||
maybe consider doing something like that but I intentionally do not use it
|
||||
there: as cool as it might be it would give a better idea of how the algorithm
|
||||
works (unless I were to make it just as obscure as I do in prog.c but that’s
|
||||
@@ -1003,7 +1003,7 @@ programmers. I’m especially proud to win besides Dave Burton and Yusuke Endoh
|
||||
but Don Yang and Edward Giles too.</p>
|
||||
<p>But there are some others who I don’t remember like <a href="../../authors.html#Ilya_Kurdyukov">Ilya
|
||||
Kurdyukov</a>
|
||||
(who’s offered a lot of interesting thoughts on <a href="../ferguson1/prog.c">Snake</a> and
|
||||
(who’s offered a lot of interesting thoughts on <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">Snake</a> and
|
||||
who plans to have his own version after the entries are published), <a href="../../authors.html#Nathan_Otterness">Nathan
|
||||
Otterness</a>, <a href="../../authors.html#Nicholas_Carlini">Nicholas
|
||||
Carlini</a> (your entry is an absolutely brilliant
|
||||
|
||||
@@ -362,7 +362,7 @@
|
||||
<h1 id="the-recode-configurator-documentation-and-a-fun-way-to-explore-my-2020-ioccc-enigma-simulator">The recode configurator documentation (and a fun way to explore my 2020 IOCCC Enigma simulator)</h1>
|
||||
<p>N.B. At the end of this file I have given a fun exercise that can be used to
|
||||
explore my <a href="https://www.cryptomuseum.com/crypto/enigma/index.htm">Enigma machine</a>
|
||||
<a href="prog.c">simulator</a>. I really encourage you to do this but of course you don’t
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c">simulator</a>. I really encourage you to do this but of course you don’t
|
||||
have to if you don’t wish to.</p>
|
||||
<div id="toc">
|
||||
<ul>
|
||||
@@ -438,8 +438,8 @@ if you don’t give the option to read in a file for input.</p>
|
||||
Plugboard pair #09: RU
|
||||
Plugboard pair #10: VG
|
||||
1WX5AK4RE1XEHJSAPYCIZBWDQNRUVGIOCCC</code></pre>
|
||||
<p>Though you won’t find some of those strings in <a href="recode.c">recode.c</a> or
|
||||
<a href="prog.c">prog.c</a>. Yes the <code>WAR</code> for the Ringstellung (Ring settings) is an
|
||||
<p>Though you won’t find some of those strings in [recode.c]((https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/recode.c) or
|
||||
[prog.c]((https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c). Yes the <code>WAR</code> for the Ringstellung (Ring settings) is an
|
||||
amusing coincidence <em>but it really did happen!</em></p>
|
||||
<p>As for <code>-f</code> the contents would be output with the settings e.g. to pipe to
|
||||
<code>prog</code> itself (as if you redirected the file contents to the Enigma machine for
|
||||
@@ -565,7 +565,7 @@ pair</a>; this can be done in
|
||||
a number of ways but two dots is one. Notice also that it’s in a different order
|
||||
than the simulator: because with the size restrictions on my entry I saved bytes
|
||||
by using the same loop where I could. It just felt more natural to have them
|
||||
grouped together in a configurator for the <a href="prog.c">simulator</a>.</p>
|
||||
grouped together in a configurator for the [simulator]((https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson2/prog.c).</p>
|
||||
<pre><code> $ echo 1AA2AA3AA2ABCD..EFGHIJKLMNOPQRIOCCC | ./prog - 2>/dev/null
|
||||
HQNVO
|
||||
$ echo 1AA2AA3AA2ABCD..EFGHIJKLMNOPQRIOCCC | ./prog - 2>/dev/null | echo 1AA2AA3AA2ABCD..EFGHIJKLMNOPQRHQNVO | ./prog - 2>/dev/null
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
N.B. At the end of this file I have given a fun exercise that can be used to
|
||||
explore my [Enigma machine](https://www.cryptomuseum.com/crypto/enigma/index.htm)
|
||||
[simulator](prog.c). I really encourage you to do this but of course you don't
|
||||
[simulator](%%REPO_URL%%/2020/ferguson2/prog.c). I really encourage you to do this but of course you don't
|
||||
have to if you don't wish to.
|
||||
|
||||
|
||||
@@ -97,8 +97,8 @@ if you don't give the option to read in a file for input.
|
||||
1WX5AK4RE1XEHJSAPYCIZBWDQNRUVGIOCCC
|
||||
```
|
||||
|
||||
Though you won't find some of those strings in [recode.c](recode.c) or
|
||||
[prog.c](prog.c). Yes the `WAR` for the Ringstellung (Ring settings) is an
|
||||
Though you won't find some of those strings in [recode.c]((%%REPO_URL%%/2020/ferguson2/recode.c) or
|
||||
[prog.c]((%%REPO_URL%%/2020/ferguson2/prog.c). Yes the `WAR` for the Ringstellung (Ring settings) is an
|
||||
amusing coincidence *but it really did happen!*
|
||||
|
||||
As for `-f` the contents would be output with the settings e.g. to pipe to
|
||||
@@ -265,7 +265,7 @@ pair](https://www.cryptomuseum.com/crypto/enigma/i/sb.htm); this can be done in
|
||||
a number of ways but two dots is one. Notice also that it's in a different order
|
||||
than the simulator: because with the size restrictions on my entry I saved bytes
|
||||
by using the same loop where I could. It just felt more natural to have them
|
||||
grouped together in a configurator for the [simulator](prog.c).
|
||||
grouped together in a configurator for the [simulator]((%%REPO_URL%%/2020/ferguson2/prog.c).
|
||||
|
||||
``` <!---sh-->
|
||||
$ echo 1AA2AA3AA2ABCD..EFGHIJKLMNOPQRIOCCC | ./prog - 2>/dev/null
|
||||
|
||||
@@ -41,7 +41,7 @@ will be converted to the DTMF sound!
|
||||
./prog 867-5309 > jenny.wav
|
||||
```
|
||||
|
||||
If the script [try.sh](try.sh) did not play a WAV file, it means you do not have
|
||||
If the script [try.sh](%%REPO_URL%%/2020/giles/try.sh) did not play a WAV file, it means you do not have
|
||||
SoX installed; see [FAQ 3.10: How do I compile and use an IOCCC entry that
|
||||
requires sound?](../../faq.html#sox)). In this case install it and try it again or
|
||||
play the files `jenny.wav` and `ioccc28.wav` in a program that can play WAV
|
||||
|
||||
@@ -398,7 +398,7 @@ will be converted to the DTMF sound!</p>
|
||||
|
||||
# See
|
||||
./prog 867-5309 > jenny.wav</code></pre>
|
||||
<p>If the script <a href="try.sh">try.sh</a> did not play a WAV file, it means you do not have
|
||||
<p>If the script <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/giles/try.sh">try.sh</a> did not play a WAV file, it means you do not have
|
||||
SoX installed; see <a href="../../faq.html#sox">FAQ 3.10: How do I compile and use an IOCCC entry that
|
||||
requires sound?</a>). In this case install it and try it again or
|
||||
play the files <code>jenny.wav</code> and <code>ioccc28.wav</code> in a program that can play WAV
|
||||
|
||||
@@ -32,19 +32,19 @@ code](#alternate-code) below for more details.
|
||||
There are a number of alternate versions for this program, some in C and some in
|
||||
assembly.
|
||||
|
||||
The file [prog.alt.c](prog.alt.c) is smaller and does not contain any
|
||||
The file [prog.alt.c](%%REPO_URL%%/2020/kurdyukov1/prog.alt.c) is smaller and does not contain any
|
||||
headers or any workaround for WIN32 based platforms.
|
||||
|
||||
The file [prog.extra.c](prog.extra.c) has a number of layouts including some for
|
||||
The file [prog.extra.c](%%REPO_URL%%/2020/kurdyukov1/prog.extra.c) has a number of layouts including some for
|
||||
different social media profile covers as well as different shapes.
|
||||
|
||||
The files [prog.x86_64.asm](prog.x86_64.asm) and [prog.x86.asm](prog.x86.asm)
|
||||
The files [prog.x86_64.asm](%%REPO_URL%%/2020/kurdyukov1/prog.x86_64.asm) and [prog.x86.asm](%%REPO_URL%%/2020/kurdyukov1/prog.x86.asm)
|
||||
are the program in assembly for x86_64 linux and x86 linux respectively.
|
||||
|
||||
|
||||
### Alternate build:
|
||||
|
||||
To build [prog.alt.c](prog.alt.c):
|
||||
To build [prog.alt.c](%%REPO_URL%%/2020/kurdyukov1/prog.alt.c):
|
||||
|
||||
``` <!---sh-->
|
||||
make alt
|
||||
@@ -100,17 +100,17 @@ under mingw64), otherwise the hashes can be incorrect.
|
||||
|
||||
### Bonus
|
||||
|
||||
- [prog.extra.c](prog.extra.c) is the same with the sine function (so smaller),
|
||||
- [prog.extra.c](%%REPO_URL%%/2020/kurdyukov1/prog.extra.c) is the same with the sine function (so smaller),
|
||||
and in different shapes.
|
||||
|
||||
- [prog.x86_64.asm](prog.x86_64.asm) contains the same program, but written in
|
||||
- [prog.x86_64.asm](%%REPO_URL%%/2020/kurdyukov1/prog.x86_64.asm) contains the same program, but written in
|
||||
assembly for x86_64 Linux, for the sake of smaller executable size which is 500
|
||||
bytes long (where 120 is for the ELF headers) after compilation. Algorithm
|
||||
details is slightly different (like constants packing), just to make smaller
|
||||
binary code. It's interesting to compare density of binary code and obfuscated
|
||||
C.
|
||||
|
||||
- [prog.x86.asm](prog.x86.asm) is for x86, although the headers are smaller, but
|
||||
- [prog.x86.asm](%%REPO_URL%%/2020/kurdyukov1/prog.x86.asm) is for x86, although the headers are smaller, but
|
||||
the binary code is larger due to fewer registers and lack of 64-bit multiply.
|
||||
|
||||
<!--
|
||||
|
||||
@@ -393,14 +393,14 @@ code</a> below for more details.</p>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>There are a number of alternate versions for this program, some in C and some in
|
||||
assembly.</p>
|
||||
<p>The file <a href="prog.alt.c">prog.alt.c</a> is smaller and does not contain any
|
||||
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.alt.c">prog.alt.c</a> is smaller and does not contain any
|
||||
headers or any workaround for WIN32 based platforms.</p>
|
||||
<p>The file <a href="prog.extra.c">prog.extra.c</a> has a number of layouts including some for
|
||||
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.extra.c">prog.extra.c</a> has a number of layouts including some for
|
||||
different social media profile covers as well as different shapes.</p>
|
||||
<p>The files <a href="prog.x86_64.asm">prog.x86_64.asm</a> and <a href="prog.x86.asm">prog.x86.asm</a>
|
||||
<p>The files <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.x86_64.asm">prog.x86_64.asm</a> and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.x86.asm">prog.x86.asm</a>
|
||||
are the program in assembly for x86_64 linux and x86 linux respectively.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<p>To build <a href="prog.alt.c">prog.alt.c</a>:</p>
|
||||
<p>To build <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.alt.c">prog.alt.c</a>:</p>
|
||||
<pre><code> make alt</code></pre>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>prog.alt</code> as you would <code>prog</code> above.</p>
|
||||
@@ -435,9 +435,9 @@ BE or not 32/64) to try it.</p>
|
||||
under mingw64), otherwise the hashes can be incorrect.</p>
|
||||
<h3 id="bonus">Bonus</h3>
|
||||
<ul>
|
||||
<li><p><a href="prog.extra.c">prog.extra.c</a> is the same with the sine function (so smaller),
|
||||
<li><p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.extra.c">prog.extra.c</a> is the same with the sine function (so smaller),
|
||||
and in different shapes.</p></li>
|
||||
<li><p><a href="prog.x86_64.asm">prog.x86_64.asm</a> contains the same program, but written in
|
||||
<li><p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.x86_64.asm">prog.x86_64.asm</a> contains the same program, but written in
|
||||
assembly for x86_64 Linux, for the sake of smaller executable size which is 500
|
||||
bytes long (where 120 is for the ELF headers) after compilation. Algorithm
|
||||
details is slightly different (like constants packing), just to make smaller
|
||||
@@ -447,7 +447,7 @@ binary code. It’s interesting to compare density of binary code and obfuscated
|
||||
<li></li>
|
||||
</ol>
|
||||
<ul>
|
||||
<li><a href="prog.x86.asm">prog.x86.asm</a> is for x86, although the headers are smaller, but
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov1/prog.x86.asm">prog.x86.asm</a> is for x86, although the headers are smaller, but
|
||||
the binary code is larger due to fewer registers and lack of 64-bit multiply.</li>
|
||||
</ul>
|
||||
<!--
|
||||
|
||||
@@ -143,7 +143,7 @@ For instance after running the command suggested by the judges:
|
||||
convert -delay 10 -dither none -loop 0 $(find . -maxdepth 1 -type f -name '*jpg' | sort -V) $(find . -maxdepth 1 -type f -name '*jpg' | sort -rV) +map out.gif
|
||||
```
|
||||
|
||||
NOTE: the above is done in the [try.sh](try.sh) script.
|
||||
NOTE: the above is done in the [try.sh](%%REPO_URL%%/2020/kurdyukov2/try.sh) script.
|
||||
|
||||
Also provided `makegif.sh` to aid with GIF creation.
|
||||
|
||||
|
||||
@@ -444,7 +444,7 @@ vertically to get the minimum difference.</p>
|
||||
<p>You can use this command to make a GIF from output images (uses ImageMagick).
|
||||
For instance after running the command suggested by the judges:</p>
|
||||
<pre><code> convert -delay 10 -dither none -loop 0 $(find . -maxdepth 1 -type f -name '*jpg' | sort -V) $(find . -maxdepth 1 -type f -name '*jpg' | sort -rV) +map out.gif</code></pre>
|
||||
<p>NOTE: the above is done in the <a href="try.sh">try.sh</a> script.</p>
|
||||
<p>NOTE: the above is done in the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov2/try.sh">try.sh</a> script.</p>
|
||||
<p>Also provided <code>makegif.sh</code> to aid with GIF creation.</p>
|
||||
<!--
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ code](#alternate-code) below.
|
||||
|
||||
## Alternate code:
|
||||
|
||||
The alternate version, [prog.alt.c](prog.alt.c), has the main code as a macro.
|
||||
The alternate version, [prog.alt.c](%%REPO_URL%%/2020/kurdyukov3/prog.alt.c), has the main code as a macro.
|
||||
|
||||
|
||||
### Alternate build:
|
||||
|
||||
@@ -386,7 +386,7 @@ code</a> below.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>The alternate version, <a href="prog.alt.c">prog.alt.c</a>, has the main code as a macro.</p>
|
||||
<p>The alternate version, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/kurdyukov3/prog.alt.c">prog.alt.c</a>, has the main code as a macro.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<pre><code> make alt</code></pre>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
|
||||
@@ -30,7 +30,7 @@ context length decreases:
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
We were able to [write our own program](rand.c) performing the same trick using
|
||||
We were able to [write our own program](%%REPO_URL%%/2020/kurdyukov4/rand.c) performing the same trick using
|
||||
the (still non-standard, for some reason) library function `memmem()`, but that
|
||||
way it works too fast regardless of the context length, and it's much less fun.
|
||||
|
||||
|
||||
@@ -389,7 +389,7 @@ context length decreases:</p>
|
||||
Too many identical strings if the context length is small.
|
||||
-- Author</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>We were able to <a href="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
|
||||
way it works too fast regardless of the context length, and it’s much less fun.</p>
|
||||
<p>The author wrote in reply:</p>
|
||||
|
||||
@@ -66,7 +66,7 @@ I found [here](http://www.kunstderfuge.com/beethoven/variae.htm#Symphonies).
|
||||
However, as discussed under the [Limitations](#limitations) section below, not
|
||||
all of them work correctly. I will admit to having used
|
||||
`http://www.kunstderfuge.com/-/midi.asp?file=beethoven/symphony_6_1_(c)cvikl.mid`
|
||||
for most of my testing (see [cvikl.mid](cvikl.mid)).
|
||||
for most of my testing (see [cvikl.mid](%%REPO_URL%%/2020/otterness/cvikl.mid)).
|
||||
|
||||
|
||||
### Usage
|
||||
|
||||
@@ -412,7 +412,7 @@ I found <a href="http://www.kunstderfuge.com/beethoven/variae.htm#Symphonies">he
|
||||
However, as discussed under the <a href="#limitations">Limitations</a> section below, not
|
||||
all of them work correctly. I will admit to having used
|
||||
<code>http://www.kunstderfuge.com/-/midi.asp?file=beethoven/symphony_6_1_(c)cvikl.mid</code>
|
||||
for most of my testing (see <a href="cvikl.mid">cvikl.mid</a>).</p>
|
||||
for most of my testing (see <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/otterness/cvikl.mid">cvikl.mid</a>).</p>
|
||||
<h3 id="usage">Usage</h3>
|
||||
<p>Compile the program using the following command (I tested this using both
|
||||
<code>clang</code> and <code>gcc</code>):</p>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
```
|
||||
|
||||
|
||||
The author provided the file [cppp.cc](cppp.cc) which can preprocess the
|
||||
The author provided the file [cppp.cc](%%REPO_URL%%/2020/yang/cppp.cc) which can preprocess the
|
||||
generated output to make them more acceptable to typical compilers. To build:
|
||||
|
||||
``` <!---sh-->
|
||||
@@ -139,7 +139,7 @@ above:
|
||||
|
||||
For people eager to encode large files, an extra utility has been packaged
|
||||
with this entry to preprocess the generated output to make them more
|
||||
acceptable to typical compilers. View the [cppp.cc](cppp.cc) source and
|
||||
acceptable to typical compilers. View the [cppp.cc](%%REPO_URL%%/2020/yang/cppp.cc) source and
|
||||
then compile it with a c++ compiler of your choice.
|
||||
|
||||
<!--
|
||||
|
||||
@@ -383,7 +383,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<pre><code> ./prog [PIN] < input.txt > output.c</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<p>The author provided the file <a href="cppp.cc">cppp.cc</a> which can preprocess the
|
||||
<p>The author provided the file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/yang/cppp.cc">cppp.cc</a> which can preprocess the
|
||||
generated output to make them more acceptable to typical compilers. To build:</p>
|
||||
<pre><code> make cppp</code></pre>
|
||||
<p>See the author’s remarks for more details.</p>
|
||||
@@ -466,7 +466,7 @@ for large files. gcc 9.2.0 and above may crash with large files.</li>
|
||||
</ul>
|
||||
<p>For people eager to encode large files, an extra utility has been packaged
|
||||
with this entry to preprocess the generated output to make them more
|
||||
acceptable to typical compilers. View the <a href="cppp.cc">cppp.cc</a> source and
|
||||
acceptable to typical compilers. View the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/yang/cppp.cc">cppp.cc</a> source and
|
||||
then compile it with a c++ compiler of your choice.</p>
|
||||
<!--
|
||||
|
||||
|
||||
Reference in new issue
Block a user