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:
1 parent
2dc61c21c3
commit
13800f55d9
4 files changed
+231
-421
No files matched your search
+84
-132
@@ -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
|
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="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>
|
<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>
|
||||||
@@ -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>
|
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.
|
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
|
||||||
The rules are typically sent out with these guidelines.</p>
|
The rules are typically sent out with these guidelines.</p>
|
||||||
<h1 id="whats-new-in-20192020">WHAT’S NEW IN 2019/2020</h1>
|
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</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> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>YYYY-MMM-DD HH:MM:SS UTC</strong>.
|
||||||
<p><strong><code>|</code></strong> The reason for the times of day are so that key IOCCC events occur during UTC
|
** XXX - This date and time is TDB - XXX **.</p>
|
||||||
<strong><code>|</code></strong> “prime time”. Do you understand why we factored this into the rules and
|
<p><strong><code>|</code></strong> The reason for the times of day are so that key IOCCC events are <strong>calculated</strong>
|
||||||
<strong><code>|</code></strong> guidelines? :-)</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, these rules, guidelines and iocccsize.c
|
||||||
(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 may be
|
tool should be considered provisional <strong>BETA</strong> versions and may be
|
||||||
adjusted <strong>AT ANY TIME</strong>.</p>
|
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>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>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
|
<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.
|
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
|
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>
|
versions of these items before using the IOCCC entry submission URL.</p>
|
||||||
<h1 id="hints-and-suggestions">HINTS AND SUGGESTIONS:</h1>
|
<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>
|
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
|
<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’
|
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
|
and then plug the hole next year.</p>
|
||||||
<strong><code>|</code></strong> 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 guidelines 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
|
||||||
@@ -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
|
<p>When programs use VTxxx/ANSI sequences, they should NOT 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 an IOCCC size tool.
|
<p><strong><code>|</code></strong> Rule 2 (the size rule) refers to the use of the IOCCC size tool called <code>iocccsize</code>.</p>
|
||||||
<strong><code>|</code></strong> The source for this tool is found at:</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>
|
||||||
<pre><code>| https://www.ioccc.org/2020/iocccsize.c</code></pre>
|
<p><strong><code>|</code></strong> To further clarify rule 2, we subdivided it into two parts, 2a and 2b.</p>
|
||||||
<p>To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
|
<p><strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size rule 2a AND your entry
|
||||||
<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>
|
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
|
<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.
|
code against the 2nd limit of rule 2, use the -i command line option.
|
||||||
For example:</p>
|
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
|
<p>In cases where the above summary and the algorithm implemented by
|
||||||
the IOCCC size tool source code conflict, the algorithm implemented
|
the IOCCC size tool source code conflict, the algorithm implemented
|
||||||
by the IOCCC size tool source code is preferred by the judges.</p>
|
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
|
<p><strong><code>|</code></strong> There are at least 2 other reasons for selecting 2503 as the 2nd limit
|
||||||
besides the fact that 2053 is the next prime > 2048. These reasons
|
<strong><code>|</code></strong> besides the fact that 2053 is a prime. These reasons
|
||||||
may be searched for and discovered if you are “Curios!” about 2053. :-)
|
<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>. :-)
|
||||||
Moreover, 2053 was the number of the kernel disk pack of one of the
|
<strong><code>|</code></strong> Moreover, 2053 was the number of the kernel disk pack of one of the
|
||||||
judge’s BESM-6.</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 #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.</p>
|
to get around the size limits of rule 2.</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> We applaud programs that do not issue warnings when compiled.
|
<p>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
|
To avoid warnings, you might be tempted to add various -Wno-foobar
|
||||||
<strong><code>|</code></strong> flags. Unfortunately such flags are NOT portable. Moreover,
|
flags. Unfortunately such flags are NOT portable. Moreover,
|
||||||
<strong><code>|</code></strong> such flags are not consistent between different C compilers.
|
such flags are not consistent between different C compilers.
|
||||||
<strong><code>|</code></strong> Therefore we recommend that you consider one of several approaches:</p>
|
Therefore we recommend that you consider one of several approaches:</p>
|
||||||
<ol type="a">
|
<ol type="a">
|
||||||
<li><strong><code>|</code></strong> Write code that does not generate compiler warnings</li>
|
<li>Write code that does not generate compiler warnings</li>
|
||||||
<li><strong><code>|</code></strong> Do not use flags that disable compiler warnings</li>
|
<li>Do not use flags that disable compiler warnings</li>
|
||||||
<li><strong><code>|</code></strong> Provide instructions (such as in your Makefile) that
|
<li>Provide instructions (such as in your Makefile) that
|
||||||
<strong><code>|</code></strong> uses appropriate disable compiler warnings flags for
|
uses appropriate disable compiler warnings flags for
|
||||||
<strong><code>|</code></strong> both clang and gcc</li>
|
both clang and gcc</li>
|
||||||
<li><strong><code>|</code></strong> Do something creative</li>
|
<li>Do something creative</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
|
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
|
||||||
<p>Doing masses of #defines to obscure the source has become ‘old’. We
|
<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
|
<p>One side effect of the above is that you cannot assume the use
|
||||||
of nested functions such as:</p>
|
of nested functions such as:</p>
|
||||||
<pre><code> main() {
|
<pre><code> main() {
|
||||||
| void please_do_not_submit_this() {
|
| void please_dont_submit_this() {
|
||||||
| printf("The machine that goes BING!\n");
|
| printf("The machine that goes BING!!\n");
|
||||||
}
|
}
|
||||||
| please_do_not_submit_this();
|
| please_dont_submit_this();
|
||||||
}</code></pre>
|
}</code></pre>
|
||||||
<p>This is because such nested functions often requires one to compile with
|
<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>
|
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
|
nested functions. Such constructions, while interesting and sometimes
|
||||||
amusing, will have to wait until they required by a C standard that are
|
amusing, will have to wait until they required by a C standard that are
|
||||||
actually implemented in commonly used C compilers. Sorry!</p>
|
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
|
<p>We prefer programs that do not require a fish license: crayons and
|
||||||
<strong><code>|</code></strong> cat detector vans not withstanding.</p>
|
cat detector vans not withstanding.</p>
|
||||||
<p>If your entry uses functions that have a variable number of
|
<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
|
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
|
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 “blob-ier” than they need to be</li>
|
||||||
<li>are rather similar to previous winners :-(</li>
|
<li>are rather similar to previous winners :-(</li>
|
||||||
<li>are too similar to previous losers :-)</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>that mandate the exclusive the use of an specific Integrated</li>
|
||||||
<li><strong><code>|</code></strong> Development Environment (IDE)</li>
|
<li>Development Environment (IDE)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><strong><code>|</code></strong> In order to encourage entry portability, we dislike entries that
|
<p>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
|
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
|
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
|
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>
|
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.
|
<p>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>
|
Therefore do not assume the system has a windows.h include file:</p>
|
||||||
<pre><code>| #include <windows.h> /* we dislike this include */</code></pre>
|
<pre><code> #include <windows.h> /* we dislike this include */</code></pre>
|
||||||
<p>Unless you are cramped for space, or unless you are entering the
|
<p>Unless you are cramped for space, or unless you are entering the
|
||||||
‘best one liner’ category, we suggest that you format your program
|
‘best one liner’ category, we suggest that you format your program
|
||||||
in a more creative way than simply forming excessively long lines.</p>
|
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>
|
after the minute mark is 60.</p>
|
||||||
<p>The “how to build” make process should not be used to try and get
|
<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
|
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>
|
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
|
<p>Your source code, post-pre-processing, should not exceed the size of Windows. :-)</p>
|
||||||
<strong><code>|</code></strong> of Windows. :-)</p>
|
|
||||||
<p>The judges, as a group, have a history giving wide degree of latitude
|
<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
|
to reasonable entries. And recently they have had as much longitudinal
|
||||||
variation as it is possible to have on Earth. :-)</p>
|
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>
|
However, initialized char arrays are OK to write over. This is OK:</p>
|
||||||
<pre><code> char b[] = "Is this OK";
|
<pre><code> char b[] = "Is this OK";
|
||||||
b[9] = 'K';</code></pre>
|
b[9] = 'K';</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
|
<p>X client entries should be as portable as possible. Entries that
|
||||||
adapt to a wide collection of environments will be favored. For
|
adapt to a wide collection of environments will be favored. For
|
||||||
example, don’t depend on a particular type or size of display.
|
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
|
<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 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,
|
<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
|
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>
|
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
|
<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
|
.Xdefaults. 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
|
||||||
@@ -778,22 +774,18 @@ Happy Birthday song; music that some people believe is copyrighted
|
|||||||
the copyright system).</p>
|
the copyright system).</p>
|
||||||
<p>While we recognize that UNIX is not a universal operating system, the
|
<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
|
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
|
the scope of the contest, we phrase our bias to favor:</p>
|
||||||
and P1003.2 standards. This will allow certain non-UNIX OS users to
|
<p><strong><code>|</code></strong> <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>.</p>
|
||||||
submit entries. On the other hand, this is a guideline and not a rule.
|
<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>
|
||||||
We will not reject an entry based on some POSIX technicality.</p>
|
<p><strong><code>|</code></strong> You very well might not be completely be prohibited from failing to not
|
||||||
<p>When dealing with OS and application environments, we suggest that you
|
<strong><code>|</code></strong> partly misunderstand this particular guideline, but of course, we could
|
||||||
be reasonable with a nod towards vanilla UNIX-like systems. POSIX will
|
<strong><code>|</code></strong> not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
|
||||||
evolve but not as much as the contest.</p>
|
<strong><code>|</code></strong> you fully required to determine that this or the previous sentence is either false
|
||||||
<p>You very well might not be completely prohibited from failing to not
|
<strong><code>|</code></strong> and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider
|
||||||
partly misunderstand this particular guideline, but of course we could
|
<strong><code>|</code></strong> to do so, accordingly. Thank you very much.</p>
|
||||||
<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>
|
|
||||||
<p>Any complaints about the above guideline could be addressed to the
|
<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
|
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>
|
<p>We like programs that:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>are as concise and small as they need to be</li>
|
<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
|
<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 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
|
<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.
|
||||||
@@ -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>
|
<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 guideline for those writing code for the IOCCC.</p>
|
||||||
<p>The IOCCC size tool source, iocccsize.c, is not an original work,
|
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">IOCCC size tool source</a>
|
||||||
<strong><code>|</code></strong> unless you are Anthony C Howe, in which case it is original!
|
is not an original work,
|
||||||
<strong><code>|</code></strong> Submitting source that uses the content iocccsize.c, unless you are
|
unless you are Anthony C Howe, in which case it is original!
|
||||||
<strong><code>|</code></strong> Anthony C Howe, might run the risk of violating rule 7.</p>
|
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.
|
<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
|
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>
|
||||||
@@ -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
|
entry. They are given the chance to correct mistakes and typos. We
|
||||||
often accept their suggestions/comments about our remarks as well.
|
often accept their suggestions/comments about our remarks as well.
|
||||||
This is done prior to posting the winners to the wide world.</p>
|
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
|
<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
|
by a git commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries
|
||||||
repo</a>.</p>
|
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
|
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>
|
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>
|
<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>
|
<h2 id="how-the-new-ioccc-winners-will-be-announced">How the new IOCCC winners will be announced</h2>
|
||||||
<p><strong>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></p>
|
<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> <strong>The IOCCC no longer uses twitter</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> Today the <a href="../contact.html#mastodon">IOCCC uses Mastodon</a>.</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> For more information and to see our IOCCC Mastodon posts, see:</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>
|
||||||
<pre><code> https://fosstodon.org/@ioccc</code></pre>
|
<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>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</strong></p>
|
<p><strong><code>|</code></strong> The <a href="../news.html">IOCCC news</a> will also contain an announcement of the winners.</p>
|
||||||
<p>Non-twitter users should force their browsers to reload the above URL
|
<h2 id="an-important-update-to-how-winners-are-announced-1">An important update to how winners are announced</h2>
|
||||||
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>
|
|
||||||
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced
|
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced
|
||||||
by a git commit to the IOCCC entries repo:</p>
|
by a git commit to the IOCCC entries repo:</p>
|
||||||
<pre><code> https://github.com/ioccc-src/winner</code></pre>
|
<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>
|
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>You may contact the judges by sending email to the following address:</p>
|
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
|
||||||
<pre><code>| q.2024@ioccc.org (do not submit entries to this address)</code></pre>
|
<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 must include the words ‘ioccc 2024 question’ in the subject of your
|
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
|
||||||
email message when sending email to the judges.</p>
|
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
|
||||||
<p>Questions and comments about the contest are welcome. Comments about
|
<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>
|
||||||
confusing rules and guidelines are also welcome.</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>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>Leonid A. Broukhis<br>
|
<p>Leonid A. Broukhis<br>
|
||||||
chongo (Landon Curt Noll) /\cc/\</p>
|
chongo (Landon Curt Noll) /\cc/\</p>
|
||||||
<hr style="width:10%;text-align:left;margin-left:0">
|
<hr style="width:10%;text-align:left;margin-left:0">
|
||||||
|
|||||||
+87
-182
@@ -32,14 +32,14 @@ writing by [contacting the judges](../contact.html).
|
|||||||
|
|
||||||
## Guidelines version
|
## 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).
|
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
|
||||||
|
|
||||||
|
|
||||||
### Change marks
|
### Change marks
|
||||||
|
|
||||||
**`|`** **← Lines that start with this symbol indicate a change from the previous IOCCC**
|
**`|`** **← 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
|
Most lines (we sometimes make mistakes) that were modified since the previous
|
||||||
IOCCC start with the **`|`** symbol.
|
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.
|
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
|
**`|`** The reason for the times of day are so that key IOCCC events are **calculated**
|
||||||
**`|`** "prime time". Do you understand why we factored this into the rules and
|
for be a **fun**ctional UTC time. :-)
|
||||||
**`|`** guidelines? :-)
|
|
||||||
|
|
||||||
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
||||||
(contained in the [mkiocccentry
|
(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
|
tool should be considered provisional **BETA** versions and may be
|
||||||
adjusted **AT ANY TIME**.
|
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 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.
|
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
|
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.
|
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
|
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.
|
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
|
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'
|
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
|
and then plug the hole next year.
|
||||||
**`|`** the smallest plug needed, if not smaller. Or, maybe not. :-)
|
|
||||||
|
|
||||||
**`|`** 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
|
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
|
||||||
@@ -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
|
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 an IOCCC size tool.
|
**`|`** Rule 2 (the size rule) refers to the use of the IOCCC size tool called `iocccsize`.
|
||||||
**`|`** The source for this tool is found at:
|
|
||||||
|
|
||||||
```
|
**`|`** See the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) for how to compile and `iocccsize`.
|
||||||
| https://www.ioccc.org/2020/iocccsize.c
|
|
||||||
```
|
**`|`** 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
|
**`|`** Your entry must satisfy BOTH the maximum size rule 2a AND your entry
|
||||||
must satisfy the IOCCC size tool rule 2b.
|
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
|
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.
|
code against the 2nd limit of rule 2, use the -i command line option.
|
||||||
For example:
|
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
|
the IOCCC size tool source code conflict, the algorithm implemented
|
||||||
by the IOCCC size tool source code is preferred by the judges.
|
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
|
**`|`** There are at least 2 other reasons for selecting 2503 as the 2nd limit
|
||||||
besides the fact that 2053 is the next prime > 2048. These reasons
|
**`|`** besides the fact that 2053 is a prime. These reasons
|
||||||
may be searched for and discovered if you are "Curios!" about 2053. :-)
|
**`|`** 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
|
**`|`** Moreover, 2053 was the number of the kernel disk pack of one of the
|
||||||
judge's BESM-6.
|
**`|`** judge's BESM-6, and 2503 is a decimal anagram of 2053.
|
||||||
|
|
||||||
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
|
||||||
@@ -220,18 +211,18 @@ to get around the size limits of rule 2.
|
|||||||
|
|
||||||
Yes Virginia, **that is a hint**!
|
Yes Virginia, **that is a hint**!
|
||||||
|
|
||||||
**`|`** 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,
|
||||||
**`|`** such flags are not consistent between different C compilers.
|
such flags are not consistent between different C compilers.
|
||||||
**`|`** Therefore we recommend that you consider one of several approaches:
|
Therefore we recommend that you consider one of several approaches:
|
||||||
|
|
||||||
a) **`|`** Write code that does not generate compiler warnings
|
a) Write code that does not generate compiler warnings
|
||||||
b) **`|`** Do not use flags that disable compiler warnings
|
b) Do not use flags that disable compiler warnings
|
||||||
c) **`|`** Provide instructions (such as in your Makefile) that
|
c) Provide instructions (such as in your Makefile) that
|
||||||
**`|`** uses appropriate disable compiler warnings flags for
|
uses appropriate disable compiler warnings flags for
|
||||||
**`|`** both clang and gcc
|
both clang and gcc
|
||||||
d) **`|`** Do something creative
|
d) Do something creative
|
||||||
|
|
||||||
|
|
||||||
# OUR LIKES AND DISLIKES:
|
# OUR LIKES AND DISLIKES:
|
||||||
@@ -329,10 +320,10 @@ of nested functions such as:
|
|||||||
|
|
||||||
```
|
```
|
||||||
main() {
|
main() {
|
||||||
| void please_do_not_submit_this() {
|
| void please_dont_submit_this() {
|
||||||
| printf("The machine that goes BING!\n");
|
| 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
|
amusing, will have to wait until they required by a C standard that are
|
||||||
actually implemented in commonly used C compilers. Sorry!
|
actually implemented in commonly used C compilers. Sorry!
|
||||||
|
|
||||||
**`|`** We prefer programs that do not require a fish license: crayons and
|
We prefer programs that do not require a fish license: crayons and
|
||||||
**`|`** cat detector vans not withstanding.
|
cat detector vans not withstanding.
|
||||||
|
|
||||||
If your entry uses functions that have a variable number of
|
If your entry uses functions that have a variable number of
|
||||||
arguments, be careful. Systems implement `va_list` as a wide variety
|
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 "blob-ier" than they need to be
|
||||||
* are rather similar to previous winners :-(
|
* are rather similar to previous winners :-(
|
||||||
* are too similar to previous losers :-)
|
* are too similar to previous losers :-)
|
||||||
* **`|`** that mandate the exclusive the use of an specific Integrated
|
* that mandate the exclusive the use of an specific Integrated
|
||||||
* **`|`** Development Environment (IDE)
|
* Development Environment (IDE)
|
||||||
|
|
||||||
**`|`** In order to encourage entry portability, we dislike entries that
|
In order to encourage entry portability, we dislike entries that
|
||||||
**`|`** fail to build unless one is using an IDE. For example, do not
|
fail to build unless one is using an IDE. For example, do not
|
||||||
**`|`** mandate that one must use Microsoft Visual Studio to compile
|
mandate that one must use Microsoft Visual Studio to compile
|
||||||
**`|`** your entry. Nevertheless some of the better IDEs have command-line
|
your entry. Nevertheless some of the better IDEs have command-line
|
||||||
**`|`** interfaces to their compilers, once one learns how to invoke a shell.
|
interfaces to their compilers, once one learns how to invoke a shell.
|
||||||
|
|
||||||
**`|`** The program must compile and link cleanly in a POSIX-like environment.
|
The program must compile and link cleanly in a POSIX-like environment.
|
||||||
**`|`** Therefore do not assume the system has a windows.h include file:
|
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
|
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
|
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
|
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.
|
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
|
Your source code, post-pre-processing, should not exceed the size of Windows. :-)
|
||||||
**`|`** of Windows. :-)
|
|
||||||
|
|
||||||
The judges, as a group, have a history giving wide degree of latitude
|
The judges, as a group, have a history giving wide degree of latitude
|
||||||
to reasonable entries. And recently they have had as much longitudinal
|
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';
|
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
|
X client entries should be as portable as possible. Entries that
|
||||||
adapt to a wide collection of environments will be favored. For
|
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.
|
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? 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,
|
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
|
Xv*ew, or OpenL*ok toolkits, since not everyone has them. Use of 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
|
||||||
@@ -572,25 +563,22 @@ the copyright system).
|
|||||||
|
|
||||||
While we recognize that UNIX is not a universal operating system, the
|
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
|
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
|
the scope of the contest, we phrase our bias to favor:
|
||||||
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.
|
|
||||||
|
|
||||||
When dealing with OS and application environments, we suggest that you
|
**`|`** [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification).
|
||||||
be reasonable with a nod towards vanilla UNIX-like systems. POSIX will
|
|
||||||
evolve but not as much as the contest.
|
|
||||||
|
|
||||||
You very well might not be completely prohibited from failing to not
|
**`|`** You are **well advised** to submit entries that conform to the [Single UNIX Specification Version 4](https://unix.org/version4/overview.html).
|
||||||
partly misunderstand this particular guideline, but of course we could
|
|
||||||
**`|`** not possibly comment. Nevertheless, you are neither prohibited, nor are
|
**`|`** You very well might not be completely be prohibited from failing to not
|
||||||
**`|`** you required to determine that this or the previous sentence is either false
|
**`|`** partly misunderstand this particular guideline, but of course, we could
|
||||||
**`|`** and/or misleading. Therefore, it might be wise for you to not fail to consider
|
**`|`** not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
|
||||||
**`|`** to do so, accordingly. Thank you.
|
**`|`** 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
|
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.
|
||||||
|
|
||||||
We like programs that:
|
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
|
"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 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
|
||||||
@@ -670,10 +658,11 @@ We believe that Mark Twain's remark:
|
|||||||
|
|
||||||
is a good guideline for those writing code for the IOCCC.
|
is a good guideline for those writing code for the IOCCC.
|
||||||
|
|
||||||
The IOCCC size tool source, iocccsize.c, is not an original work,
|
**`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
|
||||||
**`|`** unless you are Anthony C Howe, in which case it is original!
|
is not an original work,
|
||||||
**`|`** Submitting source that uses the content iocccsize.c, unless you are
|
unless you are Anthony C Howe, in which case it is original!
|
||||||
**`|`** Anthony C Howe, might run the risk of violating rule 7.
|
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.
|
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
|
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.
|
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
|
The IOCCC no longer uses twitter. IOCCC entries will be announced
|
||||||
by a git commit to the [IOCCC entries
|
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.
|
||||||
|
|
||||||
```
|
**`|`** 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).
|
||||||
https://fosstodon.org/@ioccc
|
|
||||||
```
|
|
||||||
|
|
||||||
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
|
**`|`** The [IOCCC news](../news.html) will also contain an announcement of the winners.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
## 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
|
The IOCCC no longer uses twitter. IOCCC entries will be announced
|
||||||
by a git commit to the IOCCC entries repo:
|
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:
|
# 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).
|
||||||
|
|
||||||
```
|
**`|`** 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 (do not submit entries to this address)
|
|
||||||
```
|
|
||||||
|
|
||||||
**`|`** You must include the words 'ioccc 2024 question' in the subject of your
|
**`|`** You should be sure you have the current rules and guidelines prior to submitting entries.
|
||||||
email message when sending email to the judges.
|
|
||||||
|
|
||||||
Questions and comments about the contest are welcome. Comments about
|
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
|
||||||
confusing rules and guidelines are also welcome.
|
|
||||||
|
|
||||||
The rules and the guidelines may (and often do) change from year to
|
**`|`** 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.
|
||||||
year. You should be sure you have the current rules and guidelines
|
|
||||||
prior to submitting entries.
|
|
||||||
|
|
||||||
Check out the IOCCC Web page:
|
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
|
||||||
|
|
||||||
```
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
**-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-**
|
|
||||||
|
|
||||||
Leonid A. Broukhis<br>
|
Leonid A. Broukhis<br>
|
||||||
chongo (Landon Curt Noll) /\\cc/\\
|
chongo (Landon Curt Noll) /\\cc/\\
|
||||||
|
|||||||
+22
-37
@@ -456,13 +456,13 @@ entry submission URL.</p>
|
|||||||
<h2 id="rule-1">Rule 1</h2>
|
<h2 id="rule-1">Rule 1</h2>
|
||||||
<p>Your entry must be a complete program.</p>
|
<p>Your entry must be a complete program.</p>
|
||||||
<h2 id="rule-2">Rule 2</h2>
|
<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>
|
<h2 id="rule-2a">Rule 2a</h2>
|
||||||
<p>The size of your program source <strong>MUST BE <= 4096 bytes</strong>in length.</p>
|
<p>The size of your program source <strong>MUST BE <= 4096 bytes</strong>in length.</p>
|
||||||
<h2 id="rule-2b">Rule 2b</h2>
|
<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
|
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
|
<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
|
<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
|
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
|
<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>
|
||||||
<h2 id="rule-6">Rule 6</h2>
|
<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>
|
<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(you(are(number(6))))))) { ha_ha_ha(); }</code></pre>
|
<pre><code>| while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }</code></pre>
|
||||||
<h2 id="rule-7">Rule 7</h2>
|
<h2 id="rule-7">Rule 7</h2>
|
||||||
<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
|
||||||
@@ -501,8 +501,8 @@ detail that ownership (i.e., who owns what) and document the
|
|||||||
permission you obtained.</p>
|
permission you obtained.</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>
|
||||||
<h2 id="rule-8">Rule 8</h2>
|
<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>
|
<p><strong><code>|</code></strong> Entries must be received prior to the end of this IOCCC which is
|
||||||
<pre><code> 2020-Mar-15 06:26:49 UTC</code></pre>
|
<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
|
<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>
|
||||||
<h2 id="rule-9">Rule 9</h2>
|
<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
|
discouraged. As we judge anonymously, submissions that have already
|
||||||
been published may be disqualified.</p>
|
been published may be disqualified.</p>
|
||||||
<h2 id="rule-17">Rule 17</h2>
|
<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
|
hints, comments, build and info files <strong>MUST</strong> be less than or equal
|
||||||
to 1048576 octets in size. The
|
to 28314624 octets (27651K) in size.</p>
|
||||||
[mkiocccentry toolkit]((https://github.com/ioccc-src/mkiocccentry) will verify
|
<p><strong><code>|</code></strong> When your submission is formed into a bzip2 compressed tarball file,
|
||||||
that your entry is not too big.</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> (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>
|
<h2 id="rule-18">Rule 18</h2>
|
||||||
<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>
|
||||||
@@ -610,34 +611,18 @@ for disqualification of your entry.</p>
|
|||||||
<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>
|
<p>Even though 24 is not prime, you should still see rule #23.</p>
|
||||||
<h2 id="rule-25">Rule 25</h2>
|
<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>
|
<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>
|
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
||||||
<p>The judging will be done by Leonid A. Broukhis and
|
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
|
||||||
Landon Curt Noll.</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> Please send questions or comments about the contest, to:</p>
|
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
|
||||||
<pre><code> q.2024@ioccc.org</code></pre>
|
<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> <strong>IMPORTANT</strong>: You must include the words <strong>ioccc 2024 question</strong>
|
<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>
|
||||||
in the subject of your email message when sending email to the judges.</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>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>Leonid A. Broukhis<br>
|
<p>Leonid A. Broukhis<br>
|
||||||
chongo (Landon Curt Noll) <code>/\cc/\</code></p>
|
chongo (Landon Curt Noll) <code>/\cc/\</code></p>
|
||||||
<hr style="width:10%;text-align:left;margin-left:0">
|
<hr style="width:10%;text-align:left;margin-left:0">
|
||||||
|
|||||||
+38
-70
@@ -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 -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
# 28th International Obfuscated C Code Contest Official Rules
|
# 28th International Obfuscated C Code Contest Official Rules
|
||||||
|
|
||||||
**`|`** Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.
|
**`|`** Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.
|
||||||
|
|
||||||
All Rights Reserved. Permission for personal, education or non-profit use is
|
All Rights Reserved. Permission for personal, education or non-profit use is
|
||||||
granted provided this this copyright and notice are included in its entirety
|
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
|
## 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).
|
**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html).
|
||||||
|
|
||||||
|
|
||||||
### Change marks
|
### Change marks
|
||||||
|
|
||||||
**`|`** **← Lines that start with this symbol indicate a change from the previous IOCCC**
|
**`|`** **← 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
|
Most lines (we sometimes make mistakes) that were modified since the previous
|
||||||
IOCCC start the **`|`** symbol.
|
IOCCC start the **`|`** symbol.
|
||||||
@@ -70,7 +70,7 @@ The goals of the IOCCC:
|
|||||||
|
|
||||||
# Important IOCCC dates
|
# 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
|
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
||||||
(contained in the [mkiocccentry
|
(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
|
Please check the [How to enter link](../faq.html#submit) link
|
||||||
for **important information** on how to submit to the IOCCC.
|
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.
|
Please wait to submit your entries until after that time.
|
||||||
|
|
||||||
The official rules, guidelines will be available on the [official IOCCC
|
The official rules, guidelines will be available on the [official IOCCC
|
||||||
@@ -116,7 +116,7 @@ Your entry must be a complete program.
|
|||||||
|
|
||||||
## Rule 2
|
## 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
|
## Rule 2a
|
||||||
@@ -125,11 +125,11 @@ The size of your program source **MUST BE <= 4096 bytes**in length.
|
|||||||
|
|
||||||
## Rule 2b
|
## 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
|
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
|
[mkiocccentry tool repo](https://github.com/ioccc-src/mkiocccentry). If you use
|
||||||
the `mkiocccentry` tool (which we **STRONGLY recommend you do**) will invoke
|
the `mkiocccentry` tool (which we **STRONGLY recommend you do**) will invoke
|
||||||
this tool before packaging your entry for submission.
|
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.
|
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.
|
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
|
## 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-->
|
``` <!---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
|
you must have permission from the owner(s) to submit their content
|
||||||
under the following license:
|
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.
|
||||||
|
|
||||||
@@ -199,11 +199,9 @@ Please note that the IOCCC size tool is **NOT** an original work.
|
|||||||
|
|
||||||
## Rule 8
|
## 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
|
A confirmation of submission will be sent to the submitting email address
|
||||||
before the close of the contest.
|
before the close of the contest.
|
||||||
@@ -211,7 +209,7 @@ before the close of the contest.
|
|||||||
|
|
||||||
## Rule 9
|
## 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.
|
Each entry must be submitted separately.
|
||||||
|
|
||||||
@@ -287,18 +285,21 @@ been published may be disqualified.
|
|||||||
|
|
||||||
## Rule 17
|
## 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
|
hints, comments, build and info files **MUST** be less than or equal
|
||||||
to 1048576 octets in size. The
|
to 28314624 octets (27651K) in size.
|
||||||
[mkiocccentry toolkit]((https://github.com/ioccc-src/mkiocccentry) will verify
|
|
||||||
that your entry is not too big.
|
**`|`** 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
|
## Rule 18
|
||||||
|
|
||||||
The entirety of your entry must be submitted under the following license:
|
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 (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.
|
||||||
@@ -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)
|
the Daring Fireball [Markdown: Basics](http://daringfireball.net/projects/markdown/basics)
|
||||||
for more information.
|
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
|
## Rule 20
|
||||||
@@ -384,66 +385,33 @@ Even though 24 is not prime, you should still see rule #23.
|
|||||||
|
|
||||||
## Rule 25
|
## 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
|
||||||
|
|
||||||
**`|`** Rule 26 is also a rule.
|
Rule 26 is also a rule.
|
||||||
|
|
||||||
|
|
||||||
|
## Rule 27
|
||||||
|
|
||||||
|
**`|`** Rule 27 is reserved for something cubic. :-)
|
||||||
|
|
||||||
|
|
||||||
# FOR MORE INFORMATION:
|
# FOR MORE INFORMATION:
|
||||||
|
|
||||||
The judging will be done by Leonid A. Broukhis and
|
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
||||||
Landon Curt Noll.
|
|
||||||
|
|
||||||
**`|`** 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.
|
||||||
|
|
||||||
```
|
**`|`** You should be sure you have the current rules and guidelines prior to submitting entries.
|
||||||
q.2024@ioccc.org
|
|
||||||
```
|
|
||||||
|
|
||||||
**`|`** **IMPORTANT**: You must include the words **ioccc 2024 question**
|
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
|
||||||
in the subject of your email message when sending email to the judges.
|
|
||||||
|
|
||||||
The rules and the guidelines may (and often do) change from year to
|
**`|`** 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.
|
||||||
year. You should be sure you have the current rules and guidelines
|
|
||||||
prior to submitting entries.
|
|
||||||
|
|
||||||
**`|`** 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>
|
Leonid A. Broukhis<br>
|
||||||
chongo (Landon Curt Noll) `/\cc/\`
|
chongo (Landon Curt Noll) `/\cc/\`
|
||||||
|
|||||||
Reference in new issue
Block a user