Finish format/typo checks in next/

I was asked to actually make corrections in the rules and guidelines and
to make sure that the look and feel seems good. The typos and other
features will be added back later. Some things worth noting below.

First references to twitter were changed to mastodon. I also in some
cases (this should be in the FAQ too and I'm not sure if it is) when
referring to mastodon noted that unless you are mentioned (also if
someone reposts your toot but this is not mentioned as it's not
relevant) you will not get a notification so one should still refresh
the page as otherwise they might not get an update.

The current iocccsize in the mkiocccentry repo checks for 2503 not 2053
like it used to. Only some of the references can be changed to 2503,
however. For why this is read the file!

I changed the word 'historic' to 'historical'. This is because
historical refers to something that happened in the past and the rules
and guidelines are something that existed in the past. On the other hand
historic refers to famous or important in history. Of course that might
be the case here but it felt like in these cases historical was more
correct. This, of course, depends entirely on how you view the rules and
guidelines that are from the previous contest.

This time I modified files in inc: guidelines.closed.hdr and
rules.closed.hdr. This is because the next/guidelines.md and
next/rules.md refer to it as being included (even though it appears that
might not be the case). These files are simply what the top of the
guidelines.md and rules.md files are. I do not know if this is important
but since the markdown files do refer to them I have updated this time
(even though it seems like one has to keep two copies of the same text).
This commit is contained in:
Cody Boone Ferguson committed 2024-06-13 09:55:47 -07:00
1 parent 4f5f5e7088
commit 367981c196
6 files changed
+419 -364

No files matched your search

+144 -126
View File
@@ -382,22 +382,23 @@
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: next/guidelines.md -->
<!-- START: this line starts content from: inc/guidelines.closed.hdr -->
<h1 id="warning-these-guidelines-are-out-of-date">WARNING: These guidelines are OUT OF DATE</h1>
<p>These guidelines are a <strong>very tentative proposal</strong> for the next IOCCC
that is <strong>VERY LIKELY</strong> to be updated before the next IOCCC.
They are are provided as a <strong>very tentative</strong> hint at what
might be used in a future IOCCC.</p>
<p>Please regard these guidelines as a historic archive.</p>
<p>These guidelines are a <strong>VERY TENTATIVE proposal</strong> for the next IOCCC
and are <strong>VERY LIKELY</strong> to be updated before the next IOCCC.
They are are provided as a <strong>VERY TENTATIVE</strong> hint at <strong>what
MIGHT</strong> be used in the next IOCCC.</p>
<p>Please regard these guidelines as a historical archive.</p>
<h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
<p>The IOCCC is <strong>NOT</strong> accepting new submissions at this time. See the
<a href="../years.html">IOCCC winning entries page</a> for the entries that have won the IOCCC.</p>
<a href="../years.html">IOCCC winning entries page</a> for the entries that have won the
IOCCC in the past.</p>
<p>Watch both <a href="../status.html">the IOCCC status page</a> and the
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about future IOCCC openings.</p>
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about
future IOCCC openings.</p>
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
<h1 id="th-international-obfuscated-c-code-contest-official-guidelines">28th International Obfuscated C Code Contest Official Guidelines</h1>
<p>Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.</p>
<p>Copyright © 2024 Leonid A. Broukhis and Landon Curt Noll.</p>
<p>All Rights Reserved. Permission for personal, education or non-profit use is
granted provided this this copyright and notice are included in its entirety
and remains unaltered. All other uses must receive prior permission in
@@ -415,10 +416,10 @@ submit entries to the <a href="https://www.ioccc.org">International Obfuscated C
(IOCCC)</a>.</p>
<p>These are not the IOCCC rules, though it does contain comments about
them. The guidelines should be viewed as <em>hints</em> and <em>suggestions</em>.
Entries that violate the guidelines but remain within the rules are
allowed. Even so, you are safer if you remain within the guidelines.</p>
Entries that violate the guidelines but remain within the rules <em>are
allowed</em>. Even so, you are safer if you remain within the guidelines.</p>
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
The rules are typically sent out with these guidelines.</p>
The rules are typically published along with these guidelines.</p>
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</h1>
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>YYYY-MMM-DD HH:MM:SS UTC</strong>.
** XXX - This date and time is TDB - XXX **.</p>
@@ -427,30 +428,31 @@ for be a <strong>fun</strong>ctional UTC time. :-)</p>
<p>Until the start of this IOCCC, these rules, guidelines and iocccsize.c
(contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a>)
tool should be considered provisional <strong>BETA</strong> versions and may be
adjusted <strong>AT ANY TIME</strong>.</p>
tool should be considered provisional <strong>BETA</strong> versions and <strong>may be
adjusted <em>AT ANY TIME</em></strong>.</p>
<p>The IOCCC submission URL is <a href="https://submit.ioccc.org/" class="uri">https://submit.ioccc.org/</a>.</p>
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2024-MMM-DD HH:MM:SS UTC</strong>.
** XXX - This date and time is TDB - XXX **.</p>
<strong>XXX - This date and time is TDB - XXX </strong>.</p>
<p>Please wait to submit your entries until after that time.</p>
<p>The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available
on the official IOCCC website on or slightly before start of this IOCCC.
Please check the IOCCC FAQ <a href="../faq.html#submit">How to submit</a>.
on or after the start of this IOCCC to be sure you are using the correct
versions of these items before using the IOCCC entry submission URL.</p>
<p>The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry)
tool will be available on the official IOCCC website on or slightly before start
of this IOCCC. Please check the IOCCC <a href="../faq.html#submit">FAQ about how to submit</a>
to see how to submit entries, on or after the start of this IOCCC, to be sure
you are using the correct versions of these items before using the IOCCC entry
submission URL.</p>
<h1 id="hints-and-suggestions">HINTS AND SUGGESTIONS:</h1>
<p>You are encouraged to examine the winners of previous contests. See
<strong>FOR MORE INFORMATION</strong> for details on how to get previous winners.</p>
<p>Keep in mind that rules change from year to year, so some winning entries
may not be valid entries this year. What was unique and novel one year
might be ‘old’ the next year.</p>
might not be valid entries this year. What <em>was</em> unique and novel one year
<em>might be ‘old’ the next year</em>.</p>
<p>An entry is usually examined in a number of ways. We typically apply
a number of tests to an entry:</p>
<ul>
<li>look at the original source</li>
<li>convert ANSI trigraphs to ASCII</li>
<li>C pre-process the source ignoring ‘#include’ lines</li>
<li>C pre-process the source ignoring ‘#define’ and ‘#include’ lines</li>
<li>C pre-process the source ignoring <code>#include</code> lines</li>
<li>C pre-process the source ignoring <code>#define</code> <em>and</em> <code>#include</code> lines</li>
<li>run it through a C beautifier</li>
<li>examine the algorithm</li>
<li>compile it (with flags to enable all warnings)</li>
@@ -461,45 +463,48 @@ You should ask yourself if your entry remains obscure after it has been
‘<em>cleaned up</em>’ by the C pre-processor and a C beautifier.</p>
<p>Your entry need not pass all of the above tests. In certain
cases, a test is not important. Entries that compete for the
‘strangest/most creative source layout’ need not do as well as
‘<em>strangest/most creative source layout</em>’ need not do as well as
others in terms of their algorithm. On the other hand, given
two such entries, we are more inclined to pick the entry that
does something interesting when you run it.</p>
<p>We try to avoid limiting creativity in our rules. As such, we leave
the contest open for creative rule interpretation. As in real life
the contest open for creative rule interpretation. As in <a href="https://en.wikipedia.org/wiki/Real_life">real
life</a>
programming, interpreting a requirements document or a customer request
is important. For this reason, we often award ‘worst abuse of the
rules’ to an entry that illustrates this point in an ironic way.</p>
is important. For this reason, we often award ‘<em>Best abuse of the
rules</em>’ or ‘<em>Worst abuse of the rules</em>’ to an entry that illustrates this point
in an ironic way.</p>
<p>We do realize that there are holes in the rules, and invite entries
to attempt to exploit them. We will award ‘worst abuse of the rules’
and then plug the hole next year.</p>
to attempt to exploit them. We will award ‘<em>Worst abuse of the rules</em>’ or
‘<em>Best abuse of the rules</em>’ and then plug the hole next year.</p>
<p><strong><code>|</code></strong> Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)</p>
<p><strong><code>|</code></strong> There may be less than 2^7+1 reasons why these guidelines seem obfuscated.</p>
<p>Check out your program and be sure that it works. We sometimes make
the effort to debug an entry that has a slight problem, particularly
in or near the final round. On the other hand, we have seen some
of the best entries fall down because they didn’t work.</p>
<p>We tend to look down on a prime number printer that claims that
<p>We tend to look down on a <a href="https://en.wikipedia.org/wiki/Prime_number">prime
number</a> printer that claims that
16 is a prime number. If you do have a bug, you are better off
documenting it. Noting “this entry sometimes prints the 4th power
of a prime by mistake” would save the above entry. And sometimes,
documenting it. Noting “<em>this entry sometimes prints the 4th power
of a prime by mistake</em>” would save the above entry. And sometimes,
a strange bug/feature can even help the entry! Of course, a correctly
working entry is best. Clever people will note that 16 might be prime
under certain conditions. Wise people, when submitting something clever
will fully explain such cleverness in their entry’s remarks file.</p>
<p>People who are considering to just use some complex mathematical
function or state machine to spell out something such as “hello,
world!” really really, and we do mean really, do need to be more creative.</p>
function or state machine to spell out something such as “<em>hello,
world!</em>” really really, and we do mean really, do need to be more creative.</p>
<p>Ultra-obfuscated programs are, in some cases, easier to
deobfuscate than subtly-obfuscated programs. Consider using
misleading or subtle tricks layered on top of or under an
appropriate level of obfuscation. A clean looking program with
misleading comments and variable names might be a good start.</p>
<p>When programs use VTxxx/ANSI sequences, they should NOT limited to a
<p>When programs use VTxxx/ANSI sequences, they should NOT be limited to a
specific terminal brand. Those programs that work in a standard xterm
are considered more portable.</p>
<p><strong><code>|</code></strong> Rule 2 (the size rule) refers to the use of the IOCCC size tool called <code>iocccsize</code>.</p>
<p><strong><code>|</code></strong> See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> for how to compile and <code>iocccsize</code>.</p>
<p><strong><code>|</code></strong> See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> for how to compile <code>iocccsize.c</code>.</p>
<p><strong><code>|</code></strong> To further clarify rule 2, we subdivided it into two parts, 2a and 2b.</p>
<p><strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size rule 2a AND your entry
must satisfy the IOCCC size tool rule 2b.</p>
@@ -520,32 +525,33 @@ ASCII formfeed, and ASCII carriage return.</p>
<p>In cases where the above summary and the algorithm implemented by
the IOCCC size tool source code conflict, the algorithm implemented
by the IOCCC size tool source code is preferred by the judges.</p>
<p><strong><code>|</code></strong> There are at least 2 other reasons for selecting 2503 as the 2nd limit
<strong><code>|</code></strong> besides the fact that 2053 is a prime. These reasons
<strong><code>|</code></strong> may be searched for and discovered if you are <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>. :-)
<strong><code>|</code></strong> Moreover, 2053 was the number of the kernel disk pack of one of the
<strong><code>|</code></strong> judge’s BESM-6, and 2503 is a decimal anagram of 2053.</p>
<p><strong><code>|</code></strong> There are at least 2 other reasons for selecting 2503 as the 2nd limit</p>
<p><strong><code>|</code></strong> besides the fact that 2503 is a prime. These reasons</p>
<p><strong><code>|</code></strong> may be searched for and discovered if you are <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>. :-)</p>
<p><strong><code>|</code></strong> Moreover, 2053 was the number of the kernel disk pack of one of the</p>
<p><strong><code>|</code></strong> judge’s BESM-6, and 2503 is a decimal anagram of 2053.</p>
<p>Take note that this secondary limit imposed by the IOCCC size tool
obviates some of the need to #define C reserved words in an effort
obviates some of the need to <code>#define</code> C reserved words in an effort
to get around the size limits of rule 2.</p>
<p>Yes Virginia, <strong>that is a hint</strong>!</p>
<p>We applaud programs that do not issue warnings when compiled.
To avoid warnings, you might be tempted to add various -Wno-foobar
To avoid warnings, you might be tempted to add various <code>-Wno-foobar</code>
flags. Unfortunately such flags are NOT portable. Moreover,
such flags are not consistent between different C compilers.
Therefore we recommend that you consider one of several approaches:</p>
<ol type="a">
<li>Write code that does not generate compiler warnings</li>
<li>Write code that does not generate compiler warnings (but see <a href="../faq.html#faq3_11">the FAQ about
clang -Weverything</a>)</li>
<li>Do not use flags that disable compiler warnings</li>
<li>Provide instructions (such as in your Makefile) that
uses appropriate disable compiler warnings flags for
use the appropriate disable compiler warnings flags for
both clang and gcc</li>
<li>Do something creative</li>
</ol>
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
<p>Doing masses of #defines to obscure the source has become ‘old’. We
tend to ‘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
<p>Doing masses of <code>#defines</code> to obscure the source has become ‘old’. We
tend to ‘see thru’ masses of <code>#defines</code> due to our pre-processor tests
that we apply. Simply abusing <code>#defines</code> or <code>-Dfoo=bar</code> won’t go as far
as a program that is more well rounded in confusion.</p>
<p>Many C compilers dislike the following code, and so do we:</p>
<pre><code> #define d define
@@ -569,15 +575,15 @@ to compile compile your code using:</p>
<p>For compilers, such as clang, that have the <code>-Weverything</code> option, try
to make your code compile warning free using:</p>
<pre><code> -Wall -Wextra -Weverything -pedantic</code></pre>
<p>.. though see <a href="../faq.html#faq3_11">Why do Makefiles use -Weverything with
clang?</a> in the <a href="../faq.html">FAQ</a>.</p>
<p>.. though, again, see <a href="../faq.html#faq3_11">the FAQ about clang -Weverything</a> in
the <a href="../faq.html">FAQ</a>.</p>
<p>If you must turn off various warnings on the compile line such as:</p>
<pre><code> ... -Wno-empty-body -Wno-return-type ...</code></pre>
<p>be sure to clearly state so in your remarks AS WELL AS in
<p>be sure to clearly state so in your remarks <strong>AS WELL AS</strong> in
your “how to build” / Makefile.</p>
<p>All other things being equal, a program that must turn off fewer
warnings will be considered better, for certain values of better.</p>
<p>Unless you clearly state otherwise in your remarks AS WELL AS in
<p>Unless you clearly state otherwise in your remarks <strong>AS WELL AS</strong> in
your “how to build” / Makefile we will compile using:</p>
<pre><code> -O3 -std=c11</code></pre>
<p>Anyone care to submit an entry that makes gratuitous use of all
@@ -596,10 +602,10 @@ flags that would make the program less portable.</p>
<p>One side effect of the above is that you cannot assume the use
of nested functions such as:</p>
<pre><code> main() {
| void please_dont_submit_this() {
| printf(&quot;The machine that goes BING!!\n&quot;);
void please_dont_submit_this() {
printf(&quot;The machine that goes BING!!\n&quot;);
}
| please_dont_submit_this();
please_dont_submit_this();
}</code></pre>
<p>This is because such nested functions often requires one to compile with
a flag such as <code>-fnested-functions</code> that is not found on some compilers.</p>
@@ -625,7 +631,7 @@ not portable and must not be used:</p>
<p>Avoid using <code>varargs.h</code>. Use <code>stdarg.h</code> instead.</p>
<p>On 28 January 2007, the Judges rescinded the requirement that the
<code>#</code> in a C preprocessor directive must be the 1st non-whitespace octet.</p>
<p>The <code>exit(3)</code> function returns void. Some broken systems have <code>exit(3)</code>
<p>The <code>exit(3)</code> function returns <code>void</code>. Some broken systems have <code>exit(3)</code>
return <code>int</code>, your entry should assume that <code>exit(3)</code> returns a <code>void</code>.</p>
<p><strong><code>|</code></strong> This guideline has a change mark at the very start of this line.</p>
<p>Small programs are best when they are short, obscure and concise.
@@ -633,8 +639,10 @@ While such programs are not as complex as other winners, they do
serve a useful purpose. They are often the only program that people
attempt to completely understand. For this reason, we look for
programs that are compact, and are instructional.</p>
<p>While those who are used to temperatures found on dwarf planet,
(yes Virginia, dwarf planets are planets) such as Pluto might be able to
<p>While those who are used to temperatures found on <a href="https://science.nasa.gov/dwarf-planets/">dwarf
planet</a>,
(<strong>yes Virginia, dwarf planets are planets</strong>) such as
<a href="https://science.nasa.gov/dwarf-planets/pluto/">Pluto</a> might be able to
explain to the Walrus why our seas are boiling hot, the question of
whether pigs have wings is likely to remain a debatable point to most.</p>
<p>One line programs should be short one line programs: say around 80 to 120
@@ -666,21 +674,24 @@ mandate that one must use Microsoft Visual Studio to compile
your entry. Nevertheless some of the better IDEs have command-line
interfaces to their compilers, once one learns how to invoke a shell.</p>
<p>The program must compile and link cleanly in a POSIX-like environment.
Therefore do not assume the system has a windows.h include file:</p>
Therefore do not assume the system has a
<a href="https://en.wikipedia.org/wiki/Windows.h">windows.h</a> include file:</p>
<pre><code> #include &lt;windows.h&gt; /* we dislike this include */</code></pre>
<p>Unless you are cramped for space, or unless you are entering the
‘best one liner’ category, we suggest that you format your program
‘<em>Best one liner</em>’ category, we suggest that you format your program
in a more creative way than simply forming excessively long lines.</p>
<p>At least one judge prefers to maintain the use of the leap-second
<p>At least one judge prefers to maintain the use of the
<a href="https://en.wikipedia.org/wiki/Leap_second">leap-second</a>
as part of the world’s time standard. If your code prints time
with seconds, we prefer that your code be capable of printing the
time of day during a leap-second where the value in seconds
after the minute mark is 60.</p>
<p>The “how to build” make process should not be used to try and get
around the size limit. It is one thing to make use of a several -D’s
<p>The “<em>how to build</em>” make process should not be used to try and get
around the size limit. It is one thing to make use of a several <code>-D</code>s
on the compile line to help out, but it is quite another to use many
bytes of -D’s in order to try and squeeze the source under the size limit.</p>
<p>Your source code, post-pre-processing, should not exceed the size of Windows. :-)</p>
bytes of <code>-D</code>s in order to try and squeeze the source under the size limit.</p>
<p>Your source code, post-pre-processing, should not exceed the size of
<a href="https://en.wikipedia.org/wiki/Microsoft_Windows">Windows</a>. :-)</p>
<p>The judges, as a group, have a history giving wide degree of latitude
to reasonable entries. And recently they have had as much longitudinal
variation as it is possible to have on Earth. :-)</p>
@@ -711,7 +722,7 @@ For example, one could use the build instructions:</p>
<p>and then include special notes in the program “remarks” for
alternate / human intervention based building.</p>
<p>We want to get away from source that is simply a compact blob of
octets. Really try to be more creative than blob coding. <em>HINT!</em></p>
octets. Really try to be more creative than blob coding. <strong>HINT!</strong></p>
<p>Please do not use things like <code>gzip(1)</code> to get around the size limit.
Please try to be much more creative.</p>
<p>We really dislike entries that make blatant use of including
@@ -760,12 +771,12 @@ software that is not in wide spread use.</p>
<p>This is the only guideline that contains the word fizzbin.
<strong><code>|</code></strong> However, do you know how to play <a href="https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin">fizzbin</a>?
You do?!? (Except on Tuesday)</p>
<p>We don’t like entries that use proprietary toolkits such as the M<em>tif,
Xv</em>ew, or OpenL*ok toolkits, since not everyone has them. Use of an
<p>We don’t like entries that use proprietary toolkits such as the <code>M*tif</code>,
<code>Xv*ew</code>, or <code>OpenL*ok</code> toolkits, since not everyone has them. Use an
open source toolkit that is widely and freely available instead.</p>
<p><strong>NOTE</strong>: The previous guideline in this spot has been replaced by this guideline:</p>
<p>X client entries should not to depend on particular items on
.Xdefaults. If you must do so, be sure to note the required lines
<code>.Xdefaults</code>. If you must do so, be sure to note the required lines
in the program “remarks”. They should also not depend on any
particular window manager.</p>
<p>Try to avoid entries that play silent sound segments or play the
@@ -792,7 +803,7 @@ parliament should you have one.</p>
<li>do something at least quasi-interesting</li>
<li>are portable</li>
<li>are unique or novel in their obfuscation style</li>
<li>MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION &lt;== HINT!!</li>
<li>MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION <strong>&lt;== HINT!!</strong></li>
<li>make us laugh and/or throw up :-) (humor really helps!)</li>
<li>make us want to eat good chocolate.</li>
</ul>
@@ -820,7 +831,8 @@ or Linux curses.</p>
<p>Rule 13 states any C source that fails to compile because of unescaped
octets with the high bit set (octet value &gt;= 128) will be rejected.
Instead of unescaped octets, you should use or escapes:</p>
<pre><code> /* 123456789 123456789 123456789 123456 */
<pre><code>
/* 123456789 123456789 123456789 123456 */
char *foo = &quot;This string is 36 octets in length \263&quot;;
/* This octet requires 4 octets of source ^^^^ */
if (strlen(foo) == 36) printf(&quot;foo is 36 octets plus a final NUL\n&quot;);
@@ -833,13 +845,13 @@ otherwise overlook. <strong>&lt;&lt;– Hint!</strong></p>
author will try format their entry using a “normal” formatting style
such that at first glance (if you squint and don’t look at the details)
the code might pass for non-obfuscated C. Deceptive comments,
and mis-leading formatting, in some cases, may be a plus. On the
and misleading formatting, in some cases, may be a plus. On the
other hand, a misleading code style requires more source bytes.</p>
<p>If you do elect to use misleading formatting and comments, we
suggest you remark on this point in your remarks where you talk
about why you think your entry is obfuscated. On the other hand,
if you are pushing up against the size limits, you may be forced
into creating a dense blob. Such are the trade offs that obfuscators face!</p>
into creating a dense blob. Such are the trade-offs that obfuscators face!</p>
<p>We prefer code that can run on either a 64-bit or 32-bit processor.
However, it is unwise to assume it will run on an i386 or x86 architecture.</p>
<p>We believe that Mark Twain’s remark:</p>
@@ -848,7 +860,7 @@ However, it is unwise to assume it will run on an i386 or x86 architecture.</p>
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">IOCCC size tool source</a>
is not an original work,
unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content iocccsize.c, unless you are
Submitting source that uses the content of iocccsize.c, unless you are
Anthony C Howe, might run the risk of violating rule 7.</p>
<p>Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
However if you do, you might wish to make your tool do something more
@@ -897,46 +909,47 @@ and state:</p>
is given enough time and memory. If the value is not a proper integer, the
program will insult a fish named Eric, even if such a fish does not exist.</code></pre>
<h1 id="abusing-the-rules">ABUSING THE RULES:</h1>
<p>Legal abuse of the rules is somewhat encouraged. Legal rule abuse may
involve, but is not limited to, doing things that are technically
allowed by the rules and yet do not fit the spirit of what we intended
to be submitted.</p>
<p>Legal abuse of the <a href="rules.html">rules</a> is somewhat encouraged. Legal rule abuse
may involve, but is not limited to, doing things that are technically allowed by
the <a href="rules.html">rules</a> and yet do not fit the spirit of what we intended to be
submitted.</p>
<p>Legal rule abuse is encouraged to help promote creativity. Rule abuse
entries, regardless of if they receive an award, result in changes to
the next year’s rules and guidelines.</p>
<p>Legal abuse of the rules is NOT an invitation to violate the rules.
An entry that violates the rules in the opinion of the judges, WILL be
disqualified. RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK! If you
the next year’s <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>.</p>
<p>Legal abuse of the <a href="rules.html">rules</a> is NOT an invitation to violate the
<a href="rules.html">rules</a>. An entry that violates the <a href="rules.html">rules</a> in the
opinion of the judges, <strong>WILL</strong> be
disqualified. <strong><em>RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!</em></strong> If you
have an entry that might otherwise be interesting, you might want to
submit two versions; one that does not abuse the rules and one that
submit two versions; one that does not abuse the <a href="rules.html">rules</a> and one that
does.</p>
<p>If you intend to abuse the rules, indicate so in the program
“remarks”. You must try to justify why you consider your rule abuse
to be allowed under the rules. That is, you must plead your case as
to why your entry is valid. Humor and/or creativity help plead a
case.</p>
<p>If you intend to abuse the <a href="rules.html">rules</a>, indicate so in the program
“remarks”. You must try to justify why you consider your rule abuse to be
allowed under the <a href="rules.html">rules</a>. That is, you must plead your case as to
why your entry is valid. Humor and/or creativity help plead a case.</p>
<p>Abusing the web submission procedure tends to annoy us more
than amuse us. Spend your creative energy on content of your
entry rather than on the submission process itself.</p>
<p>We are often asked why the contest rules and guidelines seem too
<p>We are often asked why the contest <a href="rules.html">rules</a> and
<a href="guidelines.html">guidelines</a> seem too
strange or contain mistakes, flaws or grammatical errors. One reason
is that we sometimes make genuine mistakes. But in many cases such
problems, flaws or areas of confusion are deliberate. Changes to
rules and guidelines in response to rule abuses, are done in a minimal
<a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a> in response to rule abuses, are done in a minimal
fashion. Often we will deliberately leave behind holes (or introduce
new ones) so that future rule abuse may continue. A cleaver author
should be able to read them and “drive a truck through the holes” in
the rules and guidelines.</p>
<p>At the risk of stating the obvious, this contest is a parody of the
software development process. The rules and guidelines are only a
small part of the overall contest. Even so, one may think the contest
rules and guideline process as a parody of the sometimes tragic
mismatch between what a customer (or marketing) wants and what
engineering delivers. Real programmers must face obfuscated
and sometimes conflicting specifications and requirements from marketing,
sales, product management an even from customers themselves on a
all too regular basis. This is one of the reasons why the rules and
guidelines are written in obfuscated form.</p>
the <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>.</p>
<p>At the risk of stating the obvious, this contest is a parody of the software
development process. The <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>
are only a small part of the overall contest. Even so, one may think the
contest <a href="rules.html">rules</a> and <a href="guidelines.html">guideline</a> process as a parody
of the sometimes tragic mismatch between what a customer (or marketing) wants
and what engineering delivers. Real programmers must face obfuscated and
sometimes conflicting specifications and requirements from marketing, sales,
product management an even from customers themselves on a all too regular basis.
This is one of the reasons why the <a href="rules.html">rules</a> and
<a href="guidelines.html">guidelines</a> are written in obfuscated form.</p>
<h1 id="judging-process">JUDGING PROCESS:</h1>
<p>Entries are judged by Leonid A. Broukhis and Landon Curt Noll.</p>
<p>Each entry submitted is given a random id number and subdirectory. The
@@ -949,30 +962,29 @@ the judging process is complete, and then only from entries that have
won an award. Because we do not read this information for entries that
do not win, we do not know who did not win.</p>
<p>The above process helps keep us biased for/against any one particular
individual. Therefore you MUST refrain from putting any information
individual. Therefore you <strong>MUST</strong> refrain from putting any information
that reveals your identity in your entry.</p>
<p>Now some people point out that coding style might reveal the information
about the others. However we consider this to be simply circumstantial
and outside the scope of the above paragraph.</p>
<p>Some people, in the past, have attempted to obfuscate their identity by
including comments of famous Internet personalities such as Peter Honeyman
(<a href="http://www.citi.umich.edu/u/honey/" class="uri">http://www.citi.umich.edu/u/honey/</a>). The judges are on to this
trick and therefore consider any obfuscated source or data file
claiming to be from Honeyman to not be form Honeyman. This of course
creates an interesting paradox known as the “obfuscated Peter Honeyman
paradox”. Should Peter Honeyman actually submit an obfuscated entry,
he alone is excluded from the above, as we will likely believe
it just another attempt at confusion. This guideline is known
as the “Peter Honeyman is exempt” guideline.</p>
including comments of famous Internet personalities such as <a href="http://www.citi.umich.edu/u/honey">Peter
Honeyman</a>. The judges are on to this trick
and therefore consider any obfuscated source or data file claiming to be from
Honeyman to not be form Honeyman. This of course creates an interesting paradox
known as the “obfuscated Peter Honeyman paradox”. Should Peter Honeyman
actually submit an obfuscated entry, he alone is excluded from the above, as we
will likely believe it just another attempt at confusion. This guideline is
known as the “Peter Honeyman is exempt” guideline.</p>
<p>BTW: None of the entries claiming to be from Peter Honeyman have ever
won an award. So it is theoretically possible that Peter Honeyman
did submit an entry in the past. In the past, Peter had denied
submitting anything to the IOCCC. Perhaps those entries were
submitted by one of his students?</p>
<p>Hopefully we are <strong>VERY CLEAR</strong> on this point! The rules now strongly state:
PLEASE DO NOT put a name of an author, in an obvious way, into your
<strong>PLEASE <em>DO NOT</em> put a name of an author</strong>, in an obvious way, into your
source code, remarks, data files, etc. The above “Peter Honeyman is
exempt” not withstanding.</p>
exempt” notwithstanding.</p>
<p>We seemed to have digressed again … :-) Returning to the judging process:</p>
<p>We prefer to be kept in the dark as much as you are until the final
awards are given. We enjoy the surprise of finding out in the end,
@@ -983,7 +995,8 @@ attempts to send non-winners into oblivion. We remove all non-winning
files, and shred all related paper. By tradition, we do not even
reveal the number of entries that we received.</p>
<p>During the judging process, a process that spans multiple sessions
over a few weeks, post general updates from our <span class="citation" data-cites="IOCCC">@IOCCC</span> twitter account.</p>
over a few weeks, post general updates from our <a href="https://fosstodon.org/@ioccc">Mastodon
account</a>.</p>
<p>Once we have selected the winners, for each category we will tweet:</p>
<ul>
<li>category name</li>
@@ -998,11 +1011,9 @@ entry. They are given the chance to correct mistakes and typos. We
often accept their suggestions/comments about our remarks as well.
This is done prior to posting the winners to the wide world.</p>
<h2 id="an-important-update-to-how-winners-are-announced">An important update to how winners are announced</h2>
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced
by a git commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries
repo</a>.</p>
<p>that, in turn, updates the <a href="https://www.ioccc.org/index.html">official IOCCC
website</a>.</p>
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced by a git
commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries repo</a> that, in
turn, updates the <a href="https://www.ioccc.org/index.html">official IOCCC website</a>.</p>
<p>In addition a note is posted to the IOCCC Mastodon account
(<a href="https://fosstodon.org/@ioccc" class="uri">https://fosstodon.org/@ioccc</a>).</p>
<h2 id="back-to-the-judging-process">Back to the Judging process</h2>
@@ -1081,10 +1092,11 @@ an entry simply far exceeds any of the other entries. More often, the
name related to the submitter(s) names. This is no longer done.
Winning source is called prog.c A compiled binary is called prog.</p>
<h1 id="announcement-of-winners">ANNOUNCEMENT OF WINNERS:</h1>
<p>The judges will tweet initial announcement of who won, the name
<p>The judges will toot initial announcement of who won, the name
of their award, and a very brief description of the winning entry
from the <span class="citation" data-cites="IOCCC">@IOCCC</span> twitter handle. Non-twitter users should visit:</p>
<pre><code> https://twitter.com/ioccc</code></pre>
from the <a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> Mastodon account</a>. You should
follow us on Mastodon and refresh the page (even if you do follow us) as unless
you are mentioned you will not get a notification.</p>
<h2 id="how-the-new-ioccc-winners-will-be-announced">How the new IOCCC winners will be announced</h2>
<p><strong><code>|</code></strong> The <a href="../status.html">Current status of the IOCCC</a> will change from <strong>judging</strong> to <strong>closed</strong> .</p>
<p><strong><code>|</code></strong> The <strong>contest_status</strong> in the <a href="../status.json">status.json</a> file will change from <strong>judging</strong> to <strong>closed</strong> as well.</p>
@@ -1110,10 +1122,16 @@ and on T-Shirts. More than one winner has been turned in a tattoo!</p>
<p>Last, but not least, winners receive international fame and flames! :-)</p>
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
<p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as rules and the guidelines may (and often do) change from year to year.</p>
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
<p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as
<a href="rules.html">rules</a> and the <a href="guidelines.html">guidelines</a> may (and often do) change from year to year.</p>
<p><strong><code>|</code></strong> You should be sure you have the current <a href="rules.html">rules</a> and
<a href="guidelines.html">guidelines</a> prior to submitting entries.</p>
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our <a href="../faq.html#try_mastodon">FAQ</a> for more information.</p>
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow
the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our
<a href="../faq.html#try_mastodon">FAQ</a> for more information. Please be aware that
unless you are mentioned you most likely will <strong>NOT</strong> get a notification from
the app so you should make sure to check the page.</p>
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
<p>Leonid A. Broukhis<br>
chongo (Landon Curt Noll) /\cc/\</p>