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:
1 parent
8cab690d66
commit
5d9ad2012a
10 files changed
+304
-21
No files matched your search
@@ -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>
|
||||
|
||||
Reference in new issue
Block a user