improve references to IOCCC rules and IOCCC guidelines

Each individual IOCCC rule has its own div tag.

References to a specific IOCCC rule is now a link.

We now use the term **IOCCC rules** more consistency when
referring to the rules.

We now use the term **IOCCC guidelines** more consistency when
referring to the guidelines.

In the **IOCCC guidelines**, we use _guideline_ when
referring to a general guideline.

Updated  **IOCCC rules** and  **IOCCC guidelines** to 2024-06-23-v28.

Added guidelines about the recent Rule 2a changes.

Improved to order of the guidelines related to Rule 2.

Added a ">" formatted quote about the iocccsize summary to the IOCCC guidelines.

Perform `make www` to perform the above and test under macOS.
This commit is contained in:
Landon Curt Noll committed 2024-06-23 13:51:40 -07:00
1 parent 02c0cd30af
commit 20d0b2a8d4
4 files changed
+290 -156

No files matched your search

+65 -60
View File
@@ -403,8 +403,8 @@ future IOCCC openings.</p>
granted provided this this copyright and notice are included in its entirety granted provided this this copyright and notice are included in its entirety
and remains unaltered. All other uses must receive prior permission in and remains unaltered. All other uses must receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p> writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="guidelines-version">Guidelines version</h2> <h2 id="ioccc-guidelines-version">IOCCC Guidelines version</h2>
<p><strong><code>|</code></strong> This guidelines file is version <strong>2024-06-15-v28</strong>.</p> <p><strong><code>|</code></strong> These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>2024-06-25-v28</strong>.</p>
<p><strong>IMPORTANT</strong>: Be <strong>SURE</strong> to read the <a href="rules.html">IOCCC rules</a>.</p> <p><strong>IMPORTANT</strong>: Be <strong>SURE</strong> to read the <a href="rules.html">IOCCC rules</a>.</p>
<h3 id="change-marks">Change marks</h3> <h3 id="change-marks">Change marks</h3>
<p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p> <p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p>
@@ -415,17 +415,17 @@ IOCCC start with the <strong><code>|</code></strong> symbol.</p>
submit entries to the <a href="https://www.ioccc.org">International Obfuscated C Code Contest submit entries to the <a href="https://www.ioccc.org">International Obfuscated C Code Contest
(IOCCC)</a>.</p> (IOCCC)</a>.</p>
<p>These are not the IOCCC rules, though it does contain comments about <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>. them. The <a href="guidelines.html">IOCCC guidelines</a> should be viewed as <em>hints</em> and <em>suggestions</em>.
Entries that violate the guidelines but remain within the rules <em>are Entries that violate the <em>guidelines</em> but remain within the rules <em>are
allowed</em>. Even so, you are safer if you remain within the guidelines.</p> allowed</em>. Even so, you are safer if you remain within the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries. <p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
The rules are typically published along with these guidelines.</p> The rules are typically published along with the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</h1> <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>.<br> <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>.<br>
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p> <strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
<p><strong><code>|</code></strong> The reason for the times of day are so that key IOCCC events are <strong>calculated</strong> <p><strong><code>|</code></strong> The reason for the times of day are so that key IOCCC events are <strong>calculated</strong>
for be a <strong>fun</strong>ctional UTC time. :-)</p> for be a <strong>fun</strong>ctional UTC time. :-)</p>
<p>Until the start of this IOCCC, these rules, guidelines and iocccsize.c <p>Until the start of this IOCCC, the <a href="rules.html">IOCCC rules</a>, <a href="guidelines.html">IOCCC guidelines</a> and <code>iocccsize.c</code>
(contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry (contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a>) toolkit</a>)
tool should be considered provisional <strong>BETA</strong> versions and <strong>may be tool should be considered provisional <strong>BETA</strong> versions and <strong>may be
@@ -434,7 +434,7 @@ adjusted <em>AT ANY TIME</em></strong>.</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>.<br> <p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2024-MMM-DD HH:MM:SS UTC</strong>.<br>
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p> <strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
<p>Please wait to submit your entries until after that time.</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) <p>The <a href="rules.html">IOCCC rules</a>, <a href="guidelines.html">IOCCC guidelines</a> and iocccsize.c (invoked by the mkiocccentry)
tool will be available on the official IOCCC website on or slightly before start 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> 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 to see how to submit entries, on or after the start of this IOCCC, to be sure
@@ -478,7 +478,7 @@ in an ironic way.</p>
to attempt to exploit them. We will award ‘<em>Worst abuse of the rules</em>’ or 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> ‘<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> 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><strong><code>|</code></strong> There may be less than 2^7+1 reasons why these <a href="guidelines.html">IOCCC guidelines</a> seem obfuscated.</p>
<p>Check out your program and be sure that it works. We sometimes make <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 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 in or near the final round. On the other hand, we have seen some
@@ -503,21 +503,24 @@ misleading comments and variable names might be a good start.</p>
<p>When programs use VTxxx/ANSI sequences, they should NOT be 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 specific terminal brand. Those programs that work in a standard xterm
are considered more portable.</p> 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> <a href="rules.html#rule2">Rule 2</a> (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 <code>iocccsize.c</code>.</p> <p><strong><code>|</code></strong> See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> for the <code>iocccsize</code> tool.</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> To further clarify <a href="rules.html#rule2">Rule 2</a>, 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 <p><strong><code>|</code></strong> The overall size limit (see <a href="rules.html#rule2a">Rule 2a</a>) on <code>prog.c</code> is now 4993 bytes</p>
must satisfy the IOCCC size tool rule 2b.</p> <p><strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size <a href="rules.html#rule2a">Rule 2a</a> AND your entry
<p>This tool imposes a 2nd limit on C code size (rule 2b). To check your must satisfy the IOCCC size tool <a href="rules.html#rule2b">Rule 2b</a>.</p>
code against the 2nd limit of rule 2, use the -i command line option. <p>This tool imposes a 2nd limit on C code size (see <a href="rules.html#rule2a">Rule 2a</a>. To check your
code against the 2nd limit of <a href="rules.html#rule2">Rule 2</a>, use the -i command line option.
For example:</p> For example:</p>
<pre><code> ./iocccsize -i &lt; prog.c</code></pre> <pre><code> ./iocccsize -i &lt; prog.c</code></pre>
<p>The IOCCC size tool, when using the -i option, may be summarized as:</p> <p>The IOCCC size tool, when using the -i option, may be summarized as:</p>
<pre><code> The size tool counts most C reserved words (keyword, secondary, <blockquote>
and selected preprocessor keywords) as 1. The size tool counts all <p>The size tool counts most C reserved words (keyword, secondary,<br>
other octets as 1 excluding ASCII whitespace, and excluding any and selected preprocessor keywords) as 1. The size tool counts all<br>
&#39;;&#39;, &#39;{&#39; or &#39;}&#39; followed by ASCII whitespace, and excluding any other octets as 1 excluding ASCII whitespace, and excluding any<br>
&#39;;&#39;, &#39;{&#39; or &#39;}&#39; octet immediately before the end of file.</code></pre> ‘;’, ‘{’ or ‘}’ followed by ASCII whitespace, and excluding any<br>
‘;’, ‘{’ or ‘}’ octet immediately before the end of file.</p>
</blockquote>
<p>ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, <p>ASCII whitespace includes ASCII tab, ASCII space, ASCII newline,
ASCII formfeed, and ASCII carriage return.</p> ASCII formfeed, and ASCII carriage return.</p>
<p><strong><code>|</code></strong> When ‘;’, ‘{’ or ‘}’ are within a C string, they may still not be <p><strong><code>|</code></strong> When ‘;’, ‘{’ or ‘}’ are within a C string, they may still not be
@@ -532,8 +535,9 @@ by the IOCCC size tool source code is preferred by the judges.</p>
<p><strong><code>|</code></strong> judge’s BESM-6, and 2503 is a decimal anagram of 2053.</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 <p>Take note that this secondary limit imposed by the IOCCC size tool
obviates some of the need to <code>#define</code> 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> to get around the size limits of <a href="rules.html#rule2">Rule 2</a>.</p>
<p>Yes Virginia, <strong>that is a hint</strong>!</p> <p>Yes Virginia, <strong>that is a hint</strong>!</p>
<p><strong><code>|</code></strong> The <a href="rules.html#rule2a">Rule 2a</a> size was changed from 4096 to 4993: a change that keeps the “2b to 2a” size ratio to a value similar to the <a href="../faq.html#size_rule">2001-2020 IOCCC era</a>.</p>
<p>We applaud programs that do not issue warnings when compiled. <p>We applaud programs that do not issue warnings when compiled.
To avoid warnings, you might be tempted to add various <code>-Wno-foobar</code> To avoid warnings, you might be tempted to add various <code>-Wno-foobar</code>
flags. Unfortunately such flags are NOT portable. Moreover, flags. Unfortunately such flags are NOT portable. Moreover,
@@ -633,7 +637,7 @@ not portable and must not be used:</p>
<code>#</code> in a C preprocessor directive must be the 1st non-whitespace octet.</p> <code>#</code> in a C preprocessor directive must be the 1st non-whitespace octet.</p>
<p>The <code>exit(3)</code> function returns <code>void</code>. 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> 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><strong><code>|</code></strong> This <em>guideline</em> has a change mark at the very start of this line.</p>
<p>Small programs are best when they are short, obscure and concise. <p>Small programs are best when they are short, obscure and concise.
While such programs are not as complex as other winners, they do While such programs are not as complex as other winners, they do
serve a useful purpose. They are often the only program that people serve a useful purpose. They are often the only program that people
@@ -703,7 +707,7 @@ absolute one. The intent is to ensure that the building if your
program is reasonably portable.</p> program is reasonably portable.</p>
<p>We prefer programs that are portable across a wide variety of Unix-like <p>We prefer programs that are portable across a wide variety of Unix-like
operating systems (i.e., Linux, GNU Hurd, BSD, Unix, etc.).</p> operating systems (i.e., Linux, GNU Hurd, BSD, Unix, etc.).</p>
<p>You are in a maze of twisty guidelines, all different.</p> <p>You are in a maze of twisty <em>guidelines</em>, all different.</p>
<p>There are at least zero judges who think that Fideism has little <p>There are at least zero judges who think that Fideism has little
or nothing to do with the IOCCC judging process.</p> or nothing to do with the IOCCC judging process.</p>
<p>Don’t forget that the building of your program should be done <p>Don’t forget that the building of your program should be done
@@ -740,7 +744,7 @@ of code, and the other that is formatted more like a typical C
program, we tend to favor the second version. Of course, a third program, we tend to favor the second version. Of course, a third
version of the same program that is formatted in an interesting version of the same program that is formatted in an interesting
and/or obfuscated way, would definitely win over the first two! and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one entry. See the rules for details.</p> Remember, you can submit more than one entry. See the <a href="rules.html">IOCCC rules</a> for details.</p>
<p>We suggest that you avoid trying for the ‘smallest self-replicating’ <p>We suggest that you avoid trying for the ‘smallest self-replicating’
source. The smallest, a zero byte entry, <a href="../1994/smr/index.html">won in 1994</a>.</p> source. The smallest, a zero byte entry, <a href="../1994/smr/index.html">won in 1994</a>.</p>
<p>Programs that claim to be the smallest C source that does something, really <p>Programs that claim to be the smallest C source that does something, really
@@ -768,13 +772,14 @@ in the OS. Instead, make use of a well known and widely available open
source program (one that actually works) to display audio/visual data.</p> source program (one that actually works) to display audio/visual data.</p>
<p>X client entries should avoid using X related libraries and <p>X client entries should avoid using X related libraries and
software that is not in wide spread use.</p> software that is not in wide spread use.</p>
<p>This is the only guideline that contains the word fizzbin. <p>This is the only <em>guideline</em> that contains the word fizzbin.</p>
<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>? <p><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> You do?!? (Except on Tuesday?)</p>
<p><strong><code>|</code></strong> OK, there are actually 3 <em>guidelines</em> that contain the word fizzbin.</p>
<p>We don’t like entries that use proprietary toolkits such as the <code>M*tif</code>, <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 <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> 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><strong>NOTE</strong>: The previous <em>guideline</em> in this spot has been replaced by this <em>guideline</em>:</p>
<p>X client entries should not to depend on particular items on <p>X client entries should not to depend on particular items on
<code>.Xdefaults</code>. 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 in the program “remarks”. They should also not depend on any
@@ -789,12 +794,12 @@ the scope of the contest, we phrase our bias to favor:</p>
<p><strong><code>|</code></strong> <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>.</p> <p><strong><code>|</code></strong> <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>.</p>
<p><strong><code>|</code></strong> You are <strong>well advised</strong> to submit entries that conform to the <a href="https://unix.org/version4/overview.html">Single UNIX Specification Version 4</a>.</p> <p><strong><code>|</code></strong> You are <strong>well advised</strong> to submit entries that conform to the <a href="https://unix.org/version4/overview.html">Single UNIX Specification Version 4</a>.</p>
<p><strong><code>|</code></strong> You very well might not be completely be prohibited from failing to not <p><strong><code>|</code></strong> You very well might not be completely be prohibited from failing to not
<strong><code>|</code></strong> partly misunderstand this particular guideline, but of course, we could <strong><code>|</code></strong> partly misunderstand this particular <em>guideline</em>, but of course, we could
<strong><code>|</code></strong> not possibly comment! :-) Nevertheless, you are neither prohibited, nor are <strong><code>|</code></strong> not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
<strong><code>|</code></strong> you fully required to determine that this or the previous sentence is either false <strong><code>|</code></strong> you fully required to determine that this or the previous sentence is either false
<strong><code>|</code></strong> and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider <strong><code>|</code></strong> and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider
<strong><code>|</code></strong> to do so, accordingly. Thank you very much.</p> <strong><code>|</code></strong> to do so, accordingly. Thank you very much.</p>
<p>Any complaints about the above guideline could be addressed to the <p>Any complaints about the above <em>guideline</em> could be addressed to the
Speaker of the House of Commons, or to the speaker of your national Speaker of the House of Commons, or to the speaker of your national
parliament should you have one.</p> parliament should you have one.</p>
<p>We like programs that:</p> <p>We like programs that:</p>
@@ -813,7 +818,7 @@ areas really does help.</p>
<p>You are better off explaining what your entry does in the program <p>You are better off explaining what your entry does in the program
“remarks” section rather than leaving it obscure for the judges “remarks” section rather than leaving it obscure for the judges
as we might miss something and/or be too tired to notice.</p> as we might miss something and/or be too tired to notice.</p>
<p><strong><code>|</code></strong> Please avoid this specific individual guideline, if it at all possible.</p> <p><strong><code>|</code></strong> Please avoid this specific individual <em>guideline</em>, if it at all possible.</p>
<p>We freely admit that interesting, creative or humorous comments in <p>We freely admit that interesting, creative or humorous comments in
the program “remarks” help your chances of winning. If you had to the program “remarks” help your chances of winning. If you had to
read so many twisted entries, you too would enjoy a good laugh or two. read so many twisted entries, you too would enjoy a good laugh or two.
@@ -828,7 +833,7 @@ their entries. In some cases tools have a “Save As” option that will
prevent such trailing control-M’s being added.</p> prevent such trailing control-M’s being added.</p>
<p>One should restrict libcurses to portable features found on BSD <p>One should restrict libcurses to portable features found on BSD
or Linux curses.</p> or Linux curses.</p>
<p>Rule 13 states any C source that fails to compile because of unescaped <p><a href="rules.html#rule13">Rule 13</a> states any C source that fails to compile because of unescaped
octets with the high bit set (octet value &gt;= 128) will be rejected. octets with the high bit set (octet value &gt;= 128) will be rejected.
Instead of unescaped octets, you should use or escapes:</p> Instead of unescaped octets, you should use or escapes:</p>
<pre><code> <pre><code>
@@ -856,13 +861,13 @@ into creating a dense blob. Such are the trade-offs that obfuscators face!</p>
However, it is unwise to assume it will run on an i386 or x86 architecture.</p> 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> <p>We believe that Mark Twain’s remark:</p>
<pre><code> Get your facts first, then you can distort them as you please.</code></pre> <pre><code> Get your facts first, then you can distort them as you please.</code></pre>
<p>is a good guideline for those writing code for the IOCCC.</p> <p>is a good motto for those writing code for the IOCCC.</p>
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">IOCCC size tool source</a> <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, is not an original work,
unless you are Anthony C Howe, in which case it is original! unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content of 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> Anthony C Howe, might run the risk of violating <a href="rules.html#rule7">Rule 7</a>.</p>
<p>Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool. <p><a href="rules.html#rule7">Rule 7</a> 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 However if you do, you might wish to make your tool do something more
interesting than simply implementing the IOCCC size tool algorithm.</p> interesting than simply implementing the IOCCC size tool algorithm.</p>
<p>While programs that only run in a specific word size are OK. If you have <p>While programs that only run in a specific word size are OK. If you have
@@ -909,47 +914,47 @@ and state:</p>
is given enough time and memory. If the value is not a proper integer, the 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> 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> <h1 id="abusing-the-rules">ABUSING THE RULES:</h1>
<p>Legal abuse of the <a href="rules.html">rules</a> is somewhat encouraged. Legal rule abuse <p>Legal abuse of the <a href="rules.html">IOCCC rules</a> is somewhat encouraged. Legal rule abuse
may involve, but is not limited to, doing things that are technically allowed by 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 the <a href="rules.html">IOCCC rules</a> and yet do not fit the spirit of what we intended to be
submitted.</p> submitted.</p>
<p>Legal rule abuse is encouraged to help promote creativity. Rule abuse <p>Legal rule abuse is encouraged to help promote creativity. Rule abuse
entries, regardless of if they receive an award, result in changes to entries, regardless of if they receive an award, result in changes to
the next year’s <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>.</p> the next year’s <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a>.</p>
<p>Legal abuse of the <a href="rules.html">rules</a> is NOT an invitation to violate the <p>Legal abuse of the <a href="rules.html">IOCCC 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 <a href="rules.html">IOCCC rules</a>. An entry that violates the <a href="rules.html">rules</a> in the
opinion of the judges, <strong>WILL</strong> be opinion of the judges, <strong>WILL</strong> be
disqualified. <strong><em>RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!</em></strong> If you 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 have an entry that might otherwise be interesting, you might want to
submit two versions; one that does not abuse the <a href="rules.html">rules</a> and one that submit two versions; one that does not abuse the <a href="rules.html">IOCCC rules</a> and one that
does.</p> does.</p>
<p>If you intend to abuse the <a href="rules.html">rules</a>, indicate so in the program <p>If you intend to abuse the <a href="rules.html">IOCCC rules</a>, indicate so in the program
“remarks”. You must try to justify why you consider your rule abuse to be “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 allowed under the <a href="rules.html">IOCCC 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> 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 <p>Abusing the web submission procedure tends to annoy us more
than amuse us. Spend your creative energy on content of your than amuse us. Spend your creative energy on content of your
entry rather than on the submission process itself.</p> entry rather than on the submission process itself.</p>
<p>We are often asked why the contest <a href="rules.html">rules</a> and <p>We are often asked why the contest <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">guidelines</a> seem too <a href="guidelines.html">IOCCC guidelines</a> seem too
strange or contain mistakes, flaws or grammatical errors. One reason strange or contain mistakes, flaws or grammatical errors. One reason
is that we sometimes make genuine mistakes. But in many cases such is that we sometimes make genuine mistakes. But in many cases such
problems, flaws or areas of confusion are deliberate. Changes to problems, flaws or areas of confusion are deliberate. Changes to
<a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a> in response to rule abuses, are done in a minimal <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a> in response to rule abuses, are done in a minimal
fashion. Often we will deliberately leave behind holes (or introduce fashion. Often we will deliberately leave behind holes (or introduce
new ones) so that future rule abuse may continue. A cleaver author 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 should be able to read them and “drive a truck through the holes” in
the <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>.</p> the <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a>.</p>
<p>At the risk of stating the obvious, this contest is a parody of the software <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> development process. The <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a>
are only a small part of the overall contest. Even so, one may think the 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 contest <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a> process as a parody
of the sometimes tragic mismatch between what a customer (or marketing) wants of the sometimes tragic mismatch between what a customer (or marketing) wants
and what engineering delivers. Real programmers must face obfuscated and and what engineering delivers. Real programmers must face obfuscated and
sometimes conflicting specifications and requirements from marketing, sales, sometimes conflicting specifications and requirements from marketing, sales,
product management an even from customers themselves on a all too regular basis. 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 This is one of the reasons why the <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">guidelines</a> are written in obfuscated form.</p> <a href="guidelines.html">IOCCC guidelines</a> are written in obfuscated form.</p>
<h1 id="judging-process">JUDGING PROCESS:</h1> <h1 id="judging-process">JUDGING PROCESS:</h1>
<p>Entries are judged by Leonid A. Broukhis and Landon Curt Noll.</p> <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 <p>Each entry submitted is given a random id number and subdirectory. The
@@ -974,8 +979,8 @@ 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 Honeyman to not be form Honeyman. This of course creates an interesting paradox
known as the “obfuscated Peter Honeyman paradox”. Should Peter Honeyman known as the “obfuscated Peter Honeyman paradox”. Should Peter Honeyman
actually submit an obfuscated entry, he alone is excluded from the above, as we 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 will likely believe it just another attempt at confusion. This <em>guideline</em> is
known as the “Peter Honeyman is exempt” guideline.</p> known as the “Peter Honeyman is exempt” <em>guideline</em>.</p>
<p>BTW: None of the entries claiming to be from Peter Honeyman have ever <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 won an award. So it is theoretically possible that Peter Honeyman
did submit an entry in the past. In the past, Peter had denied did submit an entry in the past. In the past, Peter had denied
@@ -1019,7 +1024,7 @@ skipping over any #include files</li>
</ul> </ul>
<p>In later rounds, other actions are performed including performing <p>In later rounds, other actions are performed including performing
miscellaneous tests on the source and binary.</p> miscellaneous tests on the source and binary.</p>
<p><strong><code>|</code></strong> This is the very guideline that goes, BING!</p> <p><strong><code>|</code></strong> This is the very <em>guideline</em> that goes, BING!</p>
<p>Until we reduce the stack of entries down to about 25 entries, entries <p>Until we reduce the stack of entries down to about 25 entries, entries
are judged on an individual basis. An entry is set aside because it are judged on an individual basis. An entry is set aside because it
does not, in our opinion, meet the standard established by the round. does not, in our opinion, meet the standard established by the round.
@@ -1062,7 +1067,7 @@ into voting for a winning entry by offering a bit high quality chocolate.
This technique is highly discouraged for use by non-IOCCC judges.</p> This technique is highly discouraged for use by non-IOCCC judges.</p>
<p>More often than not, we select a small entry (usually one line), a <p>More often than not, we select a small entry (usually one line), a
strange/creative layout entry. We sometimes also select an strange/creative layout entry. We sometimes also select an
entry that abuses the contest guidelines in an interesting way, entry that abuses the <a href="guidelines.html">IOCCC guidelines</a> in an interesting way,
or that stretches the content rules that while legal, is or that stretches the content rules that while legal, is
nevertheless goes against the intent of the rules.</p> nevertheless goes against the intent of the rules.</p>
<p>In the end, we traditionally pick one entry as ‘best’. Sometimes such <p>In the end, we traditionally pick one entry as ‘best’. Sometimes such
@@ -1102,10 +1107,10 @@ 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> <p>Last, but not least, winners receive international fame and flames! :-)</p>
<h1 id="for-more-information">FOR MORE INFORMATION:</h1> <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> 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 <p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as the
<a href="rules.html">rules</a> and the <a href="guidelines.html">guidelines</a> may (and often do) change from year to year.</p> <a href="rules.html">IOCCC rules</a> and the <a href="guidelines.html">IOCCC 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 <p><strong><code>|</code></strong> You should be sure you have the current <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">guidelines</a> prior to submitting entries.</p> <a href="guidelines.html">IOCCC 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> 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 <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 the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our
+66 -61
View File
@@ -30,9 +30,9 @@ and remains unaltered. All other uses must receive prior permission in
writing by [contacting the judges](../contact.html). writing by [contacting the judges](../contact.html).
## Guidelines version ## IOCCC Guidelines version
**`|`** This guidelines file is version **2024-06-15-v28**. **`|`** These [IOCCC guidelines](guidelines.html) are version **2024-06-25-v28**.
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html). **IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
@@ -52,12 +52,12 @@ submit entries to the [International Obfuscated C Code Contest
&#x28;IOCCC&#x29;](https://www.ioccc.org). &#x28;IOCCC&#x29;](https://www.ioccc.org).
These are not the IOCCC rules, though it does contain comments about These are not the IOCCC rules, though it does contain comments about
them. The guidelines should be viewed as _hints_ and _suggestions_. them. The [IOCCC guidelines](guidelines.html) should be viewed as _hints_ and _suggestions_.
Entries that violate the guidelines but remain within the rules _are Entries that violate the _guidelines_ but remain within the rules _are
allowed_. Even so, you are safer if you remain within the guidelines. allowed_. Even so, you are safer if you remain within the [IOCCC guidelines](guidelines.html).
You should read the current [IOCCC rules](rules.html), prior to submitting entries. You should read the current [IOCCC rules](rules.html), prior to submitting entries.
The rules are typically published along with these guidelines. The rules are typically published along with the [IOCCC guidelines](guidelines.html).
# WHAT'S NEW THIS IOCCC # WHAT'S NEW THIS IOCCC
@@ -68,7 +68,7 @@ The rules are typically published along with these guidelines.
**`|`** The reason for the times of day are so that key IOCCC events are **calculated** **`|`** The reason for the times of day are so that key IOCCC events are **calculated**
for be a **fun**ctional UTC time. :-) for be a **fun**ctional UTC time. :-)
Until the start of this IOCCC, these rules, guidelines and iocccsize.c Until the start of this IOCCC, the [IOCCC rules](rules.html), [IOCCC guidelines](guidelines.html) and `iocccsize.c`
(contained in the [mkiocccentry (contained in the [mkiocccentry
toolkit](https://github.com/ioccc-src/mkiocccentry)) toolkit](https://github.com/ioccc-src/mkiocccentry))
tool should be considered provisional **BETA** versions and **may be tool should be considered provisional **BETA** versions and **may be
@@ -81,7 +81,7 @@ The IOCCC submission URL is <https://submit.ioccc.org/>.
Please wait to submit your entries until after that time. Please wait to submit your entries until after that time.
The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) The [IOCCC rules](rules.html), [IOCCC guidelines](guidelines.html) and iocccsize.c (invoked by the mkiocccentry)
tool will be available on the official IOCCC website on or slightly before start tool will be available on the official IOCCC website on or slightly before start
of this IOCCC. Please check the IOCCC [FAQ about how to submit](../faq.html#submit) of this IOCCC. Please check the IOCCC [FAQ about how to submit](../faq.html#submit)
to see how to submit entries, on or after the start of this IOCCC, to be sure to see how to submit entries, on or after the start of this IOCCC, to be sure
@@ -135,7 +135,7 @@ to attempt to exploit them. We will award '_Worst abuse of the rules_' or
**`|`** Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-) **`|`** Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)
**`|`** There may be less than 2^7+1 reasons why these guidelines seem obfuscated. **`|`** There may be less than 2^7+1 reasons why these [IOCCC guidelines](guidelines.html) seem obfuscated.
Check out your program and be sure that it works. We sometimes make 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 the effort to debug an entry that has a slight problem, particularly
@@ -166,17 +166,19 @@ When programs use VTxxx/ANSI sequences, they should NOT be limited to a
specific terminal brand. Those programs that work in a standard xterm specific terminal brand. Those programs that work in a standard xterm
are considered more portable. are considered more portable.
**`|`** Rule 2 (the size rule) refers to the use of the IOCCC size tool called `iocccsize`. **`|`** [Rule 2](rules.html#rule2) (the size rule) refers to the use of the IOCCC size tool called `iocccsize`.
**`|`** See the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) for how to compile `iocccsize.c`. **`|`** See the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) for the `iocccsize` tool.
**`|`** To further clarify rule 2, we subdivided it into two parts, 2a and 2b. **`|`** To further clarify [Rule 2](rules.html#rule2), we subdivided it into two parts, 2a and 2b.
**`|`** Your entry must satisfy BOTH the maximum size rule 2a AND your entry **`|`** The overall size limit (see [Rule 2a](rules.html#rule2a)) on `prog.c` is now 4993 bytes
must satisfy the IOCCC size tool rule 2b.
This tool imposes a 2nd limit on C code size (rule 2b). To check your **`|`** Your entry must satisfy BOTH the maximum size [Rule 2a](rules.html#rule2a) AND your entry
code against the 2nd limit of rule 2, use the -i command line option. must satisfy the IOCCC size tool [Rule 2b](rules.html#rule2b).
This tool imposes a 2nd limit on C code size (see [Rule 2a](rules.html#rule2a). To check your
code against the 2nd limit of [Rule 2](rules.html#rule2), use the -i command line option.
For example: For example:
``` ```
@@ -185,13 +187,11 @@ For example:
The IOCCC size tool, when using the -i option, may be summarized as: The IOCCC size tool, when using the -i option, may be summarized as:
``` > The size tool counts most C reserved words (keyword, secondary,<br>
The size tool counts most C reserved words (keyword, secondary, > and selected preprocessor keywords) as 1. The size tool counts all<br>
and selected preprocessor keywords) as 1. The size tool counts all > other octets as 1 excluding ASCII whitespace, and excluding any<br>
other octets as 1 excluding ASCII whitespace, and excluding any > ';', '{' or '}' followed by ASCII whitespace, and excluding any<br>
';', '{' or '}' followed by ASCII whitespace, and excluding any > ';', '{' or '}' octet immediately before the end of file.
';', '{' or '}' octet immediately before the end of file.
```
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, ASCII whitespace includes ASCII tab, ASCII space, ASCII newline,
ASCII formfeed, and ASCII carriage return. ASCII formfeed, and ASCII carriage return.
@@ -215,10 +215,12 @@ by the IOCCC size tool source code is preferred by the judges.
Take note that this secondary limit imposed by the IOCCC size tool 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 `#define` C reserved words in an effort
to get around the size limits of rule 2. to get around the size limits of [Rule 2](rules.html#rule2).
Yes Virginia, **that is a hint**! Yes Virginia, **that is a hint**!
**`|`** The [Rule 2a](rules.html#rule2a) size was changed from 4096 to 4993: a change that keeps the "2b to 2a" size ratio to a value similar to the [2001-2020 IOCCC era](../faq.html#size_rule).
We applaud programs that do not issue warnings when compiled. 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 `-Wno-foobar`
flags. Unfortunately such flags are NOT portable. Moreover, flags. Unfortunately such flags are NOT portable. Moreover,
@@ -369,7 +371,7 @@ On 28 January 2007, the Judges rescinded the requirement that the
The `exit(3)` function returns `void`. Some broken systems have `exit(3)` The `exit(3)` function returns `void`. Some broken systems have `exit(3)`
return `int`, your entry should assume that `exit(3)` returns a `void`. return `int`, your entry should assume that `exit(3)` returns a `void`.
**`|`** This guideline has a change mark at the very start of this line. **`|`** This _guideline_ has a change mark at the very start of this line.
Small programs are best when they are short, obscure and concise. Small programs are best when they are short, obscure and concise.
While such programs are not as complex as other winners, they do While such programs are not as complex as other winners, they do
@@ -455,7 +457,7 @@ program is reasonably portable.
We prefer programs that are portable across a wide variety of Unix-like We prefer programs that are portable across a wide variety of Unix-like
operating systems (i.e., Linux, GNU Hurd, BSD, Unix, etc.). operating systems (i.e., Linux, GNU Hurd, BSD, Unix, etc.).
You are in a maze of twisty guidelines, all different. You are in a maze of twisty _guidelines_, all different.
There are at least zero judges who think that Fideism has little There are at least zero judges who think that Fideism has little
or nothing to do with the IOCCC judging process. or nothing to do with the IOCCC judging process.
@@ -509,7 +511,7 @@ of code, and the other that is formatted more like a typical C
program, we tend to favor the second version. Of course, a third program, we tend to favor the second version. Of course, a third
version of the same program that is formatted in an interesting version of the same program that is formatted in an interesting
and/or obfuscated way, would definitely win over the first two! and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one entry. See the rules for details. Remember, you can submit more than one entry. See the [IOCCC rules](rules.html) for details.
We suggest that you avoid trying for the 'smallest self-replicating' We suggest that you avoid trying for the 'smallest self-replicating'
source. The smallest, a zero byte entry, [won in 1994](../1994/smr/index.html). source. The smallest, a zero byte entry, [won in 1994](../1994/smr/index.html).
@@ -555,15 +557,18 @@ source program (one that actually works) to display audio/visual data.
X client entries should avoid using X related libraries and X client entries should avoid using X related libraries and
software that is not in wide spread use. software that is not in wide spread use.
This is the only guideline that contains the word fizzbin. This is the only _guideline_ that contains the word fizzbin.
**`|`** However, do you know how to play [fizzbin](https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin)? **`|`** However, do you know how to play [fizzbin](https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin)?
You do?!? (Except on Tuesday) You do?!? (Except on Tuesday?)
**`|`** OK, there are actually 3 _guidelines_ that contain the word fizzbin.
We don't like entries that use proprietary toolkits such as the `M*tif`, We don't like entries that use proprietary toolkits such as the `M*tif`,
`Xv*ew`, or `OpenL*ok` toolkits, since not everyone has them. Use an `Xv*ew`, or `OpenL*ok` toolkits, since not everyone has them. Use an
open source toolkit that is widely and freely available instead. open source toolkit that is widely and freely available instead.
**NOTE**: The previous guideline in this spot has been replaced by this guideline: **NOTE**: The previous _guideline_ in this spot has been replaced by this _guideline_:
X client entries should not to depend on particular items on X client entries should not to depend on particular items on
`.Xdefaults`. If you must do so, be sure to note the required lines `.Xdefaults`. If you must do so, be sure to note the required lines
@@ -584,13 +589,13 @@ the scope of the contest, we phrase our bias to favor:
**`|`** You are **well advised** to submit entries that conform to the [Single UNIX Specification Version 4](https://unix.org/version4/overview.html). **`|`** You are **well advised** to submit entries that conform to the [Single UNIX Specification Version 4](https://unix.org/version4/overview.html).
**`|`** You very well might not be completely be prohibited from failing to not **`|`** You very well might not be completely be prohibited from failing to not
**`|`** partly misunderstand this particular guideline, but of course, we could **`|`** partly misunderstand this particular _guideline_, but of course, we could
**`|`** not possibly comment! :-) Nevertheless, you are neither prohibited, nor are **`|`** not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
**`|`** you fully required to determine that this or the previous sentence is either false **`|`** you fully required to determine that this or the previous sentence is either false
**`|`** and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider **`|`** and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider
**`|`** to do so, accordingly. Thank you very much. **`|`** to do so, accordingly. Thank you very much.
Any complaints about the above guideline could be addressed to the Any complaints about the above _guideline_ could be addressed to the
Speaker of the House of Commons, or to the speaker of your national Speaker of the House of Commons, or to the speaker of your national
parliament should you have one. parliament should you have one.
@@ -612,7 +617,7 @@ You are better off explaining what your entry does in the program
"remarks" section rather than leaving it obscure for the judges "remarks" section rather than leaving it obscure for the judges
as we might miss something and/or be too tired to notice. as we might miss something and/or be too tired to notice.
**`|`** Please avoid this specific individual guideline, if it at all possible. **`|`** Please avoid this specific individual _guideline_, if it at all possible.
We freely admit that interesting, creative or humorous comments in We freely admit that interesting, creative or humorous comments in
the program "remarks" help your chances of winning. If you had to the program "remarks" help your chances of winning. If you had to
@@ -631,7 +636,7 @@ prevent such trailing control-M's being added.
One should restrict libcurses to portable features found on BSD One should restrict libcurses to portable features found on BSD
or Linux curses. or Linux curses.
Rule 13 states any C source that fails to compile because of unescaped [Rule 13](rules.html#rule13) states any C source that fails to compile because of unescaped
octets with the high bit set (octet value >= 128) will be rejected. octets with the high bit set (octet value >= 128) will be rejected.
Instead of unescaped octets, you should use \octal or \hex escapes: Instead of unescaped octets, you should use \octal or \hex escapes:
@@ -671,15 +676,15 @@ We believe that Mark Twain's remark:
Get your facts first, then you can distort them as you please. Get your facts first, then you can distort them as you please.
``` ```
is a good guideline for those writing code for the IOCCC. is a good motto for those writing code for the IOCCC.
**`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c) **`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
is not an original work, is not an original work,
unless you are Anthony C Howe, in which case it is original! unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content of 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. Anthony C Howe, might run the risk of violating [Rule 7](rules.html#rule7).
Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool. [Rule 7](rules.html#rule7) 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 However if you do, you might wish to make your tool do something more
interesting than simply implementing the IOCCC size tool algorithm. interesting than simply implementing the IOCCC size tool algorithm.
@@ -768,53 +773,53 @@ and state:
# ABUSING THE RULES: # ABUSING THE RULES:
Legal abuse of the [rules](rules.html) is somewhat encouraged. Legal rule abuse Legal abuse of the [IOCCC rules](rules.html) is somewhat encouraged. Legal rule abuse
may involve, but is not limited to, doing things that are technically allowed by may involve, but is not limited to, doing things that are technically allowed by
the [rules](rules.html) and yet do not fit the spirit of what we intended to be the [IOCCC rules](rules.html) and yet do not fit the spirit of what we intended to be
submitted. submitted.
Legal rule abuse is encouraged to help promote creativity. Rule abuse Legal rule abuse is encouraged to help promote creativity. Rule abuse
entries, regardless of if they receive an award, result in changes to entries, regardless of if they receive an award, result in changes to
the next year's [rules](rules.html) and [guidelines](guidelines.html). the next year's [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html).
Legal abuse of the [rules](rules.html) is NOT an invitation to violate the Legal abuse of the [IOCCC rules](rules.html) is NOT an invitation to violate the
[rules](rules.html). An entry that violates the [rules](rules.html) in the [IOCCC rules](rules.html). An entry that violates the [rules](rules.html) in the
opinion of the judges, **WILL** be opinion of the judges, **WILL** be
disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you
have an entry that might otherwise be interesting, you might want to have an entry that might otherwise be interesting, you might want to
submit two versions; one that does not abuse the [rules](rules.html) and one that submit two versions; one that does not abuse the [IOCCC rules](rules.html) and one that
does. does.
If you intend to abuse the [rules](rules.html), indicate so in the program If you intend to abuse the [IOCCC rules](rules.html), indicate so in the program
"remarks". You must try to justify why you consider your rule abuse to be "remarks". You must try to justify why you consider your rule abuse to be
allowed under the [rules](rules.html). That is, you must plead your case as to allowed under the [IOCCC rules](rules.html). That is, you must plead your case as to
why your entry is valid. Humor and/or creativity help plead a case. why your entry is valid. Humor and/or creativity help plead a case.
Abusing the web submission procedure tends to annoy us more Abusing the web submission procedure tends to annoy us more
than amuse us. Spend your creative energy on content of your than amuse us. Spend your creative energy on content of your
entry rather than on the submission process itself. entry rather than on the submission process itself.
We are often asked why the contest [rules](rules.html) and We are often asked why the contest [IOCCC rules](rules.html) and
[guidelines](guidelines.html) seem too [IOCCC guidelines](guidelines.html) seem too
strange or contain mistakes, flaws or grammatical errors. One reason strange or contain mistakes, flaws or grammatical errors. One reason
is that we sometimes make genuine mistakes. But in many cases such is that we sometimes make genuine mistakes. But in many cases such
problems, flaws or areas of confusion are deliberate. Changes to problems, flaws or areas of confusion are deliberate. Changes to
[rules](rules.html) and [guidelines](guidelines.html) in response to rule abuses, are done in a minimal [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html) in response to rule abuses, are done in a minimal
fashion. Often we will deliberately leave behind holes (or introduce fashion. Often we will deliberately leave behind holes (or introduce
new ones) so that future rule abuse may continue. A cleaver author 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 should be able to read them and "drive a truck through the holes" in
the [rules](rules.html) and [guidelines](guidelines.html). the [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html).
At the risk of stating the obvious, this contest is a parody of the software At the risk of stating the obvious, this contest is a parody of the software
development process. The [rules](rules.html) and [guidelines](guidelines.html) development process. The [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html)
are only a small part of the overall contest. Even so, one may think the are only a small part of the overall contest. Even so, one may think the
contest [rules](rules.html) and [guideline](guidelines.html) process as a parody contest [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html) process as a parody
of the sometimes tragic mismatch between what a customer (or marketing) wants of the sometimes tragic mismatch between what a customer (or marketing) wants
and what engineering delivers. Real programmers must face obfuscated and and what engineering delivers. Real programmers must face obfuscated and
sometimes conflicting specifications and requirements from marketing, sales, sometimes conflicting specifications and requirements from marketing, sales,
product management an even from customers themselves on a all too regular basis. product management an even from customers themselves on a all too regular basis.
This is one of the reasons why the [rules](rules.html) and This is one of the reasons why the [IOCCC rules](rules.html) and
[guidelines](guidelines.html) are written in obfuscated form. [IOCCC guidelines](guidelines.html) are written in obfuscated form.
# JUDGING PROCESS: # JUDGING PROCESS:
@@ -847,8 +852,8 @@ 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 Honeyman to not be form Honeyman. This of course creates an interesting paradox
known as the "obfuscated Peter Honeyman paradox". Should Peter Honeyman known as the "obfuscated Peter Honeyman paradox". Should Peter Honeyman
actually submit an obfuscated entry, he alone is excluded from the above, as we 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 will likely believe it just another attempt at confusion. This _guideline_ is
known as the "Peter Honeyman is exempt" guideline. known as the "Peter Honeyman is exempt" _guideline_.
BTW: None of the entries claiming to be from Peter Honeyman have ever BTW: None of the entries claiming to be from Peter Honeyman have ever
won an award. So it is theoretically possible that Peter Honeyman won an award. So it is theoretically possible that Peter Honeyman
@@ -901,7 +906,7 @@ A reading consists of a number of actions:
In later rounds, other actions are performed including performing In later rounds, other actions are performed including performing
miscellaneous tests on the source and binary. miscellaneous tests on the source and binary.
**`|`** This is the very guideline that goes, BING! **`|`** This is the very _guideline_ that goes, BING!
Until we reduce the stack of entries down to about 25 entries, entries Until we reduce the stack of entries down to about 25 entries, entries
are judged on an individual basis. An entry is set aside because it are judged on an individual basis. An entry is set aside because it
@@ -951,7 +956,7 @@ This technique is highly discouraged for use by non-IOCCC judges.
More often than not, we select a small entry (usually one line), a More often than not, we select a small entry (usually one line), a
strange/creative layout entry. We sometimes also select an strange/creative layout entry. We sometimes also select an
entry that abuses the contest guidelines in an interesting way, entry that abuses the [IOCCC guidelines](guidelines.html) in an interesting way,
or that stretches the content rules that while legal, is or that stretches the content rules that while legal, is
nevertheless goes against the intent of the rules. nevertheless goes against the intent of the rules.
@@ -1027,11 +1032,11 @@ Last, but not least, winners receive international fame and flames! :-)
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html). **`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as **`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as the
[rules](rules.html) and the [guidelines](guidelines.html) may (and often do) change from year to year. [IOCCC rules](rules.html) and the [IOCCC guidelines](guidelines.html) may (and often do) change from year to year.
**`|`** You should be sure you have the current [rules](rules.html) and **`|`** You should be sure you have the current [IOCCC rules](rules.html) and
[guidelines](guidelines.html) prior to submitting entries. [IOCCC guidelines](guidelines.html) prior to submitting entries.
**`|`** See the [Official IOCCC website news](../news.html) for additional information. **`|`** See the [Official IOCCC website news](../news.html) for additional information.
+79 -17
View File
@@ -404,8 +404,10 @@ future IOCCC openings.</p>
granted provided this this copyright and notice are included in its entirety granted provided this this copyright and notice are included in its entirety
and remains unaltered. All other uses must receive prior permission in and remains unaltered. All other uses must receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p> writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="rules-version">Rules version</h2> <div id="rule_version">
<p><strong><code>|</code></strong> These rules are version <strong>2024-06-15-v28</strong>.</p> <h2 id="ioccc-rules-version">IOCCC Rules version</h2>
</div>
<p><strong><code>|</code></strong> These <a href="rules.html">IOCCC rules</a> are version <strong>2024-06-23-v28</strong>.</p>
<p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p> <p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<h3 id="change-marks">Change marks</h3> <h3 id="change-marks">Change marks</h3>
<p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p> <p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p>
@@ -423,7 +425,7 @@ IOCCC start with the <strong><code>|</code></strong> symbol.</p>
<h1 id="goals-of-the-contest">Goals of the Contest</h1> <h1 id="goals-of-the-contest">Goals of the Contest</h1>
<p>The goals of the IOCCC:</p> <p>The goals of the IOCCC:</p>
<ul> <ul>
<li>To write the most Obscure/Obfuscated C program within the <a href="rules.html">rules</a>.</li> <li>To write the most Obscure/Obfuscated C program within the <a href="rules.html">IOCCC rules</a>.</li>
<li>To show the importance of programming style, in an ironic way.</li> <li>To show the importance of programming style, in an ironic way.</li>
<li>To stress C compilers with unusual code.</li> <li>To stress C compilers with unusual code.</li>
<li>To illustrate some of the subtleties of the C language.</li> <li>To illustrate some of the subtleties of the C language.</li>
@@ -432,8 +434,8 @@ IOCCC start with the <strong><code>|</code></strong> symbol.</p>
<h1 id="important-ioccc-dates">Important IOCCC dates</h1> <h1 id="important-ioccc-dates">Important IOCCC dates</h1>
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>202x-MMM-DD HH:MM:SS UTC</strong>.<br> <p><strong><code>|</code></strong> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>202x-MMM-DD HH:MM:SS UTC</strong>.<br>
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p> <strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
<p>Until the start of this IOCCC, these <a href="rules.html">rules</a>, <p>Until the start of this IOCCC, these <a href="rules.html">IOCCC rules</a>,
<a href="guidelines.html">guidelines</a> and iocccsize.c (contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry <a href="guidelines.html">IOCCC guidelines</a> and iocccsize.c (contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a> and invoked by the toolkit</a> and invoked by the
<code>mkiocccentry(1)</code> tool) should be considered provisional <strong>BETA</strong> versions and <code>mkiocccentry(1)</code> tool) should be considered provisional <strong>BETA</strong> versions and
<strong>may be adjusted <em>AT ANY TIME</em></strong>.</p> <strong>may be adjusted <em>AT ANY TIME</em></strong>.</p>
@@ -445,24 +447,32 @@ for <strong>important information</strong> on how to submit to the IOCCC.</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>.<br> <p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2024-MMM-DD HH:MM:SS UTC</strong>.<br>
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p> <strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
<p>Please wait to submit your entries until after that time.</p> <p>Please wait to submit your entries until after that time.</p>
<p>The official <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a> will be <p>The official <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a> will be
available on the <a href="../index.html">official IOCCC website</a> on or slightly before available on the <a href="../index.html">official IOCCC website</a> on or slightly before
the start of this IOCCC. The <code>mkiocccentry</code> toolkit may be obtained at any time the start of this IOCCC. The <code>mkiocccentry</code> toolkit may be obtained at any time
at the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit repo</a>.</p> at the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit repo</a>.</p>
<p>Please recheck on or after the start of this IOCCC to be sure you <p>Please recheck on or after the start of this IOCCC to be sure you
are using the correct versions of these items before using the IOCCC are using the correct versions of these items before using the IOCCC
entry submission URL.</p> entry submission URL.</p>
<h1 id="rules">RULES</h1> <h1 id="ioccc-rules">IOCCC RULES</h1>
<p>To help us with the volume of entries, we ask that you follow these rules:</p> <p>To help us with the volume of entries, we ask that you follow these rules:</p>
<h2 id="rule-0">Rule 0</h2> <h2 id="rule-0">Rule 0</h2>
<p>We need a rule 0. :-)</p> <p>We need a rule 0. :-)</p>
<div id="rule1">
<h2 id="rule-1">Rule 1</h2> <h2 id="rule-1">Rule 1</h2>
</div>
<p>Your entry must be a complete program.</p> <p>Your entry must be a complete program.</p>
<div id="rule2">
<h2 id="rule-2">Rule 2</h2> <h2 id="rule-2">Rule 2</h2>
<p>The size rule requires your entry to satisfy <strong>BOTH</strong> rule 2a and rule 2b:</p> </div>
<p>The size rule requires your entry to satisfy <strong>BOTH</strong> <a href="#rule2a">Rule 2a</a> and <a href="#rule2b">Rule 2b</a>:</p>
<div id="rule2a">
<h2 id="rule-2a">Rule 2a</h2> <h2 id="rule-2a">Rule 2a</h2>
</div>
<p><strong><code>|</code></strong> The size of your program source <strong>MUST BE &lt;= 4993 bytes</strong> in length.</p> <p><strong><code>|</code></strong> The size of your program source <strong>MUST BE &lt;= 4993 bytes</strong> in length.</p>
<div id="rule2b">
<h2 id="rule-2b">Rule 2b</h2> <h2 id="rule-2b">Rule 2b</h2>
</div>
<p><strong><code>|</code></strong> When your program source is fed as input to the current IOCCC size <p><strong><code>|</code></strong> When your program source is fed as input to the current IOCCC size
tool, and the IOCCC size tool <code>-i</code> command line option is used, the tool, and the IOCCC size tool <code>-i</code> command line option is used, the
value printed <strong>shall not exceed 2503</strong>.</p> value printed <strong>shall not exceed 2503</strong>.</p>
@@ -470,7 +480,9 @@ value printed <strong>shall not exceed 2503</strong>.</p>
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry tool repo</a>. If you use <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry tool repo</a>. If you use
the <code>mkiocccentry</code> tool (which we <strong>STRONGLY recommend you do</strong>) it will invoke the <code>mkiocccentry</code> tool (which we <strong>STRONGLY recommend you do</strong>) it will invoke
this tool before packaging your entry for submission.</p> this tool before packaging your entry for submission.</p>
<div id="rule3">
<h2 id="rule-3">Rule 3</h2> <h2 id="rule-3">Rule 3</h2>
</div>
<p>Submissions should be performed using the instructions outlined at: <p>Submissions should be performed using the instructions outlined at:
the <a href="../faq.html#submit">How to enter FAQ</a>.</p> the <a href="../faq.html#submit">How to enter FAQ</a>.</p>
<p>To submit to an open IOCCC, you must use the <a href="https://submit.ioccc.org/">IOCCC submit server</a>.</p> <p>To submit to an open IOCCC, you must use the <a href="https://submit.ioccc.org/">IOCCC submit server</a>.</p>
@@ -478,65 +490,89 @@ the <a href="../faq.html#submit">How to enter FAQ</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>.<br> <p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2024-MMM-DD HH:MM:SS UTC</strong>.<br>
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p> <strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
<p>Please wait to submit your entries until after that time.</p> <p>Please wait to submit your entries until after that time.</p>
<div id="rule4">
<h2 id="rule-4">Rule 4</h2> <h2 id="rule-4">Rule 4</h2>
</div>
<p>If your entry is selected as a winner, it will be modified as follows:</p> <p>If your entry is selected as a winner, it will be modified as follows:</p>
<p>Your ‘build’ instructions will be incorporated into a Makefile.</p> <p>Your ‘build’ instructions will be incorporated into a Makefile.</p>
<p>Your source code will be the file <strong>prog.c</strong>. The compiled binary <p>Your source code will be the file <strong>prog.c</strong>. The compiled binary
will be called <strong>prog</strong>.</p> will be called <strong>prog</strong>.</p>
<div id="rule5">
<h2 id="rule-5">Rule 5</h2> <h2 id="rule-5">Rule 5</h2>
</div>
<p>Your entry <strong>MUST</strong> not modify the content or filename of any part of your <p>Your entry <strong>MUST</strong> not modify the content or filename of any part of your
original entry including, but not limited to <strong>prog.c</strong>, the <strong>Makefile</strong> original entry including, but not limited to <strong>prog.c</strong>, the <strong>Makefile</strong>
(that we create from your how to build instructions), as well as any data (that we create from your how to build instructions), as well as any data
files you submit.</p> files you submit.</p>
<p>If you entry wishes to modify such content, it <strong>MUST</strong> first copy the <p>If you entry wishes to modify such content, it <strong>MUST</strong> first copy the
file to a new filename and then modify that copy.</p> file to a new filename and then modify that copy.</p>
<div id="rule6">
<h2 id="rule-6">Rule 6</h2> <h2 id="rule-6">Rule 6</h2>
</div>
<p><strong><code>|</code></strong> I am not a rule, I am a <code>free(void *human);</code> ‼️</p> <p><strong><code>|</code></strong> I am not a rule, I am a <code>free(void *human);</code> ‼️</p>
<p><strong><code>|</code></strong>        <code>while (!(ioccc(rule(you(are(number(6)))))) {</code><br> <p><strong><code>|</code></strong>        <code>while (!(ioccc(rule(you(are(number(6)))))) {</code><br>
<strong><code>|</code></strong>                <code>ha_ha_ha();</code><br> <strong><code>|</code></strong>                <code>ha_ha_ha();</code><br>
<strong><code>|</code></strong>        <code>}</code></p> <strong><code>|</code></strong>        <code>}</code></p>
<div id="rule7">
<h2 id="rule-7">Rule 7</h2> <h2 id="rule-7">Rule 7</h2>
</div>
<p>The obfuscated C program must be an original work that you own.</p> <p>The obfuscated C program must be an original work that you own.</p>
<p>You (the author(s)) must own the contents of your submission OR <p>You (the author(s)) must own the contents of your submission OR
you must have permission from the owner(s) to submit their content you must have permission from the owner(s) to submit their content
under the following license:</p> under the following license:</p>
<p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p> <p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p>
<p>See also rule 18.</p> <p>See also <a href="#rule18">Rule 18</a>.</p>
<p>If you submit any content that is owned by others, you <strong>MUST</strong> <p>If you submit any content that is owned by others, you <strong>MUST</strong>
detail that ownership (i.e., who owns what) <strong>AND document the detail that ownership (i.e., who owns what) <strong>AND document the
permission you obtained</strong>.</p> permission you obtained</strong>.</p>
<p>Please note that the IOCCC size tool is <strong>NOT</strong> an original work.</p> <p>Please note that the IOCCC size tool is <strong>NOT</strong> an original work.</p>
<div id="rule8">
<h2 id="rule-8">Rule 8</h2> <h2 id="rule-8">Rule 8</h2>
</div>
<p><strong><code>|</code></strong> Entries must be received prior to the end of this IOCCC which is <strong>2024-MMM-DD HH:MM:SS UTC</strong>.<br> <p><strong><code>|</code></strong> Entries must be received prior to the end of this IOCCC which is <strong>2024-MMM-DD HH:MM:SS UTC</strong>.<br>
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p> <strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
<p>A confirmation of submission will be sent to the submitting email address <p>A confirmation of submission will be sent to the submitting email address
before the close of the contest.</p> before the close of the contest.</p>
<div id="rule9">
<h2 id="rule-9">Rule 9</h2> <h2 id="rule-9">Rule 9</h2>
</div>
<p><strong><code>|</code></strong> Each person may submit up to and including 10.000000 entries per contest.</p> <p><strong><code>|</code></strong> Each person may submit up to and including 10.000000 entries per contest.</p>
<p>Each entry must be submitted separately.</p> <p>Each entry must be submitted separately.</p>
<div id="rule10">
<h2 id="rule-10">Rule 10</h2> <h2 id="rule-10">Rule 10</h2>
</div>
<p>Entries requiring human interaction to be initially compiled are not permitted.</p> <p>Entries requiring human interaction to be initially compiled are not permitted.</p>
<div id="rule11">
<h2 id="rule-11">Rule 11</h2> <h2 id="rule-11">Rule 11</h2>
</div>
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>, super-user, <p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>, super-user,
special owner, special group, etc.) are still highly discouraged. We special owner, special group, etc.) are still highly discouraged. We
do not guarantee these functions will behave as you expect on our test do not guarantee these functions will behave as you expect on our test
platforms. If your program needs special permissions <strong>please document platforms. If your program needs special permissions <strong>please document
them</strong> in the remarks file.</p> them</strong> in the remarks file.</p>
<div id="rule12">
<h2 id="rule-12">Rule 12</h2> <h2 id="rule-12">Rule 12</h2>
</div>
<p>Legal abuse of the rules is somewhat encouraged. An entry that, in <p>Legal abuse of the rules is somewhat encouraged. An entry that, in
the opinion of the judges, violates the rules will be disqualified. the opinion of the judges, violates the rules will be disqualified.
Entries that attempt to abuse the rules <strong>MUST</strong> try to justify why Entries that attempt to abuse the rules <strong>MUST</strong> try to justify why
their rule abuse is legal, in the remarks file.</p> their rule abuse is legal, in the remarks file.</p>
<div id="rule13">
<h2 id="rule-13">Rule 13</h2> <h2 id="rule-13">Rule 13</h2>
</div>
<p>Any C source that fails to compile because of unescaped octets with <p>Any C source that fails to compile because of unescaped octets with
the high bit set (octet value &gt;= 128) will be rejected.</p> the high bit set (octet value &gt;= 128) will be rejected.</p>
<div id="rule14">
<h2 id="rule-14">Rule 14</h2> <h2 id="rule-14">Rule 14</h2>
</div>
<p>Any C source that fails to compile because of lines with trailing <p>Any C source that fails to compile because of lines with trailing
control-M’s (i.e., lines with a tailing octet <code>015</code>) will be rejected.</p> control-M’s (i.e., lines with a tailing octet <code>015</code>) will be rejected.</p>
<p>Please do not put trailing control-M’s on remarks file lines. <p>Please do not put trailing control-M’s on remarks file lines.
Please check to be sure, before submitting, that you have removed Please check to be sure, before submitting, that you have removed
any control-M at the end of remark file lines.</p> any control-M at the end of remark file lines.</p>
<div id="rule15">
<h2 id="rule-15">Rule 15</h2> <h2 id="rule-15">Rule 15</h2>
</div>
<p>When you submit your entry you must have a valid email address <p>When you submit your entry you must have a valid email address
that can both send and receive email. The online submission that can both send and receive email. The online submission
method is a two phase process that requires the use of an method is a two phase process that requires the use of an
@@ -552,12 +588,16 @@ be valid for submitting and editing the entry for the lifetime of the
competition.</p> competition.</p>
<p>See also <a href="../faq.html#submit">How may I submit to the IOCCC?</a> in the <p>See also <a href="../faq.html#submit">How may I submit to the IOCCC?</a> in the
<a href="../faq.html">FAQ</a>.</p> <a href="../faq.html">FAQ</a>.</p>
<div id="rule16">
<h2 id="rule-16">Rule 16</h2> <h2 id="rule-16">Rule 16</h2>
</div>
<p>You are <strong>STRONGLY</strong> encouraged to submit a previously unpublished <em>AND</em> <p>You are <strong>STRONGLY</strong> encouraged to submit a previously unpublished <em>AND</em>
original entry. Submissions that are similar to previous entries are original entry. Submissions that are similar to previous entries are
discouraged. As we judge anonymously, submissions that have already discouraged. As we judge anonymously, submissions that have already
been published may be disqualified.</p> been published may be disqualified.</p>
<div id="rule17">
<h2 id="rule-17">Rule 17</h2> <h2 id="rule-17">Rule 17</h2>
</div>
<p><strong><code>|</code></strong> The total size of your submission: the sum of the size of the program, <p><strong><code>|</code></strong> The total size of your submission: the sum of the size of the program,
hints, comments, build and info files <strong>MUST</strong> be less than or equal hints, comments, build and info files <strong>MUST</strong> be less than or equal
to 28314624 octets (27651K) in size.</p> to 28314624 octets (27651K) in size.</p>
@@ -565,19 +605,25 @@ to 28314624 octets (27651K) in size.</p>
that file must than or equal 3999971 octets in size.</p> that file must than or equal 3999971 octets in size.</p>
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> <p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
(see <code>mkiocccentry(1)</code> and <code>txzchk(1)</code>) will help you verify that your (see <code>mkiocccentry(1)</code> and <code>txzchk(1)</code>) will help you verify that your
submission conforms to this rule.</p> submission conforms to this <a href="#rule17">Rule 17</a>.</p>
<div id="rule18">
<h2 id="rule-18">Rule 18</h2> <h2 id="rule-18">Rule 18</h2>
</div>
<p>The entirety of your entry must be submitted under the following license:</p> <p>The entirety of your entry must be submitted under the following license:</p>
<p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p> <p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p>
<p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong> <p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
you <strong>MUST HAVE PERMISSION</strong> from the owner(s) to submit their content.</p> you <strong>MUST HAVE PERMISSION</strong> from the owner(s) to submit their content.</p>
<p>You must not submit anything that cannot be submitted under that license.</p> <p>You must not submit anything that cannot be submitted under that license.</p>
<div id="rule19">
<h2 id="rule-19">Rule 19</h2> <h2 id="rule-19">Rule 19</h2>
</div>
<p>The remarks file must be written in markdown format. See <p>The remarks file must be written in markdown format. See
the Daring Fireball <a href="http://daringfireball.net/projects/markdown/basics">Markdown: Basics</a> the Daring Fireball <a href="http://daringfireball.net/projects/markdown/basics">Markdown: Basics</a>
for more information.</p> for more information.</p>
<p><strong><code>|</code></strong> We currently use <a href="https://pandoc.org">pandoc</a> to convert markdown to HTML.</p> <p><strong><code>|</code></strong> We currently use <a href="https://pandoc.org">pandoc</a> to convert markdown to HTML.</p>
<div id="rule20">
<h2 id="rule-20">Rule 20</h2> <h2 id="rule-20">Rule 20</h2>
</div>
<p>The how to build instructions must be in Makefile format. See <a href="../faq.html#make_compatibility">the FAQ about <p>The how to build instructions must be in Makefile format. See <a href="../faq.html#make_compatibility">the FAQ about
make(1) compatibility the IOCCC make(1) compatibility the IOCCC
supports</a> for more details.</p> supports</a> for more details.</p>
@@ -597,13 +643,17 @@ to use.</p>
for help in constructing your Makefile. The <code>mkiocccentry</code>, which can be found for help in constructing your Makefile. The <code>mkiocccentry</code>, which can be found
at the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, tries to at the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, tries to
detect if required rules exist in your Makefile.</p> detect if required rules exist in your Makefile.</p>
<div id="rule21">
<h2 id="rule-21">Rule 21</h2> <h2 id="rule-21">Rule 21</h2>
</div>
<p>Your entry must not create or modify files above the current directory <p>Your entry must not create or modify files above the current directory
with the exception of the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your entry with the exception of the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your entry
<strong>MAY</strong> create subdirectories below the current directory, or in <code>/tmp</code>, <strong>MAY</strong> create subdirectories below the current directory, or in <code>/tmp</code>,
or in <code>/var/tmp</code> provided that <code>.</code> is <strong>NOT</strong> the first octet in any or in <code>/var/tmp</code> provided that <code>.</code> is <strong>NOT</strong> the first octet in any
directory name or filename you submit.</p> directory name or filename you submit.</p>
<div id="rule22">
<h2 id="rule-22">Rule 22</h2> <h2 id="rule-22">Rule 22</h2>
</div>
<p>Catch 22:</p> <p>Catch 22:</p>
<p>Your source code, data files, remarks and program output must <strong>NOT</strong> <p>Your source code, data files, remarks and program output must <strong>NOT</strong>
identify the authors of your code. The judges <strong>STRONGLY prefer</strong> to identify the authors of your code. The judges <strong>STRONGLY prefer</strong> to
@@ -614,29 +664,41 @@ within your code, data, remarks or program output (unless you are
<em>Peter Honeyman</em> or pretending to be <em>Peter Honeyman</em>) will be grounds <em>Peter Honeyman</em> or pretending to be <em>Peter Honeyman</em>) will be grounds
for disqualification of your entry.</p> for disqualification of your entry.</p>
<p>Yes, Virginia, <strong>WE REALLY MEAN IT!</strong></p> <p>Yes, Virginia, <strong>WE REALLY MEAN IT!</strong></p>
<div id="rule23">
<h2 id="rule-23">Rule 23</h2> <h2 id="rule-23">Rule 23</h2>
</div>
<p>This prime rule number is reserved for future use.</p> <p>This prime rule number is reserved for future use.</p>
<div id="rule24">
<h2 id="rule-24">Rule 24</h2> <h2 id="rule-24">Rule 24</h2>
<p>Even though 24 is not prime, you should still see rule #23.</p> </div>
<p>Even though 24 is not prime, you should still see <a href="#rule23">Rule 23</a>.</p>
<div id="rule25">
<h2 id="rule-25">Rule 25</h2> <h2 id="rule-25">Rule 25</h2>
<p><strong><code>|</code></strong> The IOCCC rule set needs more than 5^2 rules: see rule #26.</p> </div>
<p><strong><code>|</code></strong> The <a href="rules.html">IOCCC rule set</a> needs more than 5^2 rules: see <a href="#rule26">Rule 26</a>.</p>
<div id="rule26">
<h2 id="rule-26">Rule 26</h2> <h2 id="rule-26">Rule 26</h2>
</div>
<p><strong><code>|</code></strong> “The quick brown fox jumps over the lazy dog”.<br> <p><strong><code>|</code></strong> “The quick brown fox jumps over the lazy dog”.<br>
<strong><code>|</code></strong> “Pack my box with five dozen liquor jugs.”<br> <strong><code>|</code></strong> “Pack my box with five dozen liquor jugs.”<br>
<strong><code>|</code></strong> “How vexingly quick daft zebras jump!”<br> <strong><code>|</code></strong> “How vexingly quick daft zebras jump!”<br>
<strong><code>|</code></strong> “Sphinx of black quartz, judge my vow.”<br> <strong><code>|</code></strong> “Sphinx of black quartz, judge my vow.”<br>
<strong><code>|</code></strong> “Waltz, bad nymph, for quick jigs vex.”<br> <strong><code>|</code></strong> “Waltz, bad nymph, for quick jigs vex.”<br>
<strong><code>|</code></strong> “Mr. Jock, TV quiz PhD, bags few lynx.”</p> <strong><code>|</code></strong> “Mr. Jock, TV quiz PhD, bags few lynx.”</p>
<div id="rule27">
<h2 id="rule-27">Rule 27</h2> <h2 id="rule-27">Rule 27</h2>
<p><strong><code>|</code></strong> Unless otherwise needed, rule 27 is reserved for something cubic. :-)</p> </div>
<p><strong><code>|</code></strong> Unless otherwise needed, <a href="#rule27">Rule 27</a> is reserved for something cubic. :-)</p>
<div id="rule28">
<h2 id="rule-28">Rule 28</h2> <h2 id="rule-28">Rule 28</h2>
<p><strong><code>|</code></strong> Rule 28 is a perfect way end to the list of rules as we do not plan to have 496 rules.</p> </div>
<p><strong><code>|</code></strong> <a href="#rule28">Rule 28</a> is a perfect way end to the list of <a href="rules.html">IOCCC rules</a> as we do not plan to have 496 rules. :-)</p>
<h1 id="for-more-information">FOR MORE INFORMATION:</h1> <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> 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 <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> <a href="rules.html">IOCCC rules</a> and the <a href="guidelines.html">IOCCC 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 <p><strong><code>|</code></strong> You should be sure you have the current <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">guidelines</a> prior to submitting entries.</p> <a href="guidelines.html">IOCCC 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> 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 <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 the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our
+80 -18
View File
@@ -32,9 +32,11 @@ and remains unaltered. All other uses must receive prior permission in
writing by [contacting the judges](../contact.html). writing by [contacting the judges](../contact.html).
## Rules version <div id="rule_version">
## IOCCC Rules version
</div>
**`|`** These rules are version **2024-06-15-v28**. **`|`** These [IOCCC rules](rules.html) are version **2024-06-23-v28**.
**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html). **IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html).
@@ -63,7 +65,7 @@ tr.v. -cated, -cating, -cates.
The goals of the IOCCC: The goals of the IOCCC:
* To write the most Obscure/Obfuscated C program within the [rules](rules.html). * To write the most Obscure/Obfuscated C program within the [IOCCC rules](rules.html).
* To show the importance of programming style, in an ironic way. * To show the importance of programming style, in an ironic way.
* To stress C compilers with unusual code. * To stress C compilers with unusual code.
* To illustrate some of the subtleties of the C language. * To illustrate some of the subtleties of the C language.
@@ -75,8 +77,8 @@ The goals of the IOCCC:
**`|`** This IOCCC runs from **2024-MMM-DD HH:MM:SS UTC** to **202x-MMM-DD HH:MM:SS UTC**.<br> **`|`** This IOCCC runs from **2024-MMM-DD HH:MM:SS UTC** to **202x-MMM-DD HH:MM:SS UTC**.<br>
**`|`** **XXX - date/time is TBD - XXX** **`|`** **XXX - date/time is TBD - XXX**
Until the start of this IOCCC, these [rules](rules.html), Until the start of this IOCCC, these [IOCCC rules](rules.html),
[guidelines](guidelines.html) and iocccsize.c (contained in the [mkiocccentry [IOCCC guidelines](guidelines.html) and iocccsize.c (contained in the [mkiocccentry
toolkit](https://github.com/ioccc-src/mkiocccentry) and invoked by the toolkit](https://github.com/ioccc-src/mkiocccentry) and invoked by the
`mkiocccentry(1)` tool) should be considered provisional **BETA** versions and `mkiocccentry(1)` tool) should be considered provisional **BETA** versions and
**may be adjusted _AT ANY TIME_**. **may be adjusted _AT ANY TIME_**.
@@ -93,7 +95,7 @@ for **important information** on how to submit to the IOCCC.
Please wait to submit your entries until after that time. Please wait to submit your entries until after that time.
The official [rules](rules.html) and [guidelines](guidelines.html) will be The official [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html) will be
available on the [official IOCCC website](../index.html) on or slightly before available on the [official IOCCC website](../index.html) on or slightly before
the start of this IOCCC. The `mkiocccentry` toolkit may be obtained at any time the start of this IOCCC. The `mkiocccentry` toolkit may be obtained at any time
at the [mkiocccentry toolkit repo](https://github.com/ioccc-src/mkiocccentry). at the [mkiocccentry toolkit repo](https://github.com/ioccc-src/mkiocccentry).
@@ -103,7 +105,7 @@ are using the correct versions of these items before using the IOCCC
entry submission URL. entry submission URL.
# RULES # IOCCC RULES
To help us with the volume of entries, we ask that you follow these rules: To help us with the volume of entries, we ask that you follow these rules:
@@ -113,22 +115,30 @@ To help us with the volume of entries, we ask that you follow these rules:
We need a rule 0. :-) We need a rule 0. :-)
<div id="rule1">
## Rule 1 ## Rule 1
</div>
Your entry must be a complete program. Your entry must be a complete program.
<div id="rule2">
## Rule 2 ## Rule 2
</div>
The size rule requires your entry to satisfy **BOTH** rule 2a and rule 2b: The size rule requires your entry to satisfy **BOTH** [Rule 2a](#rule2a) and [Rule 2b](#rule2b):
<div id="rule2a">
## Rule 2a ## Rule 2a
</div>
**`|`** The size of your program source **MUST BE <= 4993 bytes** in length. **`|`** The size of your program source **MUST BE <= 4993 bytes** in length.
<div id="rule2b">
## Rule 2b ## Rule 2b
</div>
**`|`** When your program source is fed as input to the current IOCCC size **`|`** When your program source is fed as input to the current IOCCC size
tool, and the IOCCC size tool `-i` command line option is used, the tool, and the IOCCC size tool `-i` command line option is used, the
@@ -140,7 +150,9 @@ the `mkiocccentry` tool (which we **STRONGLY recommend you do**) it will invoke
this tool before packaging your entry for submission. this tool before packaging your entry for submission.
<div id="rule3">
## Rule 3 ## Rule 3
</div>
Submissions should be performed using the instructions outlined at: Submissions should be performed using the instructions outlined at:
the [How to enter FAQ](../faq.html#submit). the [How to enter FAQ](../faq.html#submit).
@@ -155,7 +167,9 @@ When the IOCCC is not open, that link will likely be unresponsive.
Please wait to submit your entries until after that time. Please wait to submit your entries until after that time.
<div id="rule4">
## Rule 4 ## Rule 4
</div>
If your entry is selected as a winner, it will be modified as follows: If your entry is selected as a winner, it will be modified as follows:
@@ -165,7 +179,9 @@ Your source code will be the file **prog.c**. The compiled binary
will be called **prog**. will be called **prog**.
<div id="rule5">
## Rule 5 ## Rule 5
</div>
Your entry **MUST** not modify the content or filename of any part of your Your entry **MUST** not modify the content or filename of any part of your
original entry including, but not limited to **prog.c**, the **Makefile** original entry including, but not limited to **prog.c**, the **Makefile**
@@ -176,7 +192,9 @@ If you entry wishes to modify such content, it **MUST** first copy the
file to a new filename and then modify that copy. file to a new filename and then modify that copy.
<div id="rule6">
## Rule 6 ## Rule 6
</div>
**`|`** I am not a rule, I am a `free(void *human);` ‼️ **`|`** I am not a rule, I am a `free(void *human);` ‼️
@@ -185,8 +203,9 @@ file to a new filename and then modify that copy.
**`|`**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}` **`|`**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
<div id="rule7">
## Rule 7 ## Rule 7
</div>
The obfuscated C program must be an original work that you own. The obfuscated C program must be an original work that you own.
@@ -196,7 +215,7 @@ under the following license:
**`|`** **[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)** **`|`** **[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
See also rule 18. See also [Rule 18](#rule18).
If you submit any content that is owned by others, you **MUST** If you submit any content that is owned by others, you **MUST**
detail that ownership (i.e., who owns what) **AND document the detail that ownership (i.e., who owns what) **AND document the
@@ -205,7 +224,9 @@ permission you obtained**.
Please note that the IOCCC size tool is **NOT** an original work. Please note that the IOCCC size tool is **NOT** an original work.
<div id="rule8">
## Rule 8 ## Rule 8
</div>
**`|`** Entries must be received prior to the end of this IOCCC which is **2024-MMM-DD HH:MM:SS UTC**.<br> **`|`** Entries must be received prior to the end of this IOCCC which is **2024-MMM-DD HH:MM:SS UTC**.<br>
**`|`** **XXX - date/time is TBD - XXX** **`|`** **XXX - date/time is TBD - XXX**
@@ -215,19 +236,25 @@ A confirmation of submission will be sent to the submitting email address
before the close of the contest. before the close of the contest.
<div id="rule9">
## Rule 9 ## Rule 9
</div>
**`|`** Each person may submit up to and including 10.000000 entries per contest. **`|`** Each person may submit up to and including 10.000000 entries per contest.
Each entry must be submitted separately. Each entry must be submitted separately.
<div id="rule10">
## Rule 10 ## Rule 10
</div>
Entries requiring human interaction to be initially compiled are not permitted. Entries requiring human interaction to be initially compiled are not permitted.
<div id="rule11">
## Rule 11 ## Rule 11
</div>
Programs that require special privileges (`setuid(2)`, `setgid(2)`, super-user, Programs that require special privileges (`setuid(2)`, `setgid(2)`, super-user,
special owner, special group, etc.) are still highly discouraged. We special owner, special group, etc.) are still highly discouraged. We
@@ -236,7 +263,9 @@ platforms. If your program needs special permissions **please document
them** in the remarks file. them** in the remarks file.
<div id="rule12">
## Rule 12 ## Rule 12
</div>
Legal abuse of the rules is somewhat encouraged. An entry that, in Legal abuse of the rules is somewhat encouraged. An entry that, in
the opinion of the judges, violates the rules will be disqualified. the opinion of the judges, violates the rules will be disqualified.
@@ -244,13 +273,17 @@ Entries that attempt to abuse the rules **MUST** try to justify why
their rule abuse is legal, in the remarks file. their rule abuse is legal, in the remarks file.
<div id="rule13">
## Rule 13 ## Rule 13
</div>
Any C source that fails to compile because of unescaped octets with Any C source that fails to compile because of unescaped octets with
the high bit set (octet value >= 128) will be rejected. the high bit set (octet value >= 128) will be rejected.
<div id="rule14">
## Rule 14 ## Rule 14
</div>
Any C source that fails to compile because of lines with trailing Any C source that fails to compile because of lines with trailing
control-M's (i.e., lines with a tailing octet `015`) will be rejected. control-M's (i.e., lines with a tailing octet `015`) will be rejected.
@@ -260,7 +293,9 @@ Please check to be sure, before submitting, that you have removed
any control-M at the end of remark file lines. any control-M at the end of remark file lines.
<div id="rule15">
## Rule 15 ## Rule 15
</div>
When you submit your entry you must have a valid email address When you submit your entry you must have a valid email address
that can both send and receive email. The online submission that can both send and receive email. The online submission
@@ -283,7 +318,9 @@ See also [How may I submit to the IOCCC?](../faq.html#submit) in the
[FAQ](../faq.html). [FAQ](../faq.html).
<div id="rule16">
## Rule 16 ## Rule 16
</div>
You are **STRONGLY** encouraged to submit a previously unpublished _AND_ You are **STRONGLY** encouraged to submit a previously unpublished _AND_
original entry. Submissions that are similar to previous entries are original entry. Submissions that are similar to previous entries are
@@ -291,7 +328,9 @@ discouraged. As we judge anonymously, submissions that have already
been published may be disqualified. been published may be disqualified.
<div id="rule17">
## Rule 17 ## Rule 17
</div>
**`|`** The total size of your submission: the sum of the size of the program, **`|`** The total size of your submission: the sum of the size of the program,
hints, comments, build and info files **MUST** be less than or equal hints, comments, build and info files **MUST** be less than or equal
@@ -302,9 +341,12 @@ that file must than or equal 3999971 octets in size.
**`|`** The [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) **`|`** The [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
(see `mkiocccentry(1)` and `txzchk(1)`) will help you verify that your (see `mkiocccentry(1)` and `txzchk(1)`) will help you verify that your
submission conforms to this rule. submission conforms to this [Rule 17](#rule17).
<div id="rule18">
## Rule 18 ## Rule 18
</div>
The entirety of your entry must be submitted under the following license: The entirety of your entry must be submitted under the following license:
@@ -316,7 +358,9 @@ you **MUST HAVE PERMISSION** from the owner(s) to submit their content.
You must not submit anything that cannot be submitted under that license. You must not submit anything that cannot be submitted under that license.
<div id="rule19">
## Rule 19 ## Rule 19
</div>
The remarks file must be written in markdown format. See The remarks file must be written in markdown format. See
the Daring Fireball [Markdown: Basics](http://daringfireball.net/projects/markdown/basics) the Daring Fireball [Markdown: Basics](http://daringfireball.net/projects/markdown/basics)
@@ -325,7 +369,9 @@ for more information.
**`|`** We currently use [pandoc](https://pandoc.org) to convert markdown to HTML. **`|`** We currently use [pandoc](https://pandoc.org) to convert markdown to HTML.
<div id="rule20">
## Rule 20 ## Rule 20
</div>
The how to build instructions must be in Makefile format. See [the FAQ about The how to build instructions must be in Makefile format. See [the FAQ about
make&#x28;1&#x29; compatibility the IOCCC make&#x28;1&#x29; compatibility the IOCCC
@@ -355,7 +401,9 @@ at the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), tries to
detect if required rules exist in your Makefile. detect if required rules exist in your Makefile.
<div id="rule21">
## Rule 21 ## Rule 21
</div>
Your entry must not create or modify files above the current directory Your entry must not create or modify files above the current directory
with the exception of the `/tmp` and the `/var/tmp` directories. Your entry with the exception of the `/tmp` and the `/var/tmp` directories. Your entry
@@ -364,7 +412,9 @@ or in `/var/tmp` provided that `.` is **NOT** the first octet in any
directory name or filename you submit. directory name or filename you submit.
<div id="rule22">
## Rule 22 ## Rule 22
</div>
Catch 22: Catch 22:
@@ -382,22 +432,30 @@ for disqualification of your entry.
Yes, Virginia, **WE REALLY MEAN IT!** Yes, Virginia, **WE REALLY MEAN IT!**
<div id="rule23">
## Rule 23 ## Rule 23
</div>
This prime rule number is reserved for future use. This prime rule number is reserved for future use.
<div id="rule24">
## Rule 24 ## Rule 24
</div>
Even though 24 is not prime, you should still see rule #23. Even though 24 is not prime, you should still see [Rule 23](#rule23).
<div id="rule25">
## Rule 25 ## Rule 25
</div>
**`|`** The IOCCC rule set needs more than 5^2 rules: see rule #26. **`|`** The [IOCCC rule set](rules.html) needs more than 5^2 rules: see [Rule 26](#rule26).
<div id="rule26">
## Rule 26 ## Rule 26
</div>
**`|`** "The quick brown fox jumps over the lazy dog".<br> **`|`** "The quick brown fox jumps over the lazy dog".<br>
**`|`** "Pack my box with five dozen liquor jugs."<br> **`|`** "Pack my box with five dozen liquor jugs."<br>
@@ -407,14 +465,18 @@ Even though 24 is not prime, you should still see rule #23.
**`|`** "Mr. Jock, TV quiz PhD, bags few lynx." **`|`** "Mr. Jock, TV quiz PhD, bags few lynx."
<div id="rule27">
## Rule 27 ## Rule 27
</div>
**`|`** Unless otherwise needed, rule 27 is reserved for something cubic. :-) **`|`** Unless otherwise needed, [Rule 27](#rule27) is reserved for something cubic. :-)
<div id="rule28">
## Rule 28 ## Rule 28
</div>
**`|`** Rule 28 is a perfect way end to the list of rules as we do not plan to have 496 rules. **`|`** [Rule 28](#rule28) is a perfect way end to the list of [IOCCC rules](rules.html) as we do not plan to have 496 rules. :-)
@@ -423,10 +485,10 @@ Even though 24 is not prime, you should still see rule #23.
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html). **`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as **`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as
[rules](rules.html) and the [guidelines](guidelines.html) may (and often do) change from year to year. [IOCCC rules](rules.html) and the [IOCCC guidelines](guidelines.html) may (and often do) change from year to year.
**`|`** You should be sure you have the current [rules](rules.html) and **`|`** You should be sure you have the current [IOCCC rules](rules.html) and
[guidelines](guidelines.html) prior to submitting entries. [IOCCC guidelines](guidelines.html) prior to submitting entries.
**`|`** See the [Official IOCCC website news](../news.html) for additional information. **`|`** See the [Official IOCCC website news](../news.html) for additional information.