update rules and guidelines

While these are not the 2024 rules and guidelines, they
do contain a number of corrections and updates that are
anticipated for IOCCC28.

Fixed several broken links.

Performed `make www` to complete the above.
This commit is contained in:
Landon Curt Noll committed 2024-06-11 14:41:09 -07:00
1 parent 2dc61c21c3
commit 13800f55d9
4 files changed
+231 -421

No files matched your search

+84 -132
View File
@@ -403,7 +403,7 @@ granted provided this this copyright and notice are included in its entirety
and remains unaltered. All other uses must receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="guidelines-version">Guidelines version</h2>
<p><strong><code>|</code></strong> This guidelines file is version <strong>2023-04-04-v28</strong>.</p>
<p><strong><code>|</code></strong> This guidelines file is version <strong>2024-06-11-v28</strong>.</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>
<p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p>
@@ -419,24 +419,23 @@ Entries that violate the guidelines but remain within the rules are
allowed. Even so, you are safer if you remain within the guidelines.</p>
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
The rules are typically sent out with these guidelines.</p>
<h1 id="whats-new-in-20192020">WHAT’S NEW IN 2019/2020</h1>
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2019-Dec-26 06:01:41 UTC</strong> to <strong>2020-Mar-15 06:26:49 UTC</strong>.</p>
<p><strong><code>|</code></strong> The reason for the times of day are so that key IOCCC events occur during UTC
<strong><code>|</code></strong> “prime time”. Do you understand why we factored this into the rules and
<strong><code>|</code></strong> guidelines? :-)</p>
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</h1>
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>YYYY-MMM-DD HH:MM:SS UTC</strong>.
** XXX - This date and time is TDB - XXX **.</p>
<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>
<p>Until the start of this IOCCC, these rules, guidelines and iocccsize.c
(contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a>)
tool should be considered provisional <strong>BETA</strong> versions and may be
adjusted <strong>AT ANY TIME</strong>.</p>
<p><strong><code>|</code></strong> Even though the contest will start in 2019, because the contest will close
<strong><code>|</code></strong> in 2020, URLs, subject lines, and contest related email addresses use 2019.</p>
<p>The IOCCC submission URL is <a href="https://submit.ioccc.org/" class="uri">https://submit.ioccc.org/</a>.</p>
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2020-Jan-15 12:21:37 UTC</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>.
** XXX - This date and time is TDB - XXX **.</p>
<p>Please wait to submit your entries until after that time.</p>
<p>The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available
on the official IOCCC website on or slightly before start of this IOCCC.
Please check the IOCCC FAQ <a href="../faq#submit">How to submit</a>.
Please check the IOCCC FAQ <a href="../faq.html#submit">How to submit</a>.
on or after the start of this IOCCC to be sure you are using the correct
versions of these items before using the IOCCC entry submission URL.</p>
<h1 id="hints-and-suggestions">HINTS AND SUGGESTIONS:</h1>
@@ -473,9 +472,9 @@ is important. For this reason, we often award ‘worst abuse of the
rules’ to an entry that illustrates this point in an ironic way.</p>
<p>We do realize that there are holes in the rules, and invite entries
to attempt to exploit them. We will award ‘worst abuse of the rules’
and then plug the hole next year. Even so, we will attempt to use
<strong><code>|</code></strong> 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>
and then plug the hole next year.</p>
<p><strong><code>|</code></strong> Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)</p>
<p><strong><code>|</code></strong> There may be less than 2^7+1 reasons why these guidelines seem obfuscated.</p>
<p>Check out your program and be sure that it works. We sometimes make
the effort to debug an entry that has a slight problem, particularly
in or near the final round. On the other hand, we have seen some
@@ -499,14 +498,11 @@ misleading comments and variable names might be a good start.</p>
<p>When programs use VTxxx/ANSI sequences, they should NOT limited to a
specific terminal brand. Those programs that work in a standard xterm
are considered more portable.</p>
<p><strong><code>|</code></strong> Rule 2 (the size rule) refers to the use of an IOCCC size tool.
<strong><code>|</code></strong> The source for this tool is found at:</p>
<pre><code>| https://www.ioccc.org/2020/iocccsize.c</code></pre>
<p>To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
<strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size rule 2a AND your entry
<p><strong><code>|</code></strong> Rule 2 (the size rule) refers to the use of the IOCCC size tool called <code>iocccsize</code>.</p>
<p><strong><code>|</code></strong> See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> for how to compile and <code>iocccsize</code>.</p>
<p><strong><code>|</code></strong> To further clarify rule 2, we subdivided it into two parts, 2a and 2b.</p>
<p><strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size rule 2a AND your entry
must satisfy the IOCCC size tool rule 2b.</p>
<p>The IOCCC size tool should be compiled as:</p>
<pre><code> cc -pedantic -Wall -Wextra -std=c11 iocccsize.c -o iocccsize</code></pre>
<p>This tool imposes a 2nd limit on C code size (rule 2b). To check your
code against the 2nd limit of rule 2, use the -i command line option.
For example:</p>
@@ -524,27 +520,27 @@ ASCII formfeed, and ASCII carriage return.</p>
<p>In cases where the above summary and the algorithm implemented by
the IOCCC size tool source code conflict, the algorithm implemented
by the IOCCC size tool source code is preferred by the judges.</p>
<p>There are at least 2 other reasons for selecting 2053 as the 2nd limit
besides the fact that 2053 is the next prime &gt; 2048. These reasons
may be searched for and discovered if you are “Curios!” about 2053. :-)
Moreover, 2053 was the number of the kernel disk pack of one of the
judge’s BESM-6.</p>
<p><strong><code>|</code></strong> There are at least 2 other reasons for selecting 2503 as the 2nd limit
<strong><code>|</code></strong> besides the fact that 2053 is a prime. These reasons
<strong><code>|</code></strong> may be searched for and discovered if you are <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>. :-)
<strong><code>|</code></strong> Moreover, 2053 was the number of the kernel disk pack of one of the
<strong><code>|</code></strong> judge’s BESM-6, and 2503 is a decimal anagram of 2053.</p>
<p>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
to get around the size limits of rule 2.</p>
<p>Yes Virginia, <strong>that is a hint</strong>!</p>
<p><strong><code>|</code></strong> We applaud programs that do not issue warnings when compiled.
<strong><code>|</code></strong> To avoid warnings, you might be tempted to add various -Wno-foobar
<strong><code>|</code></strong> flags. Unfortunately such flags are NOT portable. Moreover,
<strong><code>|</code></strong> such flags are not consistent between different C compilers.
<strong><code>|</code></strong> Therefore we recommend that you consider one of several approaches:</p>
<p>We applaud programs that do not issue warnings when compiled.
To avoid warnings, you might be tempted to add various -Wno-foobar
flags. Unfortunately such flags are NOT portable. Moreover,
such flags are not consistent between different C compilers.
Therefore we recommend that you consider one of several approaches:</p>
<ol type="a">
<li><strong><code>|</code></strong> Write code that does not generate compiler warnings</li>
<li><strong><code>|</code></strong> Do not use flags that disable compiler warnings</li>
<li><strong><code>|</code></strong> Provide instructions (such as in your Makefile) that
<strong><code>|</code></strong> uses appropriate disable compiler warnings flags for
<strong><code>|</code></strong> both clang and gcc</li>
<li><strong><code>|</code></strong> Do something creative</li>
<li>Write code that does not generate compiler warnings</li>
<li>Do not use flags that disable compiler warnings</li>
<li>Provide instructions (such as in your Makefile) that
uses appropriate disable compiler warnings flags for
both clang and gcc</li>
<li>Do something creative</li>
</ol>
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
<p>Doing masses of #defines to obscure the source has become ‘old’. We
@@ -600,10 +596,10 @@ flags that would make the program less portable.</p>
<p>One side effect of the above is that you cannot assume the use
of nested functions such as:</p>
<pre><code> main() {
| void please_do_not_submit_this() {
| printf(&quot;The machine that goes BING!\n&quot;);
| void please_dont_submit_this() {
| printf(&quot;The machine that goes BING!!\n&quot;);
}
| please_do_not_submit_this();
| please_dont_submit_this();
}</code></pre>
<p>This is because such nested functions often requires one to compile with
a flag such as <code>-fnested-functions</code> that is not found on some compilers.</p>
@@ -611,8 +607,8 @@ a flag such as <code>-fnested-functions</code> that is not found on some compile
nested functions. Such constructions, while interesting and sometimes
amusing, will have to wait until they required by a C standard that are
actually implemented in commonly used C compilers. Sorry!</p>
<p><strong><code>|</code></strong> We prefer programs that do not require a fish license: crayons and
<strong><code>|</code></strong> cat detector vans not withstanding.</p>
<p>We prefer programs that do not require a fish license: crayons and
cat detector vans not withstanding.</p>
<p>If your entry uses functions that have a variable number of
arguments, be careful. Systems implement <code>va_list</code> as a wide variety
of ways. Because of this, a number of operations using <code>va_list</code> are
@@ -661,17 +657,17 @@ most POSIX P1003.1/P1003.2 like systems</li>
<li>are “blob-ier” than they need to be</li>
<li>are rather similar to previous winners :-(</li>
<li>are too similar to previous losers :-)</li>
<li><strong><code>|</code></strong> that mandate the exclusive the use of an specific Integrated</li>
<li><strong><code>|</code></strong> Development Environment (IDE)</li>
<li>that mandate the exclusive the use of an specific Integrated</li>
<li>Development Environment (IDE)</li>
</ul>
<p><strong><code>|</code></strong> In order to encourage entry portability, we dislike entries that
<strong><code>|</code></strong> fail to build unless one is using an IDE. For example, do not
<strong><code>|</code></strong> mandate that one must use Microsoft Visual Studio to compile
<strong><code>|</code></strong> your entry. Nevertheless some of the better IDEs have command-line
<strong><code>|</code></strong> interfaces to their compilers, once one learns how to invoke a shell.</p>
<p><strong><code>|</code></strong> The program must compile and link cleanly in a POSIX-like environment.
<strong><code>|</code></strong> Therefore do not assume the system has a windows.h include file:</p>
<pre><code>| #include &lt;windows.h&gt; /* we dislike this include */</code></pre>
<p>In order to encourage entry portability, we dislike entries that
fail to build unless one is using an IDE. For example, do not
mandate that one must use Microsoft Visual Studio to compile
your entry. Nevertheless some of the better IDEs have command-line
interfaces to their compilers, once one learns how to invoke a shell.</p>
<p>The program must compile and link cleanly in a POSIX-like environment.
Therefore do not assume the system has a windows.h include file:</p>
<pre><code> #include &lt;windows.h&gt; /* we dislike this include */</code></pre>
<p>Unless you are cramped for space, or unless you are entering the
‘best one liner’ category, we suggest that you format your program
in a more creative way than simply forming excessively long lines.</p>
@@ -682,10 +678,9 @@ time of day during a leap-second where the value in seconds
after the minute mark is 60.</p>
<p>The “how to build” make process should not be used to try and get
around the size limit. It is one thing to make use of a several -D’s
<strong><code>|</code></strong> on the compile line to help out, but it is quite another to use many
on the compile line to help out, but it is quite another to use many
bytes of -D’s in order to try and squeeze the source under the size limit.</p>
<p><strong><code>|</code></strong> Your source code, post-pre-processing, should not exceed the size
<strong><code>|</code></strong> of Windows. :-)</p>
<p>Your source code, post-pre-processing, should not exceed the size of Windows. :-)</p>
<p>The judges, as a group, have a history giving wide degree of latitude
to reasonable entries. And recently they have had as much longitudinal
variation as it is possible to have on Earth. :-)</p>
@@ -751,7 +746,7 @@ is NOT the smallest C source file that when compiled and run, dumps core:</p>
However, initialized char arrays are OK to write over. This is OK:</p>
<pre><code> char b[] = &quot;Is this OK&quot;;
b[9] = &#39;K&#39;;</code></pre>
<p><strong><code>|</code></strong> There are more than one typos in this very sentence.</p>
<p><strong><code>|</code></strong> There are more than 1 typos in this very sentence.</p>
<p>X client entries should be as portable as possible. Entries that
adapt to a wide collection of environments will be favored. For
example, don’t depend on a particular type or size of display.
@@ -763,11 +758,12 @@ source program (one that actually works) to display audio/visual data.</p>
<p>X client entries should avoid using X related libraries and
software that is not in wide spread use.</p>
<p>This is the only guideline that contains the word fizzbin.
<strong><code>|</code></strong> However, do you know how to play fizzbin? You do?!? (Except on Tuesday)</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>
<p>We don’t like entries that use proprietary toolkits such as the M<em>tif,
Xv</em>ew, or OpenL*ok toolkits, since not everyone has them. Use of an
open source toolkit that is widely and freely available instead.</p>
<p><strong>NOTE</strong>: <strong><code>|</code></strong> The previous guideline in this spot has been replaced by this guideline:</p>
<p><strong>NOTE</strong>: The previous guideline in this spot has been replaced by this guideline:</p>
<p>X client entries should not to depend on particular items on
.Xdefaults. If you must do so, be sure to note the required lines
in the program “remarks”. They should also not depend on any
@@ -778,22 +774,18 @@ Happy Birthday song; music that some people believe is copyrighted
the copyright system).</p>
<p>While we recognize that UNIX is not a universal operating system, the
contest does have a bias towards such systems. In an effort to expand
the scope of the contest, we phrase our bias in terms of POSIX P1003.1
and P1003.2 standards. This will allow certain non-UNIX OS users to
submit entries. On the other hand, this is a guideline and not a rule.
We will not reject an entry based on some POSIX technicality.</p>
<p>When dealing with OS and application environments, we suggest that you
be reasonable with a nod towards vanilla UNIX-like systems. POSIX will
evolve but not as much as the contest.</p>
<p>You very well might not be completely prohibited from failing to not
partly misunderstand this particular guideline, but of course we could
<strong><code>|</code></strong> not possibly comment. Nevertheless, you are neither prohibited, nor are
<strong><code>|</code></strong> you required to determine that this or the previous sentence is either false
<strong><code>|</code></strong> and/or misleading. Therefore, it might be wise for you to not fail to consider
<strong><code>|</code></strong> to do so, accordingly. Thank you.</p>
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> 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
<strong><code>|</code></strong> partly misunderstand this particular guideline, but of course, we could
<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> 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>
<p>Any complaints about the above guideline could be addressed to the
Speaker of the House of Commons, or to the speaker of your national
<strong><code>|</code></strong> parliament should you have one.</p>
parliament should you have one.</p>
<p>We like programs that:</p>
<ul>
<li>are as concise and small as they need to be</li>
@@ -810,7 +802,7 @@ areas really does help.</p>
<p>You are better off explaining what your entry does in the program
“remarks” section rather than leaving it obscure for the judges
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 at all possible.</p>
<p><strong><code>|</code></strong> Please avoid this specific individual guideline, if it at all possible.</p>
<p>We freely admit that interesting, creative or humorous comments in
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.
@@ -853,10 +845,11 @@ 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>
<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>The IOCCC size tool source, iocccsize.c, is not an original work,
<strong><code>|</code></strong> unless you are Anthony C Howe, in which case it is original!
<strong><code>|</code></strong> Submitting source that uses the content iocccsize.c, unless you are
<strong><code>|</code></strong> Anthony C Howe, might run the risk of violating rule 7.</p>
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">IOCCC size tool source</a>
is not an original work,
unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content iocccsize.c, unless you are
Anthony C Howe, might run the risk of violating rule 7.</p>
<p>Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
However if you do, you might wish to make your tool do something more
interesting than simply implementing the IOCCC size tool algorithm.</p>
@@ -1004,7 +997,7 @@ the authors a chance to comment on the way we have presented their
entry. They are given the chance to correct mistakes and typos. We
often accept their suggestions/comments about our remarks as well.
This is done prior to posting the winners to the wide world.</p>
<h2 id="an-important-2023-update-to-how-winners-are-announced">An important 2023 update to how winners are announced</h2>
<h2 id="an-important-update-to-how-winners-are-announced">An important update to how winners are announced</h2>
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced
by a git commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries
repo</a>.</p>
@@ -1092,34 +1085,14 @@ Winning source is called prog.c A compiled binary is called prog.</p>
of their award, and a very brief description of the winning entry
from the <span class="citation" data-cites="IOCCC">@IOCCC</span> twitter handle. Non-twitter users should visit:</p>
<pre><code> https://twitter.com/ioccc</code></pre>
<h2 id="an-important-update-to-this-historic-note">An important update to this historic note</h2>
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></p>
<p><strong><code>|</code></strong> <strong>The IOCCC no longer uses twitter</strong>.</p>
<p><strong><code>|</code></strong> Today the <a href="../contact.html#mastodon">IOCCC uses Mastodon</a>.</p>
<p><strong><code>|</code></strong> For more information and to see our IOCCC Mastodon posts, see:</p>
<pre><code> https://fosstodon.org/@ioccc</code></pre>
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></p>
<p>Non-twitter users should force their browsers to reload the above URL
to be sure they are seeing the most recent tweets.</p>
<p>The judges will then post an initial announcement of who won, the name
of their award, and a very brief description of the winning entry
on the IOCCC website:</p>
<pre><code> https://www.ioccc.org/whowon.html</code></pre>
<p>We will also attempt to submit a brief announcement story to /.:</p>
<pre><code> https://slashdot.org</code></pre>
<p>that, depending on the willingness of the /. editors, may be posted
to their site at the same time.</p>
<p>Note that initial announcement will NOT contain source. This is because
the winning authors are given a chance to review the judges comments,
and test our Makefile. This review process typically takes a few weeks.</p>
<p>Sometime after the initial announcement, and once the review
by the winners has been completed, the winning source will be
posted to the IOCCC website:</p>
<pre><code> https://www.ioccc.org/years.html
NOTE: previous winners are available at that URL</code></pre>
<p>We will also tweet, via <span class="citation" data-cites="IOCCC">@IOCCC</span>, when the winning source is available.</p>
<h2 id="an-important-2023-update-to-how-winners-are-announced-1">An important 2023 update to how winners are announced</h2>
<h2 id="how-the-new-ioccc-winners-will-be-announced">How the new IOCCC winners will be announced</h2>
<p><strong><code>|</code></strong> The <a href="../status.html">Current status of the IOCCC</a> will change from <strong>judging</strong> to <strong>closed</strong> .</p>
<p><strong><code>|</code></strong> The <strong>contest_status</strong> in the <a href="../status.json">status.json</a> file will change from <strong>judging</strong> to <strong>closed</strong> as well.</p>
<p><strong><code>|</code></strong> When the above happens, the winning entries have been selected by the <a href="../judges.html">IOCCC judges</a>.</p>
<p><strong><code>|</code></strong> The <a href="../judges.html">IOCCC judges</a> will begin to prepare to release the source code of the new IOCCC winners.</p>
<p><strong><code>|</code></strong> The <a href="../judges.html">IOCCC judges</a> will post the winning source to the <a href="https://github.com/ioccc-src/winner">IOCCC winner repo</a> as well as to the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a>.</p>
<p><strong><code>|</code></strong> The <a href="../news.html">IOCCC news</a> will also contain an announcement of the winners.</p>
<h2 id="an-important-update-to-how-winners-are-announced-1">An important update to how winners are announced</h2>
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced
by a git commit to the IOCCC entries repo:</p>
<pre><code> https://github.com/ioccc-src/winner</code></pre>
@@ -1136,33 +1109,12 @@ the world. Winners have appeared in books (“The New Hackers Dictionary”)
and on T-Shirts. More than one winner has been turned in a tattoo!</p>
<p>Last, but not least, winners receive international fame and flames! :-)</p>
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
<p>You may contact the judges by sending email to the following address:</p>
<pre><code>| q.2024@ioccc.org (do not submit entries to this address)</code></pre>
<p><strong><code>|</code></strong> You must include the words ‘ioccc 2024 question’ in the subject of your
email message when sending email to the judges.</p>
<p>Questions and comments about the contest are welcome. Comments about
confusing rules and guidelines are also welcome.</p>
<p>The rules and the guidelines may (and often do) change from year to
year. You should be sure you have the current rules and guidelines
prior to submitting entries.</p>
<p>Check out the IOCCC Web page:</p>
<pre><code> https://www.ioccc.org</code></pre>
<p>It has rules, guidelines and winners of previous contests (1984 to date).</p>
<p>For the updates and breaking IOCCC news, you are encouraged to follow
the twitter handle:</p>
<pre><code> @IOCCC</code></pre>
<p>You do not have to be a twitter user to follow <span class="citation" data-cites="IOCCC">@IOCCC</span>. Non-twitter
users should access:</p>
<pre><code> https://twitter.com/ioccc</code></pre>
<p>Non-twitter users should force their browsers to reload the above URL
to be sure they are seeing the most recent tweets.</p>
<h2 id="an-important-update-to-this-historic-note-1">An important update to this historic note</h2>
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></p>
<p><strong><code>|</code></strong> <strong>The IOCCC no longer uses twitter</strong>.</p>
<p><strong><code>|</code></strong> Today the <a href="../contact.html#mastodon">IOCCC uses Mastodon</a>.</p>
<p><strong><code>|</code></strong> For more information and to see our IOCCC Mastodon posts, see:</p>
<pre><code> https://fosstodon.org/@ioccc</code></pre>
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></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 rules and the guidelines may (and often do) change from year to year.</p>
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our <a href="../faq.html#try_mastodon">FAQ</a> for more information.</p>
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
<p>Leonid A. Broukhis<br>
chongo (Landon Curt Noll) /\cc/\</p>
<hr style="width:10%;text-align:left;margin-left:0">
+87 -182
View File
@@ -32,14 +32,14 @@ writing by [contacting the judges](../contact.html).
## Guidelines version
**`|`** This guidelines file is version **2023-04-04-v28**.
**`|`** This guidelines file is version **2024-06-11-v28**.
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
### Change marks
**`|`** **&larr; Lines that start with this symbol indicate a change from the previous IOCCC**
**`|`** **&larr; Lines that start with this symbol indicate a change from the previous IOCCC**
Most lines (we sometimes make mistakes) that were modified since the previous
IOCCC start with the **`|`** symbol.
@@ -60,13 +60,13 @@ You should read the current [IOCCC rules](rules.html), prior to submitting entri
The rules are typically sent out with these guidelines.
# WHAT'S NEW IN 2019/2020
# WHAT'S NEW THIS IOCCC
**`|`** This IOCCC runs from **2019-Dec-26 06:01:41 UTC** to **2020-Mar-15 06:26:49 UTC**.
**`|`** This IOCCC runs from **2024-MMM-DD HH:MM:SS UTC** to **YYYY-MMM-DD HH:MM:SS UTC**.
** XXX - This date and time is TDB - XXX **.
**`|`** The reason for the times of day are so that key IOCCC events occur during UTC
**`|`** "prime time". Do you understand why we factored this into the rules and
**`|`** guidelines? :-)
**`|`** The reason for the times of day are so that key IOCCC events are **calculated**
for be a **fun**ctional UTC time. :-)
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
(contained in the [mkiocccentry
@@ -74,18 +74,16 @@ toolkit](https://github.com/ioccc-src/mkiocccentry))
tool should be considered provisional **BETA** versions and may be
adjusted **AT ANY TIME**.
**`|`** Even though the contest will start in 2019, because the contest will close
**`|`** in 2020, URLs, subject lines, and contest related email addresses use 2019.
The IOCCC submission URL is <https://submit.ioccc.org/>.
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
**`|`** The submit URL should be active on or slightly before **2024-MMM-DD HH:MM:SS UTC**.
** XXX - This date and time is TDB - XXX **.
Please wait to submit your entries until after that time.
The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available
on the official IOCCC website on or slightly before start of this IOCCC.
Please check the IOCCC FAQ [How to submit](../faq#submit).
Please check the IOCCC FAQ [How to submit](../faq.html#submit).
on or after the start of this IOCCC to be sure you are using the correct
versions of these items before using the IOCCC entry submission URL.
@@ -130,10 +128,11 @@ rules' to an entry that illustrates this point in an ironic way.
We do realize that there are holes in the rules, and invite entries
to attempt to exploit them. We will award 'worst abuse of the rules'
and then plug the hole next year. Even so, we will attempt to use
**`|`** the smallest plug needed, if not smaller. Or, maybe not. :-)
and then plug the hole next year.
**`|`** There may be less than 2^7-1 reasons why these guidelines seem obfuscated.
**`|`** 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.
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
@@ -163,23 +162,15 @@ When programs use VTxxx/ANSI sequences, they should NOT limited to a
specific terminal brand. Those programs that work in a standard xterm
are considered more portable.
**`|`** Rule 2 (the size rule) refers to the use of an IOCCC size tool.
**`|`** The source for this tool is found at:
**`|`** Rule 2 (the size rule) refers to the use of the IOCCC size tool called `iocccsize`.
```
| https://www.ioccc.org/2020/iocccsize.c
```
**`|`** See the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) for how to compile and `iocccsize`.
**`|`** To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
**`|`** Your entry must satisfy BOTH the maximum size rule 2a AND your entry
must satisfy the IOCCC size tool rule 2b.
The IOCCC size tool should be compiled as:
```
cc -pedantic -Wall -Wextra -std=c11 iocccsize.c -o iocccsize
```
This tool imposes a 2nd limit on C code size (rule 2b). To check your
code against the 2nd limit of rule 2, use the -i command line option.
For example:
@@ -208,11 +199,11 @@ In cases where the above summary and the algorithm implemented by
the IOCCC size tool source code conflict, the algorithm implemented
by the IOCCC size tool source code is preferred by the judges.
There are at least 2 other reasons for selecting 2053 as the 2nd limit
besides the fact that 2053 is the next prime > 2048. These reasons
may be searched for and discovered if you are "Curios!" about 2053. :-)
Moreover, 2053 was the number of the kernel disk pack of one of the
judge's BESM-6.
**`|`** There are at least 2 other reasons for selecting 2503 as the 2nd limit
**`|`** besides the fact that 2053 is a prime. These reasons
**`|`** may be searched for and discovered if you are ["Curios!" about 2503](https://t5k.org/curios/page.php/2503.html). :-)
**`|`** Moreover, 2053 was the number of the kernel disk pack of one of the
**`|`** judge's BESM-6, and 2503 is a decimal anagram of 2053.
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
@@ -220,18 +211,18 @@ to get around the size limits of rule 2.
Yes Virginia, **that is a hint**!
**`|`** We applaud programs that do not issue warnings when compiled.
**`|`** To avoid warnings, you might be tempted to add various -Wno-foobar
**`|`** flags. Unfortunately such flags are NOT portable. Moreover,
**`|`** such flags are not consistent between different C compilers.
**`|`** Therefore we recommend that you consider one of several approaches:
We applaud programs that do not issue warnings when compiled.
To avoid warnings, you might be tempted to add various -Wno-foobar
flags. Unfortunately such flags are NOT portable. Moreover,
such flags are not consistent between different C compilers.
Therefore we recommend that you consider one of several approaches:
a) **`|`** Write code that does not generate compiler warnings
b) **`|`** Do not use flags that disable compiler warnings
c) **`|`** Provide instructions (such as in your Makefile) that
**`|`** uses appropriate disable compiler warnings flags for
**`|`** both clang and gcc
d) **`|`** Do something creative
a) Write code that does not generate compiler warnings
b) Do not use flags that disable compiler warnings
c) Provide instructions (such as in your Makefile) that
uses appropriate disable compiler warnings flags for
both clang and gcc
d) Do something creative
# OUR LIKES AND DISLIKES:
@@ -329,10 +320,10 @@ of nested functions such as:
```
main() {
| void please_do_not_submit_this() {
| printf("The machine that goes BING!\n");
| void please_dont_submit_this() {
| printf("The machine that goes BING!!\n");
}
| please_do_not_submit_this();
| please_dont_submit_this();
}
```
@@ -344,8 +335,8 @@ nested functions. Such constructions, while interesting and sometimes
amusing, will have to wait until they required by a C standard that are
actually implemented in commonly used C compilers. Sorry!
**`|`** We prefer programs that do not require a fish license: crayons and
**`|`** cat detector vans not withstanding.
We prefer programs that do not require a fish license: crayons and
cat detector vans not withstanding.
If your entry uses functions that have a variable number of
arguments, be careful. Systems implement `va_list` as a wide variety
@@ -403,20 +394,20 @@ We tend to dislike programs that:
* are "blob-ier" than they need to be
* are rather similar to previous winners :-(
* are too similar to previous losers :-)
* **`|`** that mandate the exclusive the use of an specific Integrated
* **`|`** Development Environment (IDE)
* that mandate the exclusive the use of an specific Integrated
* Development Environment (IDE)
**`|`** In order to encourage entry portability, we dislike entries that
**`|`** fail to build unless one is using an IDE. For example, do not
**`|`** mandate that one must use Microsoft Visual Studio to compile
**`|`** your entry. Nevertheless some of the better IDEs have command-line
**`|`** interfaces to their compilers, once one learns how to invoke a shell.
In order to encourage entry portability, we dislike entries that
fail to build unless one is using an IDE. For example, do not
mandate that one must use Microsoft Visual Studio to compile
your entry. Nevertheless some of the better IDEs have command-line
interfaces to their compilers, once one learns how to invoke a shell.
**`|`** The program must compile and link cleanly in a POSIX-like environment.
**`|`** Therefore do not assume the system has a windows.h include file:
The program must compile and link cleanly in a POSIX-like environment.
Therefore do not assume the system has a windows.h include file:
```
| #include <windows.h> /* we dislike this include */
#include <windows.h> /* we dislike this include */
```
Unless you are cramped for space, or unless you are entering the
@@ -431,11 +422,10 @@ after the minute mark is 60.
The "how to build" make process should not be used to try and get
around the size limit. It is one thing to make use of a several -D's
**`|`** on the compile line to help out, but it is quite another to use many
on the compile line to help out, but it is quite another to use many
bytes of -D's in order to try and squeeze the source under the size limit.
**`|`** Your source code, post-pre-processing, should not exceed the size
**`|`** of Windows. :-)
Your source code, post-pre-processing, should not exceed the size of Windows. :-)
The judges, as a group, have a history giving wide degree of latitude
to reasonable entries. And recently they have had as much longitudinal
@@ -537,7 +527,7 @@ However, initialized char arrays are OK to write over. This is OK:
b[9] = 'K';
```
**`|`** There are more than one typos in this very sentence.
**`|`** There are more than 1 typos in this very sentence.
X client entries should be as portable as possible. Entries that
adapt to a wide collection of environments will be favored. For
@@ -552,13 +542,14 @@ X client entries should avoid using X related libraries and
software that is not in wide spread use.
This is the only guideline that contains the word fizzbin.
**`|`** However, do you know how to play fizzbin? You do?!? (Except on Tuesday)
**`|`** 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)
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 of an
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
.Xdefaults. If you must do so, be sure to note the required lines
@@ -572,25 +563,22 @@ the copyright system).
While we recognize that UNIX is not a universal operating system, the
contest does have a bias towards such systems. In an effort to expand
the scope of the contest, we phrase our bias in terms of POSIX P1003.1
and P1003.2 standards. This will allow certain non-UNIX OS users to
submit entries. On the other hand, this is a guideline and not a rule.
We will not reject an entry based on some POSIX technicality.
the scope of the contest, we phrase our bias to favor:
When dealing with OS and application environments, we suggest that you
be reasonable with a nod towards vanilla UNIX-like systems. POSIX will
evolve but not as much as the contest.
**`|`** [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification).
You very well might not be completely prohibited from failing to not
partly misunderstand this particular guideline, but of course we could
**`|`** not possibly comment. Nevertheless, you are neither prohibited, nor are
**`|`** you required to determine that this or the previous sentence is either false
**`|`** and/or misleading. Therefore, it might be wise for you to not fail to consider
**`|`** to do so, accordingly. Thank you.
**`|`** 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
**`|`** partly misunderstand this particular guideline, but of course, we could
**`|`** not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
**`|`** 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
**`|`** to do so, accordingly. Thank you very much.
Any complaints about the above guideline could be addressed to the
Speaker of the House of Commons, or to the speaker of your national
**`|`** parliament should you have one.
parliament should you have one.
We like programs that:
@@ -610,7 +598,7 @@ You are better off explaining what your entry does in the program
"remarks" section rather than leaving it obscure for the judges
as we might miss something and/or be too tired to notice.
**`|`** Please avoid this specific individual guideline, if at all possible.
**`|`** Please avoid this specific individual guideline, if it at all possible.
We freely admit that interesting, creative or humorous comments in
the program "remarks" help your chances of winning. If you had to
@@ -670,10 +658,11 @@ We believe that Mark Twain's remark:
is a good guideline for those writing code for the IOCCC.
The IOCCC size tool source, iocccsize.c, is not an original work,
**`|`** unless you are Anthony C Howe, in which case it is original!
**`|`** Submitting source that uses the content iocccsize.c, unless you are
**`|`** Anthony C Howe, might run the risk of violating rule 7.
**`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
is not an original work,
unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content iocccsize.c, unless you are
Anthony C Howe, might run the risk of violating rule 7.
Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
However if you do, you might wish to make your tool do something more
@@ -887,7 +876,7 @@ often accept their suggestions/comments about our remarks as well.
This is done prior to posting the winners to the wide world.
## An important 2023 update to how winners are announced
## An important update to how winners are announced
The IOCCC no longer uses twitter. IOCCC entries will be announced
by a git commit to the [IOCCC entries
@@ -1000,60 +989,22 @@ from the @IOCCC twitter handle. Non-twitter users should visit:
```
## An important update to this historic note
## How the new IOCCC winners will be announced
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
**`|`** The [Current status of the IOCCC](../status.html) will change from **judging** to **closed** .
**`|`** **The IOCCC no longer uses twitter**.
**`|`** The **contest_status** in the [status.json](../status.json) file will change from **judging** to **closed** as well.
**`|`** Today the [IOCCC uses Mastodon](../contact.html#mastodon).
**`|`** When the above happens, the winning entries have been selected by the [IOCCC judges](../judges.html).
**`|`** For more information and to see our IOCCC Mastodon posts, see:
**`|`** The [IOCCC judges](../judges.html) will begin to prepare to release the source code of the new IOCCC winners.
```
https://fosstodon.org/@ioccc
```
**`|`** The [IOCCC judges](../judges.html) will post the winning source to the [IOCCC winner repo](https://github.com/ioccc-src/winner) as well as to the [Official IOCCC winner web site](https://www.ioccc.org/index.html).
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
Non-twitter users should force their browsers to reload the above URL
to be sure they are seeing the most recent tweets.
The judges will then post an initial announcement of who won, the name
of their award, and a very brief description of the winning entry
on the IOCCC website:
```
https://www.ioccc.org/whowon.html
```
We will also attempt to submit a brief announcement story to /.:
```
https://slashdot.org
```
that, depending on the willingness of the /. editors, may be posted
to their site at the same time.
Note that initial announcement will NOT contain source. This is because
the winning authors are given a chance to review the judges comments,
and test our Makefile. This review process typically takes a few weeks.
Sometime after the initial announcement, and once the review
by the winners has been completed, the winning source will be
posted to the IOCCC website:
```
https://www.ioccc.org/years.html
NOTE: previous winners are available at that URL
```
We will also tweet, via @IOCCC, when the winning source is available.
**`|`** The [IOCCC news](../news.html) will also contain an announcement of the winners.
## An important 2023 update to how winners are announced
## An important update to how winners are announced
The IOCCC no longer uses twitter. IOCCC entries will be announced
by a git commit to the IOCCC entries repo:
@@ -1090,63 +1041,17 @@ Last, but not least, winners receive international fame and flames! :-)
# FOR MORE INFORMATION:
You may contact the judges by sending email to the following address:
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
```
| q.2024@ioccc.org (do not submit entries to this address)
```
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as rules and the guidelines may (and often do) change from year to year.
**`|`** You must include the words 'ioccc 2024 question' in the subject of your
email message when sending email to the judges.
**`|`** You should be sure you have the current rules and guidelines prior to submitting entries.
Questions and comments about the contest are welcome. Comments about
confusing rules and guidelines are also welcome.
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
The rules and the guidelines may (and often do) change from year to
year. You should be sure you have the current rules and guidelines
prior to submitting entries.
**`|`** For the updates and breaking IOCCC news, you are encouraged to follow the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our [FAQ](../faq.html#try_mastodon) for more information.
Check out the IOCCC Web page:
```
https://www.ioccc.org
```
It has rules, guidelines and winners of previous contests (1984 to date).
For the updates and breaking IOCCC news, you are encouraged to follow
the twitter handle:
```
@IOCCC
```
You do not have to be a twitter user to follow @IOCCC. Non-twitter
users should access:
```
https://twitter.com/ioccc
```
Non-twitter users should force their browsers to reload the above URL
to be sure they are seeing the most recent tweets.
## An important update to this historic note
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
**`|`** **The IOCCC no longer uses twitter**.
**`|`** Today the [IOCCC uses Mastodon](../contact.html#mastodon).
**`|`** For more information and to see our IOCCC Mastodon posts, see:
```
https://fosstodon.org/@ioccc
```
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
Leonid A. Broukhis<br>
chongo (Landon Curt Noll) /\\cc/\\
+22 -37
View File
@@ -456,13 +456,13 @@ entry submission URL.</p>
<h2 id="rule-1">Rule 1</h2>
<p>Your entry must be a complete program.</p>
<h2 id="rule-2">Rule 2</h2>
<p><strong><code>|</code></strong> The size rule requires your entry to satisfy <strong>BOTH</strong> rule 2a and rule 2b:</p>
<p>The size rule requires your entry to satisfy <strong>BOTH</strong> rule 2a and rule 2b:</p>
<h2 id="rule-2a">Rule 2a</h2>
<p>The size of your program source <strong>MUST BE &lt;= 4096 bytes</strong>in length.</p>
<h2 id="rule-2b">Rule 2b</h2>
<p>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 -i command line option is used, the
value printed <strong>shall not exceed 2053</strong>.</p>
value printed <strong>shall not exceed 2503</strong>.</p>
<p><strong><code>|</code></strong> The source to the current IOCCC size tool is found in the
<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>) will invoke
@@ -487,8 +487,8 @@ files you submit.</p>
<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>
<h2 id="rule-6">Rule 6</h2>
<p><strong><code>|</code></strong> I am not a rule, I am a <code>free(void \*man)</code>!</p>
<pre><code> while (!understand(ioccc(rule(you(are(number(6))))))) { ha_ha_ha(); }</code></pre>
<p><strong><code>|</code></strong> I am not a rule, I am a <code>free(void \*human)</code>!</p>
<pre><code>| while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }</code></pre>
<h2 id="rule-7">Rule 7</h2>
<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
@@ -501,8 +501,8 @@ detail that ownership (i.e., who owns what) and document the
permission you obtained.</p>
<p>Please note that the IOCCC size tool is <strong>NOT</strong> an original work.</p>
<h2 id="rule-8">Rule 8</h2>
<p><strong><code>|</code></strong> Entries must be received prior to the end of this IOCCC which is:</p>
<pre><code> 2020-Mar-15 06:26:49 UTC</code></pre>
<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>. ** XXX - This date and time is TDB - XXX **.</p>
<p>A confirmation of submission will be sent to the submitting email address
before the close of the contest.</p>
<h2 id="rule-9">Rule 9</h2>
@@ -552,11 +552,12 @@ original entry. Submissions that are similar to previous entries are
discouraged. As we judge anonymously, submissions that have already
been published may be disqualified.</p>
<h2 id="rule-17">Rule 17</h2>
<p>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
to 1048576 octets in size. The
[mkiocccentry toolkit]((https://github.com/ioccc-src/mkiocccentry) will verify
that your entry is not too big.</p>
to 28314624 octets (27651K) in size.</p>
<p><strong><code>|</code></strong> When your submission is formed into a bzip2 compressed tarball file,
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> (see <code>mkiocccentry(1)</code> and <code>txzchk(1)</code>) will help you verify that your submission conforms to this rule.</p>
<h2 id="rule-18">Rule 18</h2>
<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>
@@ -610,34 +611,18 @@ for disqualification of your entry.</p>
<h2 id="rule-24">Rule 24</h2>
<p>Even though 24 is not prime, you should still see rule #23.</p>
<h2 id="rule-25">Rule 25</h2>
<p><strong><code>|</code></strong> The IOCCC rule set consists of at least 26 rules.</p>
<p>The IOCCC rule set consists of at least 26 rules.</p>
<h2 id="rule-26">Rule 26</h2>
<p><strong><code>|</code></strong> Rule 26 is also a rule.</p>
<p>Rule 26 is also a rule.</p>
<h2 id="rule-27">Rule 27</h2>
<p><strong><code>|</code></strong> Rule 27 is reserved for something cubic. :-)</p>
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
<p>The judging will be done by Leonid A. Broukhis and
Landon Curt Noll.</p>
<p><strong><code>|</code></strong> Please send questions or comments about the contest, to:</p>
<pre><code> q.2024@ioccc.org</code></pre>
<p><strong><code>|</code></strong> <strong>IMPORTANT</strong>: You must include the words <strong>ioccc 2024 question</strong>
in the subject of your email message when sending email to the judges.</p>
<p>The rules and the guidelines may (and often do) change from year to
year. You should be sure you have the current rules and guidelines
prior to submitting entries.</p>
<p><strong><code>|</code></strong> See the <a href="../index.html">Official IOCCC website</a> for additional information.</p>
<p>For the updates and breaking IOCCC news, you are encouraged to follow
the twitter handle:</p>
<pre><code> @IOCCC</code></pre>
<p>You do not have to be a twitter user to follow <span class="citation" data-cites="IOCCC">@IOCCC</span>. Non-twitter users should access:</p>
<pre><code> https://twitter.com/ioccc</code></pre>
<p>Non-twitter users should force their browsers to reload the above URL
to be sure they are seeing the most recent tweets.</p>
<h2 id="an-important-update-to-this-historic-note">An important update to this historic note</h2>
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></p>
<p><strong><code>|</code></strong> <strong>The IOCCC no longer uses twitter</strong>.</p>
<p><strong><code>|</code></strong> Today the <a href="../contact.html#try_mastodon">IOCCC uses Mastodon</a>.</p>
<p><strong><code>|</code></strong> For more information and to see our IOCCC Mastodon posts, see:</p>
<pre><code> https://fosstodon.org/@ioccc</code></pre>
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></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 rules and the guidelines may (and often do) change from year to year.</p>
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our <a href="../faq.html#try_mastodon">FAQ</a> for more information.</p>
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
<p>Leonid A. Broukhis<br>
chongo (Landon Curt Noll) <code>/\cc/\</code></p>
<hr style="width:10%;text-align:left;margin-left:0">
+38 -70
View File
@@ -22,7 +22,7 @@ Watch both [the IOCCC status page](../status.html) and the
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
# 28th International Obfuscated C Code Contest Official Rules
**`|`** Copyright &copy; 2024 Leonid A. Broukhis, Landon Curt Noll.
**`|`** Copyright &copy; 2024 Leonid A. Broukhis, Landon Curt Noll.
All Rights Reserved. Permission for personal, education or non-profit use is
granted provided this this copyright and notice are included in its entirety
@@ -32,14 +32,14 @@ writing by [contacting the judges](../contact.html).
## Rules version
**`|`** These rules are version **2024-04-04-v28**.
**`|`** These rules are version **2024-04-04-v28**.
**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html).
### Change marks
**`|`** **&larr; Lines that start with this symbol indicate a change from the previous IOCCC**
**`|`** **&larr; Lines that start with this symbol indicate a change from the previous IOCCC**
Most lines (we sometimes make mistakes) that were modified since the previous
IOCCC start the **`|`** symbol.
@@ -70,7 +70,7 @@ The goals of the IOCCC:
# Important IOCCC dates
**`|`** This IOCCC runs from **2019-Dec-26 06:01:41 UTC** to **2020-Mar-15 06:26:49 UTC**.
**`|`** This IOCCC runs from **2019-Dec-26 06:01:41 UTC** to **2020-Mar-15 06:26:49 UTC**.
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
(contained in the [mkiocccentry
@@ -86,7 +86,7 @@ times that link is likely to be unresponsive.
Please check the [How to enter link](../faq.html#submit) link
for **important information** on how to submit to the IOCCC.
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
Please wait to submit your entries until after that time.
The official rules, guidelines will be available on the [official IOCCC
@@ -116,7 +116,7 @@ Your entry must be a complete program.
## Rule 2
**`|`** 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 and rule 2b:
## Rule 2a
@@ -125,11 +125,11 @@ The size of your program source **MUST BE <= 4096 bytes**in length.
## Rule 2b
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
value printed **shall not exceed 2053**.
value printed **shall not exceed 2503**.
**`|`** The source to the current IOCCC size tool is found in the
**`|`** The source to the current IOCCC size tool is found in the
[mkiocccentry tool repo](https://github.com/ioccc-src/mkiocccentry). If you use
the `mkiocccentry` tool (which we **STRONGLY recommend you do**) will invoke
this tool before packaging your entry for submission.
@@ -144,7 +144,7 @@ To submit to an open IOCCC, you must use the [IOCCC submit server](https://submi
When the IOCCC is not open, that link will likely be unresponsive.
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
Please wait to submit your entries until after that time.
@@ -171,10 +171,10 @@ file to a new filename and then modify that copy.
## Rule 6
**`|`** I am not a rule, I am a `free(void \*man)`!
**`|`** I am not a rule, I am a `free(void \*human)`!
``` <!---c-->
while (!understand(ioccc(rule(you(are(number(6))))))) { ha_ha_ha(); }
| while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }
```
@@ -186,7 +186,7 @@ You (the author(s)) must own the contents of your submission OR
you must have permission from the owner(s) to submit their content
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.
@@ -199,11 +199,9 @@ Please note that the IOCCC size tool is **NOT** an original work.
## Rule 8
**`|`** Entries must be received prior to the end of this IOCCC which is:
**`|`** Entries must be received prior to the end of this IOCCC which is
**2024-MMM-DD HH:MM:SS UTC**. ** XXX - This date and time is TDB - XXX **.
```
2020-Mar-15 06:26:49 UTC
```
A confirmation of submission will be sent to the submitting email address
before the close of the contest.
@@ -211,7 +209,7 @@ before the close of the contest.
## Rule 9
**`|`** Each person may submit up to and including 8.000000 entries per contest.
**`|`** Each person may submit up to and including 8.000000 entries per contest.
Each entry must be submitted separately.
@@ -287,18 +285,21 @@ been published may be disqualified.
## Rule 17
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
to 1048576 octets in size. The
[mkiocccentry toolkit]((https://github.com/ioccc-src/mkiocccentry) will verify
that your entry is not too big.
to 28314624 octets (27651K) in size.
**`|`** When your submission is formed into a bzip2 compressed tarball file,
that file must than or equal 3999971 octets in size.
**`|`** The [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) (see `mkiocccentry(1)` and `txzchk(1)`) will help you verify that your submission conforms to this rule.
## Rule 18
The entirety of your entry must be submitted 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/)**
You (the author(s)) **MUST** own the contents of your submission **OR**
you **MUST** have permission from the owner(s) to submit their content.
@@ -312,7 +313,7 @@ The remarks file must be written in markdown format. See
the Daring Fireball [Markdown: Basics](http://daringfireball.net/projects/markdown/basics)
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.
## Rule 20
@@ -384,66 +385,33 @@ Even though 24 is not prime, you should still see rule #23.
## Rule 25
**`|`** The IOCCC rule set consists of at least 26 rules.
The IOCCC rule set consists of at least 26 rules.
## Rule 26
**`|`** Rule 26 is also a rule.
Rule 26 is also a rule.
## Rule 27
**`|`** Rule 27 is reserved for something cubic. :-)
# FOR MORE INFORMATION:
The judging will be done by Leonid A. Broukhis and
Landon Curt Noll.
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
**`|`** Please send questions or comments about the contest, to:
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as rules and the guidelines may (and often do) change from year to year.
```
q.2024@ioccc.org
```
**`|`** You should be sure you have the current rules and guidelines prior to submitting entries.
**`|`** **IMPORTANT**: You must include the words **ioccc 2024 question**
in the subject of your email message when sending email to the judges.
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
The rules and the guidelines may (and often do) change from year to
year. You should be sure you have the current rules and guidelines
prior to submitting entries.
**`|`** For the updates and breaking IOCCC news, you are encouraged to follow the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our [FAQ](../faq.html#try_mastodon) for more information.
**`|`** See the [Official IOCCC website](../index.html) for additional information.
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
For the updates and breaking IOCCC news, you are encouraged to follow
the twitter handle:
```
@IOCCC
```
You do not have to be a twitter user to follow @IOCCC. Non-twitter users should access:
```
https://twitter.com/ioccc
```
Non-twitter users should force their browsers to reload the above URL
to be sure they are seeing the most recent tweets.
## An important update to this historic note
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
**`|`** **The IOCCC no longer uses twitter**.
**`|`** Today the [IOCCC uses Mastodon](../contact.html#try_mastodon).
**`|`** For more information and to see our IOCCC Mastodon posts, see:
```
https://fosstodon.org/@ioccc
```
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
Leonid A. Broukhis<br>
chongo (Landon Curt Noll) `/\cc/\`