Add maxed out goto (149) version to 2024/ferguson1

For practical reasons (and to make the judges weep and curse slightly
less) I only submitted code that only had 134 gotos. I'm a horrible
monster, I know, but I have decided to present this alt version I have
which takes the 134 gotos to 149 and which still fits in rule 2 limits.
If I am going to ruin goto I might as well do it properly, despite
Landon telling me that the 134 might be called near limitless. Now it is
limitless. Some of the very few remaining blocks of code that were where
they belong were moved away from their proper place but other changes
were made too.

Added gotos.c.txt - kind of like the judges' video where it shows all
the gotos only here it is just a text file of only the gotos (after
clang-format like they had). This is of prog.c, not prog.goto.max.c.

Renamed gotos.txt to jumps.txt as it's not just gotos (though most of it
is).

Updated .gitignore and Makefile.

Updated .entry.json and rebuilt index.html as well as obfuscation.html
(obfuscation.md was also updated).
This commit is contained in:
Cody Boone Ferguson committed 2025-08-06 11:00:02 -07:00
1 parent 8cab690d66
commit 5d9ad2012a
10 files changed
+304 -21

No files matched your search

+18 -8
View File
@@ -2450,11 +2450,14 @@ might be one that the compiler does not trigger a dead code warning on. It
really does not seem to be dead (it’s quite sneaky).</p>
<p>I could be wrong on whether this is one the compiler missed though: it’s hard to
follow all the <code>goto</code>s. As you find out in <a href="obfuscation.html">obfuscation.html</a> it’s
134 after pre-processing! Yes I might be mad. But then again I might just be
the Devil. Who knows? What I do know is code that is meant to be reached is
reached! Yes I’ve played it many times. Some code I made dead seemed totally
useless but why not add to confusion? If that includes one that the compiler
misses that’s even better!</p>
134 after pre-processing! One of the alt versions I supplied is 131 before the
cpp and 149 after. I did not submit that for practical reasons but I kind of
wish I had, now that it won. Nonetheless 134 is already way too many. 149 is
much worse.</p>
<p>Yes I might be mad. But then again I might just be the Devil. Who knows? What I
do know is code that is meant to be reached is reached! Yes I’ve played it many
times. Some code I made dead seemed totally useless but why not add to
confusion? If that includes one that the compiler misses that’s even better!</p>
<p>It is <strong>NOT</strong> a bug where in the inner switch there is a missing case. That is
done because I do not want it to always trigger. That is the one that is in a
sense polymorphic. One of the events is actually immediate death, in particular
@@ -2897,7 +2900,12 @@ I mentioned in <a href="obfuscation.html">obfuscation.html</a> (and some briefly
the abuse of 116 <code>goto</code>s, more than the BASIC game. 134 when pre-processed. But
let’s be honest, or 134 for a small C program is too many but to be only six
fewer than a larger BASIC program? That is hard to fathom. Not that 116 is not
too many for larger programs…or one goto, for that matter.</p>
too many for larger programs…or one goto, for that matter. As noted elsewhere,
an alt version has 131/149 gotos, before/after the cpp. I did not make it the
main version when submitting because I did not want to make the judges weep and
curse any more than they already had to (besides, it can’t be 4666 bytes with
the extra <code>goto</code>s) but now that it’s in I have no qualms about providing it as
alt code: if I am going to ruin <code>goto</code>s I might as well do it properly.</p>
<p>Some things are clear about the program from visual inspection:</p>
<ul>
<li>it is clear the program does print SOME THINGS (but it is <strong>NOT clear WHAT</strong>
@@ -3091,7 +3099,7 @@ I’m a dragon. I’m not a dragon. I have a secret for you: dragons don’t exi
Except on the Oregon Trail.</p>
<p>I was right too: the entire game is worse, far far worse. After this won I did a
full sequence. This is from start to finish and I include it for your amusement
(see <a href="gotos.txt">gotos.txt</a> for the line changes including calls to prog.c
(see <a href="jumps.txt">jumps.txt</a> for the line changes including calls to prog.c
functions). Or horror. There are a few times where the line
is the same but that only shows how very often the line changes. It is a total
of <strong>985</strong> (!) changes, counting function calls, and <strong>776</strong> (!) excluding
@@ -3708,6 +3716,7 @@ helps you appreciate the careful design even more.<a href="#fnref2" class="footn
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/prog.c">prog.c</a> - entry source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/prog.alt.c">prog.alt.c</a> - alternate source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/prog.goto.max.c">prog.goto.max.c</a> - entry source code with maxed out gotos</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/prog.orig.c">prog.orig.c</a> - original source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/commented.c">commented.c</a> - commented version of the game</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/addpadding.c">addpadding.c</a> - add padding from data source files</li>
@@ -3716,7 +3725,8 @@ helps you appreciate the careful design even more.<a href="#fnref2" class="footn
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/byteread.c">byteread.c</a> - prints out the strings without locations</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/bytetest.c">bytetest.c</a> - prints every string extracted from data</li>
<li><a href="deobfuscation.html">deobfuscation.html</a> - hints on how to deobfuscate</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/gotos.txt">gotos.txt</a> - text file showing all the line changes in a run</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/gotos.c.txt">gotos.c.txt</a> - text file showing only the gotos in the entry code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/jumps.txt">jumps.txt</a> - text file showing all the line changes in a single run</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/lencount.c">lencount.c</a> - counts strings and reports longest one</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2024/ferguson1/mbcheck.c">mbcheck.c</a> - show location of multibyte characters</li>
<li><a href="obfuscation.html">obfuscation.html</a> - obfuscation information</li>