Merge pull request #225 from xexyl/chkentry

Update FAQ, rules/guidelines etc. for #208
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2025-11-17 12:08:39 -08:00
commit 156ebd29d1
10 files changed
+1293 -3387

No files matched your search

+244 -688
View File
File diff suppressed because it is too large. Load diff
+172 -585
View File
File diff suppressed because it is too large. Load diff
+502 -926
View File
File diff suppressed because it is too large. Load diff
+131 -529
View File
File diff suppressed because it is too large. Load diff
+210 -419
View File
@@ -488,12 +488,10 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
</div>
</div>
<p class="leftbar">
These <a href="rules.html">IOCCC rules</a> are version <strong>28.30 2025-03-03</strong>.
</p>
<p class="leftbar">
The markdown form of these rules <a href="rules.md" download="rules.md">is
available for download</a>.
These <a href="rules.html">IOCCC rules</a> are version <strong>28.31 2025-11-17</strong>.
</p>
<p>The markdown form of these rules <a href="rules.md" download="rules.md">is
available for download</a>.</p>
<p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="change_marks">
@@ -545,16 +543,14 @@ This contest will enter the <strong><a href="../faq.html#judging">judging</a></s
<strong>IMPORTANT NOTE</strong>: Until the contest enters the <strong><a href="../faq.html#open">open</a></strong> state, any or all
of the above <strong>dates and times may change</strong>!
</p>
<p class="leftbar">
See the
<p>See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>”
and the
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
as that FAQ has important details on
<a href="../next/register.html">how to register</a>
as well as
<a href="../next/submit.html">how to upload your submission</a> to the IOCCC.
</p>
<a href="../next/submit.html">how to upload your submission</a> to the IOCCC.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rules">
<h1 id="ioccc-rules">IOCCC RULES</h1>
@@ -563,192 +559,132 @@ as well as
<div id="rule_abuse">
<h4 id="a-warning-about-rule-abuse">A warning about rule abuse</h4>
</div>
<p class="leftbar">
<strong>WARNING:</strong> Abusing these rules comes with a <strong>fair amount of risk</strong>
<p><strong>WARNING:</strong> Abusing these rules comes with a <strong>fair amount of risk</strong>
that your submission will be rejected. If you do plan to abuse the
rules, then you <strong>MUST CLEARLY EXPLAIN THE RATIONALE</strong> in your <code>remarks.md</code> file,
as to why you think your rule abuse should be allowed, and as to why you think
your submission should not be rejected for a rule violation.
<strong>Nevertheless, <em>even if you do</em> explain this in your <code>remarks.md</code> file
you submission may still be rejected</strong>.
</p>
<p class="leftbar">
If you use the most recently released official IOCCC submission packaging tool
you submission may still be rejected</strong>.</p>
<p>If you use the most recently released official IOCCC submission packaging tool
(hereby referred to as <code>mkiocccentry(1)</code>), which we <strong>STRONGLY recommend you
do</strong>, then the <code>mkiocccentry(1)</code> tool will warn you if there appears to be a
violation in certain rules (not all can be detected). The <code>mkiocccentry(1)</code>
tool also runs <code>chkentry(1)</code> and <code>txzchk(1)</code>, the latter of which runs
tool also runs <code>chksubmit(1)</code> and <code>txzchk(1)</code>, the latter of which runs
<code>fnamchk(1)</code>. Overriding problems detected by any of these tools comes with a
<strong>fair amount of risk</strong> that your submission will be rejected.
</p>
<p class="leftbar">
If you do override a rule violation warning from the <code>mkiocccentry(1)</code> or
<strong>fair amount of risk</strong> that your submission will be rejected.</p>
<p>If you do override a rule violation warning from the <code>mkiocccentry(1)</code> or
another related IOCCC tool, or otherwise plan to abuse the rules, then you
<strong>MUST CLEARLY EXPLAIN THE RATIONALE</strong> of why you are attempting to abuse the
rules in your <code>remarks.md</code> file. <strong><em>Even if you do</em> explain this in your
<code>remarks.md</code> file your submission may still be rejected</strong>.
</p>
<p class="leftbar">
<strong>HINT:</strong> If you do submit such a rule abusing / rule violating
<code>remarks.md</code> file your submission may still be rejected</strong>.</p>
<p><strong>HINT:</strong> If you do submit such a rule abusing / rule violating
submission, then consider also submitting an alternate version in a
<strong>different submission</strong> server slot that does <strong>NOT</strong> violate the rules
in case your rule abuse excuse is rejected.
</p>
<p class="leftbar">
<strong>IMPORTANT</strong>: if you do submit such an alternate non-rule abusing version,
in case your rule abuse excuse is rejected.</p>
<p><strong>IMPORTANT</strong>: if you do submit such an alternate non-rule abusing version,
<strong>PLEASE</strong> indicate that in your <code>remarks.md</code> file of your non-rule abusing
version so that the <a href="../judges.html">IOCCC judges</a> do not think you uploaded a
duplicate into a wrong slot by mistake.
</p>
<p class="leftbar">
Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
duplicate into a wrong slot by mistake.</p>
<p>Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
violating <a href="rules.html#rule17">Rule 17</a>, especially as <code>mkiocccentry(1)</code> does a
great number of things that are required, and it also runs many checks, and if
any of those checks fail, you are at a very great risk of having your submission
rejected for violating <a href="rules.html#rule17">Rule 17</a>.
</p>
<p class="leftbar">
See also <a href="#rule13">Rule 12</a>.
</p>
rejected for violating <a href="rules.html#rule17">Rule 17</a>.</p>
<p>See also <a href="#rule13">Rule 12</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule0">
<h2 id="rule-0">Rule 0</h2>
</div>
<p class="leftbar">
Just as C starts at 0, so the IOCCC starts at <a href="#rule0">Rule 0</a>. :-)
</p>
<p class="leftbar">
The “<a href="#dates">Important IOCCC dates</a>” section above is part of this rule.
</p>
<p>Just as C starts at 0, so the IOCCC starts at <a href="#rule0">Rule 0</a>. :-)</p>
<p>The “<a href="#dates">Important IOCCC dates</a>” section above is part of this rule.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule1">
<h2 id="rule-1">Rule 1</h2>
</div>
<p class="leftbar">
Your submission must be a C program.
</p>
<p class="leftbar">
You see, the contest is not called the <strong>International Obfuscated JSON Contest</strong>
<p>Your submission must be a C program.</p>
<p>You see, the contest is not called the <strong>International Obfuscated JSON Contest</strong>
(<strong>IOJSONC</strong>), even if the <a href="https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec">so-called JSON
spec</a> might be called obfuscated
by some people. :-)
</p>
by some people. :-)</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule2">
<h2 id="rule-2">Rule 2</h2>
</div>
<p><a href="#rule2">Rule 2</a> requires that your submission satisfy <strong>BOTH</strong> <a href="#rule2a">Rule
2a</a> <strong>AND</strong> <a href="#rule2b">Rule 2b</a>.</p>
<p class="leftbar">
You may check your code with respect to <a href="#rule2a">Rule 2a</a> and <a href="#rule2b">Rule
<p>You may check your code with respect to <a href="#rule2a">Rule 2a</a> and <a href="#rule2b">Rule
2b</a> prior to submitting your code by giving the filename
as a command like argument to the <code>iocccsize(1)</code> tool. For example:
</p>
as a command like argument to the <code>iocccsize(1)</code> tool. For example:</p>
<pre><code> iocccsize prog.c</code></pre>
<p class="leftbar">
The source to <code>iocccsize(1)</code> may be found in the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.
</p>
<p class="leftbar">
See also the
<p>The source to <code>iocccsize(1)</code> may be found in the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.</p>
<p>See also the
FAQ on “<a href="../faq.html#mkiocccentry_test">how to further test your submission</a>”
for more more thorough testing, including <a href="#rule2">Rule 2</a>.
</p>
<p class="leftbar">
See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a href="#rule17">Rule 17</a>.
</p>
for more more thorough testing, including <a href="#rule2">Rule 2</a>.</p>
<p>See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule2a">
<h2 id="rule-2a">Rule 2a</h2>
</div>
<p class="leftbar">
The size of your program source <strong>should NOT exceed 4993 bytes</strong>.
The size of your program source <strong>MUST NOT exceed 4993 bytes</strong>.
</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule2b">
<h2 id="rule-2b">Rule 2b</h2>
</div>
<p class="leftbar">
When the filename of your program source is given as a command line argument to
<p>When the filename of your program source is given as a command line argument to
the latest version of the official IOCCC size tool (hereby referred to as
<code>iocccsize(1)</code>), the value printed <strong>should NOT exceed <em>2503</em></strong>.
</p>
<p class="leftbar">
See also <a href="#rule17">Rule 17</a>.
</p>
<code>iocccsize(1)</code>), the value printed <strong>MUST NOT exceed <em>2503</em></strong>.</p>
<p>See also <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule3">
<h2 id="rule-3">Rule 3</h2>
</div>
<p class="leftbar">
You must <a href="../next/register.html">register</a> in order to submit your entry to the IOCCC.
<p>You must <a href="../next/register.html">register</a> in order to submit your entry to the IOCCC.
You may <a href="../next/register.html">register</a> while the contest is either
<strong><a href="../faq.html#pending">pending</a></strong> or <strong><a href="../faq.html#open">open</a></strong>.
</p>
<p class="leftbar">
When the contest is <strong><a href="../faq.html#open">open</a></strong>, the <a href="https://submit.ioccc.org">submit server</a>
<strong><a href="../faq.html#pending">pending</a></strong> or <strong><a href="../faq.html#open">open</a></strong>.</p>
<p>When the contest is <strong><a href="../faq.html#open">open</a></strong>, the <a href="https://submit.ioccc.org">submit server</a>
will email you your <a href="https://submit.ioccc.org">submit server</a>
<strong>Username</strong> and <strong>Initial password</strong>. <strong>Please be patient</strong> as it may take some time,
perhaps as much as a few days, for your registration to be processed and for that email to be sent.
</p>
<p class="leftbar">
Those who <a href="../next/register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong>
perhaps as much as a few days, for your registration to be processed and for that email to be sent.</p>
<p>Those who <a href="../next/register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong>
will receive their email (containing their <a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong>
and <strong>Initial password</strong>), later: usually a few days around the time when the contest status
becomes <strong><a href="../faq.html#open">open</a></strong>.
</p>
<p class="leftbar">
Once that email with your <strong>Username</strong> and <strong>Initial password</strong> is sent, you
will have fortnight (<strong>14 days</strong>) to <a href="../next/pw-change.html">change your submit server initial password</a>.
</p>
<p class="leftbar">
If you do not change your <strong>Initial password</strong> in time, you will have to
becomes <strong><a href="../faq.html#open">open</a></strong>.</p>
<p>Once that email with your <strong>Username</strong> and <strong>Initial password</strong> is sent, you
will have fortnight (<strong>14 days</strong>) to <a href="../next/pw-change.html">change your submit server initial password</a>.</p>
<p>If you do not change your <strong>Initial password</strong> in time, you will have to
<a href="../contact.md#if-you-really-need-to-send-email-the-ioccc-judges">send email to the IOCCC judges</a>
to ask for your password to be reset.
</p>
<p class="leftbar">
Because it takes time (maybe even a few days) to process your registration
to ask for your password to be reset.</p>
<p>Because it takes time (maybe even a few days) to process your registration
and for the server to email you your initial login and password, you
should <strong>MAKE SURE</strong> you give yourself enough time to register well
before the contest closes. In other words, <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong>
of the contest to register! The <a href="../judges.html">IOCCC judges</a>
are <strong>NOT</strong> responsible for delayed or lost email, or for those who wait
until the last minute to try to register!
</p>
<p class="leftbar">
See the
until the last minute to try to register!</p>
<p>See the
FAQ on “<a href="../quick-start.html#enter">how to register and submit to the IOCCC</a>”
for instructions on registering and participating in the IOCCC, as the process
may change from contest to contest.
</p>
<p class="leftbar">
See also <a href="#rule8">Rule 8</a>.
</p>
may change from contest to contest.</p>
<p>See also <a href="#rule8">Rule 8</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule4">
<h2 id="rule-4">Rule 4</h2>
</div>
<p class="leftbar">
If your submission is selected as a winning entry, then your submission may be modified in order
to fit into the structure of the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a>.
</p>
<p class="leftbar">
For example, your submission’s <code>Makefile</code> will be modified and your <code>remarks.md</code>
will become a <code>README.md</code> which will be used to generate an <code>index.html</code> file.
</p>
<p class="leftbar">
Your source code will be the file <code>prog.c</code>. The compiled binary
<p>If your submission is selected as a winning entry, then your submission may be modified in order
to fit into the structure of the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a>.</p>
<p>For example, your submission’s <code>Makefile</code> will be modified and your <code>remarks.md</code>
will become a <code>README.md</code> which will be used to generate an <code>index.html</code> file.</p>
<p>Your source code will be the file <code>prog.c</code>. The compiled binary
will be called <code>prog</code>. If you submission requires different filenames,
then modify your submission’s <code>Makefile</code> to <strong>COPY</strong> (<strong>NOT</strong> move!) the files
accordingly.
</p>
<p class="leftbar">
Of course your program may also do this, as long as it works, but you’re welcome
to use your <code>Makefile</code> as well.
</p>
<p class="leftbar">
See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.
</p>
accordingly.</p>
<p>Of course your program may also do this, as long as it works, but you’re welcome
to use your <code>Makefile</code> as well.</p>
<p>See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule5">
<h2 id="rule-5">Rule 5</h2>
@@ -758,64 +694,45 @@ part of your original submission including, but not limited to <code>prog.c</cod
<code>Makefile</code> or any data files you submit.</p>
<p>If you submission needs (or wishes :-) ) to modify such content, it <strong>MUST</strong>
first copy the file to a new filename and then modify that copy.</p>
<p class="leftbar">
You may use your submission (program) to form a copy, or you can make use of
your <code>Makefile</code> to form that copy.
</p>
<p class="leftbar">
If you do make a copy of a submission file, <strong>PLEASE</strong> be sure that
<p>You may use your submission (program) to form a copy, or you can make use of
your <code>Makefile</code> to form that copy.</p>
<p>If you do make a copy of a submission file, <strong>PLEASE</strong> be sure that
the <code>clobber</code> rule of your <code>Makefile</code> removes that copy in order to
restore your submission to its original submission state.
</p>
restore your submission to its original submission state.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule6">
<h2 id="rule-6">Rule 6</h2>
</div>
<p class="leftbar">
I am not a rule, I am a <code>free(void *human);</code> ‼️
</p>
<p class="leftbar">
        <code>while (!(ioccc(rule(you(are(number(6)))))) {</code><br>
<p>I am not a rule, I am a <code>free(void *human);</code> ‼️</p>
<p>        <code>while (!(ioccc(rule(you(are(number(6)))))) {</code><br>
                <code>ha_ha_ha();</code><br>
        <code>}</code>
</p>
        <code>}</code></p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule7">
<h2 id="rule-7">Rule 7</h2>
</div>
<p class="leftbar">
The obfuscated C program must be your own original work.
</p>
<p class="leftbar">
You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
you <strong>MUST</strong> have permission from the owner(s) to submit their content.
</p>
<p class="leftbar">
If you submit any content that is owned by others, you <strong>MUST
<p>The obfuscated C program must be your own original work.</p>
<p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
you <strong>MUST</strong> have permission from the owner(s) to submit their content.</p>
<p>If you submit any content that is owned by others, you <strong>MUST
detail that ownership</strong> (i.e., who owns what) <strong><em>AND</em> document the
permission you obtained from them</strong>, in your <code>remarks.md</code> file.
</p>
<p class="leftbar">
Please note that the tools in <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
permission you obtained from them</strong>, in your <code>remarks.md</code> file.</p>
<p>Please note that the tools in <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
repo</a> are <strong>NOT</strong> original works,
unless of course you’re the original authors, in which case they are original. :-)
</p>
<p class="leftbar">
Nevertheless tools such as those listed are <strong>NOT</strong> obfuscated. If submitted, they
would probably violate a number of rules. :-)
</p>
unless of course you’re the original authors, in which case they are original. :-)</p>
<p>Nevertheless tools such as those listed are <strong>NOT</strong> obfuscated. If submitted, they
would probably violate a number of rules. :-)</p>
<ul>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c">mkiocccentry(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">iocccsize(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c">chkentry(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/chksubmit.c">chksubmit(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c">txzchk(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/location_main.c">location(1)</a></li>
<li><a href="https://github.com/xexyl/jparse">jparse repo as cloned by the mkiocccentry repo</a></li>
<li><a href="https://github.com/lcn2/dbg">dbg repo as cloned by the mkiocccentry repo</a></li>
<li><a href="https://github.com/lcn2/dyn_array">dyn_array repo as cloned by the mkiocccentry repo</a></li>
</ul>
<p class="leftbar">
The IOCCC has a rich history of remarkable winning entries created by
<p>The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code.
While it is <strong>NOT</strong> required, you are <em>allowed</em> to use tools to develop
and test your submission. These tools may include, but are not limited
@@ -823,77 +740,50 @@ to code generators, code analysis tools, static code analysis tools,
runtime analysis tools, machine learning tools, natural language models,
code copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we <strong>ENCOURAGE you to describe
what tools and how you used those tools</strong>, in your <code>remarks.md</code> file.
</p>
<p class="leftbar">
See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.
</p>
what tools and how you used those tools</strong>, in your <code>remarks.md</code> file.</p>
<p>See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule8">
<h2 id="rule-8">Rule 8</h2>
</div>
<p class="leftbar">
Submissions may only be uploaded to the <a href="https://submit.ioccc.org">IOCCC submit server</a>
while the contest is <strong><a href="../faq.html#open">open</a></strong>.
</p>
<p class="leftbar">
If you have <a href="../next/register.html">registered</a> and received by email your <a href="https://submit.ioccc.org">submit
<p>Submissions may only be uploaded to the <a href="https://submit.ioccc.org">IOCCC submit server</a>
while the contest is <strong><a href="../faq.html#open">open</a></strong>.</p>
<p>If you have <a href="../next/register.html">registered</a> and received by email your <a href="https://submit.ioccc.org">submit
server</a> <strong>Username</strong> and <strong>Initial password</strong> you may
upload your submission to the <a href="https://submit.ioccc.org">submit server</a> but
<strong>ONLY</strong> while the contest is <strong><a href="../faq.html#open">open</a></strong>.
</p>
<p class="leftbar">
The <a href="https://submit.ioccc.org">submit server</a>, in accordance with <a href="rules.html#rule17">Rule
<strong>ONLY</strong> while the contest is <strong><a href="../faq.html#open">open</a></strong>.</p>
<p>The <a href="https://submit.ioccc.org">submit server</a>, in accordance with <a href="rules.html#rule17">Rule
17</a>, places a limit of <strong>3999971</strong> bytes on the size of your
upload.
</p>
<p class="leftbar">
Once the contest is in the <strong><a href="../faq.html#judging">judging</a></strong> state (or
<strong><a href="../faq.html#closed">closed</a></strong> state), you may <strong>NOT</strong> upload submissions.
</p>
<p class="leftbar">
While the contest is <strong><a href="../faq.html#open">open</a></strong> or in the
upload.</p>
<p>Once the contest is in the <strong><a href="../faq.html#judging">judging</a></strong> state (or
<strong><a href="../faq.html#closed">closed</a></strong> state), you may <strong>NOT</strong> upload submissions.</p>
<p>While the contest is <strong><a href="../faq.html#open">open</a></strong> or in the
<strong><a href="../faq.html#judging">judging</a></strong> state, the <a href="../judges.html">IOCCC judges</a>
<strong>MAY</strong> (but are not required to) modify the slot comment of your submission to
indicate that they have received it. If uploaded submission is malformed, the
<a href="../judges.html">IOCCC judges</a> <strong>MAY</strong> (but are not required to) modify the slot
comment accordingly.
</p>
<p class="leftbar">
You are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool
comment accordingly.</p>
<p>You are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool
as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>.
</p>
<p class="leftbar">
The <a href="https://submit.ioccc.org">submit server</a> will become active when the
to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>.</p>
<p>The <a href="https://submit.ioccc.org">submit server</a> will become active when the
contest is <strong><a href="../faq.html#open">open</a></strong>. Until the contest status becomes
<strong><a href="../faq.html#open">open</a></strong>, the <a href="https://submit.ioccc.org">submit server</a> may
be offline and/or unresponsive.
</p>
<p class="leftbar">
See the
be offline and/or unresponsive.</p>
<p>See the
FAQs on “<a href="../faq.html#mkiocccentry">obtaining, compiling, installing and using the latest release of the mkiocccentry tools</a>”
for more information about the <code>mkiocccentry(1)</code> tool.
</p>
<p class="leftbar">
See the “<a href="#dates">Important IOCCC dates</a>” section above for when these contest states are scheduled.
</p>
<p class="leftbar">
See also <a href="#rule3">Rule 3</a> and <a href="#rule17">Rule 17</a>.
</p>
for more information about the <code>mkiocccentry(1)</code> tool.</p>
<p>See the “<a href="#dates">Important IOCCC dates</a>” section above for when these contest states are scheduled.</p>
<p>See also <a href="#rule3">Rule 3</a> and <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule9">
<h2 id="rule-9">Rule 9</h2>
</div>
<p class="leftbar">
Each <strong>PERSON</strong> may register <strong>ONLY ONE</strong> account and each account may submit up to
and including <strong>10.000000</strong> (ten in base 10) submissions <strong>PER</strong> contest.
</p>
<p>Each <strong>PERSON</strong> may register <strong>ONLY ONE</strong> account and each account may submit up to
and including <strong>10.000000</strong> (ten in base 10) submissions <strong>PER</strong> contest.</p>
<p><strong>Each submission <em>must be submitted separately</em></strong>.</p>
<p class="leftbar">
If this seems unreasonable we suggest you wait until the next contest and in
the interim ponder this (modified or not) quote said by Bill Gates:
</p>
<p>If this seems unreasonable we suggest you wait until the next contest and in
the interim ponder this (modified or not) quote said by Bill Gates:</p>
<blockquote>
<p>640K submissions ought to be enough for anybody.</p>
<p>– Bill Gates s/640K/10/ (allegedly :-) )</p>
@@ -914,14 +804,10 @@ DISCOURAGED</strong>. We do not guarantee these functions will behave as
you expect on our test platforms. If your program needs special
permissions you <strong>MUST</strong> document this fact, and explain why
it is needed in your submission’s <code>remarks.md</code> file.</p>
<p class="leftbar">
Furthermore, if you need a supplementary program that you include, to have these
<p>Furthermore, if you need a supplementary program that you include, to have these
permissions, you will also have to explain this, because these bits are not
allowed in submissions and those bits will not be copied by <code>mkiocccentry(1)</code>.
</p>
<p class="leftbar">
See also <a href="#rule17">Rule 17</a>.
</p>
allowed in submissions and those bits will not be copied by <code>mkiocccentry(1)</code>.</p>
<p>See also <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule12">
<h2 id="rule-12">Rule 12</h2>
@@ -930,163 +816,118 @@ See also <a href="#rule17">Rule 17</a>.
the opinion of the <a href="../judges.html">judges</a>, violates the rules WILL BE DISQUALIFIED</strong>.
Submissions that attempt to abuse the rules <strong>MUST</strong> try to justify why
their rule abuse is legal, in the <code>remarks.md</code> file.</p>
<p class="leftbar">
See also <a href="#rule_abuse">the warning about rule abuse</a>.
</p>
<p>See also <a href="#rule_abuse">the warning about rule abuse</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule13">
<h2 id="rule-13">Rule 13</h2>
</div>
<p class="leftbar">
7 out of 13 UTF-8 characters in C code agree that this rule number is lucky
enough to be a prime number.
</p>
<p class="leftbar">
Fun fact: the fear of the number 13 is called <em>triskaidekaphobia</em>.
</p>
<p>7 out of 13 UTF-8 characters in C code agree that this rule number is lucky
enough to be a prime number.</p>
<p>Fun fact: the fear of the number 13 is called <em>triskaidekaphobia</em>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule14">
<h2 id="rule-14">Rule 14</h2>
</div>
<p class="leftbar">
Any C source that fails to compile because of lines with trailing
control-M’s (i.e., lines with a trailing byte <code>015</code>) <strong>might</strong> be rejected.
</p>
<p class="leftbar">
Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>, <code>Makefile</code>, or
<p>Any C source that fails to compile because of lines with trailing
control-M’s (i.e., lines with a trailing byte <code>015</code>) <strong>might</strong> be rejected.</p>
<p>Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>, <code>Makefile</code>, or
<code>remarks.md</code> files but instead end lines with a trailing newline (i.e.,
byte <code>012</code>) character.
</p>
<p class="leftbar">
As we do <strong>NOT</strong> use DOS, please also be sure that the <code>Makefile</code> and
<code>remarks.md</code> files end in final newline (i.e., byte <code>012</code>) character.
</p>
<p class="leftbar">
You are permitted, in order to try and squeeze your <code>prog.c</code> under
byte <code>012</code>) character.</p>
<p>As we do <strong>NOT</strong> use DOS, please also be sure that the <code>Makefile</code> and
<code>remarks.md</code> files end in final newline (i.e., byte <code>012</code>) character.</p>
<p>You are permitted, in order to try and squeeze your <code>prog.c</code> under
a <a href="#rule2a">Rule 2a</a> and/or <a href="#rule2b">Rule 2b</a> limit, to <strong>NOT</strong>
end your <code>prog.c</code> with a newline (i.e., byte <code>012</code>) character.
If you need to do this, <strong>PLEASE</strong> document that in your <code>remarks.md</code> file and
if your compiler complains about this, document this too and update your
<code>Makefile</code> to account for this.
</p>
<code>Makefile</code> to account for this.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule15">
<h2 id="rule-15">Rule 15</h2>
</div>
<p class="leftbar">
In order to register for the IOCCC, you <strong>MUST</strong> have a valid email address.
</p>
<p class="leftbar">
The <a href="../judges.html">judges</a> <strong>are NOT responsible for delays in email</strong>, so please plan
enough time accordingly.
</p>
<p class="leftbar">
See the
<p>In order to register for the IOCCC, you <strong>MUST</strong> have a valid email address.</p>
<p>The <a href="../judges.html">judges</a> <strong>are NOT responsible for delays in email</strong>, so please plan
enough time accordingly.</p>
<p>See the
FAQ on “<a href="../quick-start.html#register">how to register</a>”
for details.
</p>
for details.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule16">
<h2 id="rule-16">Rule 16</h2>
</div>
<p>Submissions that are similar to previous winning IOCCC entries are discouraged.</p>
<p class="leftbar">
You are allowed to resubmit to a later contest, a submission that
<p>You are allowed to resubmit to a later contest, a submission that
did not win the IOCCC. If you do so, then you would be well advised
to try and enhance and improve your submission.
If you do resubmit something that did not previously win, then
you are <strong>encouraged</strong> to mention this in your <code>remarks.md</code> file
as this <strong>sometimes</strong> helps.
</p>
<p class="leftbar">
Resubmitting an improved submission that did not become an
as this <strong>sometimes</strong> helps.</p>
<p>Resubmitting an improved submission that did not become an
IOCCC winning entry is a <strong>time honored</strong> tradition of the IOCCC.
There are some IOCCC winning entries that were submitted to multiple contests
before they were improved enough to “climb over” (as the expression
goes) all the other submissions for a given contest.
</p>
goes) all the other submissions for a given contest.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule17">
<h2 id="rule-17">Rule 17</h2>
</div>
<p class="leftbar">
Your submission must be in the form of a <strong>xz compressed tarball</strong> that
<p>Your submission must be in the form of a <strong>xz compressed tarball</strong> that
the <strong>current released version</strong> of the <code>mkiocccentry(1)</code> tool would generate.
The files, directories, and paths <strong>MUST</strong> conform to the limits imposed
by <code>mkiocccentry(1)</code> including but <strong>NOT LIMITED</strong> to their names, count,
path length, directory tree depth and permissions.
</p>
<p class="leftbar">
Your <strong>xz compressed tarball</strong> must be larger than <strong>0</strong> bytes and no larger
than <strong>3999971</strong> bytes.
</p>
<p class="leftbar">
The sum of the byte lengths of all files, after the <strong>xz compressed tarball</strong> is untarred,
must <strong>NOT</strong> exceed <code>27651*1024</code> bytes.
</p>
<p class="leftbar">
Your <strong>xz compressed tarball</strong> submission <em>file</em> <strong>MUST</strong> pass the tests performed by
the current version of <code>txzchk(1)</code>.
</p>
<p class="leftbar">
Your <strong>xz compressed tarball</strong> submission <em>filename</em> <strong>MUST</strong> pass the tests
performed by the current version of <code>fnamchk(1)</code>.
</p>
<p class="leftbar">
When your <strong>xz compressed tarball</strong> submission file is untarred, the
path length, directory tree depth and permissions.</p>
<p>Your <strong>xz compressed tarball</strong> must be larger than <strong>0</strong> bytes and no larger
than <strong>3999971</strong> bytes.</p>
<p>The sum of the byte lengths of all files, after the <strong>xz compressed tarball</strong> is untarred,
must <strong>NOT</strong> exceed <code>27651*1024</code> bytes.</p>
<p>Your <strong>xz compressed tarball</strong> submission <em>file</em> <strong>MUST</strong> pass the tests performed by
the current version of <code>txzchk(1)</code>.</p>
<p>Your <strong>xz compressed tarball</strong> submission <em>filename</em> <strong>MUST</strong> pass the tests
performed by the current version of <code>fnamchk(1)</code>.</p>
<p>When your <strong>xz compressed tarball</strong> submission file is untarred, the
resulting <em>directory</em> <strong>MUST</strong> pass the checks performed by the current version
of <code>chkentry(1)</code>.
</p>
<p class="leftbar">
The resulting <code>prog.c</code> file <strong>MUST</strong> pass the <a href="#rule2">Rule 2</a> size checks performed by the current
version of <code>iocccsize(1)</code>.
</p>
<p class="leftbar">
The <code>.auth.json</code> and <code>.info.json</code> <strong>MUST</strong> be compatible with what the
of <code>chksubmit(1)</code>.</p>
<p>The resulting <code>prog.c</code> file <strong>MUST</strong> pass the <a href="#rule2">Rule 2</a> size checks performed by the current
version of <code>iocccsize(1)</code>.</p>
<p>The <code>.auth.json</code> and <code>.info.json</code> <strong>MUST</strong> be compatible with what the
current version of the <code>mkiocccentry(1)</code> tool would produce. They <strong>MUST
ALSO</strong> pass the tests performed by the current version of <code>chkentry(1)</code>.
</p>
<p class="leftbar">
The required <code>Makefile</code> must <strong>NOT</strong> be empty.
</p>
<p class="leftbar">
The required <code>remarks.md</code> must <strong>NOT</strong> be empty.
</p>
<p class="leftbar">
You may <strong>NOT</strong> submit a tarball created by the <code>-d</code> or <code>-s seed</code> option of
<code>mkiocccentry(1)</code>.
</p>
ALSO</strong> pass the tests performed by the current version of <code>chksubmit(1)</code>.</p>
<p>The required <code>Makefile</code> must <strong>NOT</strong> be empty.</p>
<p>The required <code>remarks.md</code> must <strong>NOT</strong> be empty.</p>
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code> or <code>-s seed</code> option of
<code>mkiocccentry(1)</code>.</p>
<p class="leftbar">
The maximum number of files your submission tarball may contain, not counting
the optional files (<code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>) and the mandatory
files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>) is 31.
the free files (<code>prog.c</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>prog.alt.c</code>, <code>try.sh</code>,
<code>try.alt.sh</code> and the two files generated by <code>mkiocccentry</code>, <code>.info.json</code> and
<code>.auth.json</code>) is 31.
</p>
<p class="leftbar">
The maximum number of directories your submission may have is 13 and the maximum
depth a path may have is 4.
</p>
<p class="leftbar">
The maximum filename length (a component of a path) is 38 which means the
maximum length total of a path is 60 characters.
</p>
<p>See the
FAQ on “<a href="../faq.html#extra-files">what extra files are and how to include more</a>”
as well as the <a href="guidelines.html#extra-files">guidelines on extra files</a>
for more details.</p>
<h3 id="tldr-rule-17---use-mkiocccentry1-to-form-your-submission">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code> to form your submission</h3>
<p class="leftbar">
Let the current version of the <code>mkiocccentry(1)</code> tool form your <strong>xz
compressed tarball</strong> submission file.
</p>
<p>Let the current version of the <code>mkiocccentry(1)</code> tool form your <strong>xz
compressed tarball</strong> submission file.</p>
<h3 id="warning">Warning</h3>
<p class="leftbar">
Using command line flags or input prompts to override checks and
<p>Using command line flags or input prompts to override checks and
limits made by the above mentioned tools is <strong>NOT</strong> recommended
and may result in your submission being rejected by the <a href="https://submit.ioccc.org">IOCCC
submit server</a> and/or the <a href="../judges.html">IOCCC Judges</a>.
</p>
<p class="leftbar">
See the
submit server</a> and/or the <a href="../judges.html">IOCCC Judges</a>.</p>
<p>See the
FAQ on the “<a href="../faq.html#mkiocccentry">mkiocccentry toolkit</a>
for how to obtain and use the above mentioned tools.
</p>
<p class="leftbar">
<strong>IMPORTANT</strong>: See the
for how to obtain and use the above mentioned tools.</p>
<p><strong>IMPORTANT</strong>: See the
FAQ on “<a href="../faq.html#rule17">Rule 17</a>”
for very important details behind this rule.
</p>
for very important details behind this rule.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule18">
<h2 id="rule-18">Rule 18</h2>
@@ -1095,53 +936,37 @@ for very important details behind this rule.
<blockquote>
<p><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>
</blockquote>
<p class="leftbar">
See also <a href="#rule7">Rule 7</a>.
</p>
<p>See also <a href="#rule7">Rule 7</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule19">
<h2 id="rule-19">Rule 19</h2>
</div>
<p class="leftbar">
The <code>remarks.md</code> file, a required non-empty file, must be written in
<a href="https://www.markdownguide.org/basic-syntax/">Markdown format</a>.
</p>
<p class="leftbar">
We currently use <a href="https://pandoc.org">pandoc(1)</a> to automatically
<p>The <code>remarks.md</code> file, a required non-empty file, must be written in
<a href="https://www.markdownguide.org/basic-syntax/">Markdown format</a>.</p>
<p>We currently use <a href="https://pandoc.org">pandoc(1)</a> to automatically
convert markdown to HTML. Please try to avoid submitting an HTML file
translation to any markdown file. If you <strong>MUST</strong> submit such an HTML
translation, <strong>PLEASE</strong> mention this in your <code>remarks.md</code> file.
</p>
<p class="leftbar">
For any submission that wins the contest, we modify your <code>remarks.md</code> file and
translation, <strong>PLEASE</strong> mention this in your <code>remarks.md</code> file.</p>
<p>For any submission that wins the contest, we modify your <code>remarks.md</code> file and
rename it as <code>README.md</code> and then use <a href="https://pandoc.org">pandoc(1)</a>
to generate the <code>index.html</code> file in the top level directory of your submission.
For this reason, <code>mkiocccentry(1)</code> will <strong>NOT</strong> package such files (in the top
level submission directory) and both <code>txzchk(1)</code> and <code>chkentry(1)</code> will flag
level submission directory) and both <code>txzchk(1)</code> and <code>chksubmit(1)</code> will flag
them as errors (in the top level submission directory) as well, so please do
<strong>NOT</strong> try and slip these files in the top level directory where your
<code>remarks.md</code> resides.
</p>
<p class="leftbar">
See the <a href="https://www.markdownguide.org/cheat-sheet/">Markdown Cheat Sheet</a>
for a handy quick reference to the Markdown syntax.
</p>
<p class="leftbar">
See the <a href="https://www.markdownguide.org">Markdown guide</a>
<code>remarks.md</code> resides.</p>
<p>See the <a href="https://www.markdownguide.org/cheat-sheet/">Markdown Cheat Sheet</a>
for a handy quick reference to the Markdown syntax.</p>
<p>See the <a href="https://www.markdownguide.org">Markdown guide</a>
for free and open-source reference guide that explains
how to use markdown.
</p>
<p class="leftbar">
See also the <a href="http://daringfireball.net/projects/markdown/basics">Daring Fireball Markdown:
how to use markdown.</p>
<p>See also the <a href="http://daringfireball.net/projects/markdown/basics">Daring Fireball Markdown:
Basics</a> for
information on the markdown format.
</p>
<p class="leftbar">
<strong>PLEASE</strong> see our
information on the markdown format.</p>
<p><strong>PLEASE</strong> see our
FAQ on “<a href="../faq.html#remarks_md">remarks.md</a>”
<strong>AND</strong> the
<a href="../markdown.html">IOCCC markdown guidelines</a> for additional markdown guidance.
</p>
<a href="../markdown.html">IOCCC markdown guidelines</a> for additional markdown guidance.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule20">
<h2 id="rule-20">Rule 20</h2>
@@ -1149,54 +974,40 @@ FAQ on “<a href="../faq.html#remarks_md">remarks.md</a>”
<p>The how to build instructions must be in GNU Makefile format. See the
FAQ about “<a href="../faq.html#make_compatibility">make(1) compatibility the IOCCC supports</a>
for more details.</p>
<p class="leftbar">
You are <strong>ENCOURAGED</strong> to use the
<p>You are <strong>ENCOURAGED</strong> to use the
Makefile example, renamed as <code>Makefile</code> of course, for help in constructing your
<code>Makefile</code>. See the <a href="guidelines.html#makefile">Makefile section</a> in the
guidelines for more details.
</p>
guidelines for more details.</p>
<p>The target of the <code>Makefile</code> must be called <code>prog</code>. The original
C source file must be called <code>prog.c</code>.</p>
<p>To invoke the C compiler, use <code>${CC}</code>. To invoke the C preprocessor use
<code>${CPP}</code>.</p>
<p>Do <strong>NOT</strong> assume that <code>.</code> (the current directory) is in the <code>$PATH</code>.</p>
<p class="leftbar">
When <code>make clobber</code> is invoked, we request that your submission directory be restored
<p>When <code>make clobber</code> is invoked, we request that your submission directory be restored
to its original submission state. For example, any temporary files
created during the build process, or during execution should be
removed by the <code>clobber</code> rule.
</p>
<p class="leftbar">
Your <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with <code>bash(1)</code>
removed by the <code>clobber</code> rule.</p>
<p>Your <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with <code>bash(1)</code>
<strong>AND</strong> GNU <code>make(1)</code>. You are <strong>ENCOURAGED</strong> to use <code>SHELL= bash</code> in
your <code>Makefile</code>. Please add a space between the <code>=</code> and the value.
</p>
<p class="leftbar">
Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
your <code>Makefile</code>. Please add a space between the <code>=</code> and the value.</p>
<p>Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
Specification</a>
environments and systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
Specification</a> are
available in the <code>$PATH</code> search path.
</p>
available in the <code>$PATH</code> search path.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule21">
<h2 id="rule-21">Rule 21</h2>
</div>
<p class="leftbar">
Your submission <strong>MUST NOT</strong> create or modify files <strong>ABOVE</strong> the current directory
<p>Your submission <strong>MUST NOT</strong> create or modify files <strong>ABOVE</strong> the current directory
<em>with the exception of</em> the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your submission
<strong>MAY</strong> create subdirectories <strong>below</strong> the submission directory, or in <code>/tmp</code>,
or in <code>/var/tmp</code> provided that <code>.</code> is <strong>NOT</strong> the first byte in any
directory name or filename you create.
</p>
<p class="leftbar">
If you do create files and directories, <strong>PLEASE</strong> be sure that
directory name or filename you create.</p>
<p>If you do create files and directories, <strong>PLEASE</strong> be sure that
the <code>clobber</code> rule of your <code>Makefile</code> removes such created files
in order to restore your submission to its original submission state.
</p>
<p class="leftbar">
See also <a href="#rule5">Rule 5</a>.
</p>
in order to restore your submission to its original submission state.</p>
<p>See also <a href="#rule5">Rule 5</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule22">
<h2 id="rule-22">Rule 22</h2>
@@ -1210,11 +1021,9 @@ identify the authors of your code. The <a href="../judges.html">judges</a> <stro
within your code, data, remarks or program output (unless you are
<strong>Peter Honeyman</strong> or pretending to be <strong>Peter Honeyman</strong>) will be grounds
for disqualification of your submission.</p>
<p class="leftbar">
And don’t assume that we won’t be able to determine your name even if it’s not
<p>And don’t assume that we won’t be able to determine your name even if it’s not
obvious, because you stand a significant chance of violating this rule if you
do.
</p>
do.</p>
<p>Yes, Virginia, <strong>WE REALLY MEAN IT!</strong></p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule23">
@@ -1250,60 +1059,42 @@ The <a href="rules.html">IOCCC rule set</a> needs more than <code>5^2</code> rul
<div id="rule27">
<h2 id="rule-27">Rule 27</h2>
</div>
<p class="leftbar">
Unless otherwise needed, <a href="#rule27">Rule 27</a> is reserved for something cubic. :-)
</p>
<p>Unless otherwise needed, <a href="#rule27">Rule 27</a> is reserved for something cubic. :-)</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule28">
<h2 id="rule-28">Rule 28</h2>
</div>
<p class="leftbar">
<a href="#rule28">Rule 28</a> is a perfect way to end the list of <a href="rules.html">IOCCC rules</a>
as we do <strong>NOT</strong> plan to have <strong>496</strong> rules. :-)
</p>
<p><a href="#rule28">Rule 28</a> is a perfect way to end the list of <a href="rules.html">IOCCC rules</a>
as we do <strong>NOT</strong> plan to have <strong>496</strong> rules. :-)</p>
<p>Jump to: <a href="#">top</a></p>
<div id="more-information">
<div id="information">
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
</div>
</div>
<p class="leftbar">
For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.
</p>
<p class="leftbar">
<strong>Be SURE</strong> to review the <a href="index.html">IOCCC Rules and Guidelines</a> as they
may (and <strong>often do</strong>) change from year to year.
</p>
<p class="leftbar">
<strong>PLEASE</strong> be <strong>SURE</strong> you have the <strong>current</strong> <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">IOCCC guidelines</a> prior to submitting to the contest.
</p>
<p>For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
<p><strong>Be SURE</strong> to review the <a href="index.html">IOCCC Rules and Guidelines</a> as they
may (and <strong>often do</strong>) change from year to year.</p>
<p><strong>PLEASE</strong> be <strong>SURE</strong> you have the <strong>current</strong> <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">IOCCC guidelines</a> prior to submitting to the contest.</p>
<p>See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
<p class="leftbar">
For the updates and breaking IOCCC news, you are encouraged to follow
<p>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
FAQ on “<a href="../faq.html#try_mastodon">Mastodon</a>”
for more information. Please do note that unless
you are mentioned by us you will <strong>NOT</strong> get a notification from the app <em>so you
should refresh the page <strong>even if you do follow us</strong></em>.
</p>
<p class="leftbar">
Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a> in general.
</p>
<p class="leftbar">
Consider joining the IOCCC discord community via this link:
<a href="https://discord.gg/Wa42Qujwnw">https://discord.gg/Wa42Qujwnw</a>
</p>
<p class="leftbar">
See the
should refresh the page <strong>even if you do follow us</strong></em>.</p>
<p>Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a> in general.</p>
<p>Consider joining the IOCCC discord community via this link:
<a href="https://discord.gg/Wa42Qujwnw">https://discord.gg/Wa42Qujwnw</a></p>
<p>See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining, compiling, installing and using the mkiocccentry tools</a>”
and the
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
as that FAQ has important details on
<a href="../next/register.html">how to register</a>
as well as
<a href="../next/submit.html">how to upload your submission</a> for the IOCCC.
</p>
<a href="../next/submit.html">how to upload your submission</a> for the IOCCC.</p>
<p>Jump to: <a href="#">top</a></p>
<p><strong>Leonid A. Broukhis</strong><br>
<strong>chongo (Landon Curt Noll) <code>/\cc/\</code></strong></p>
+22 -228
View File
@@ -48,13 +48,11 @@ Jump to: [top](#)
</div>
<p class="leftbar">
These [IOCCC rules](rules.html) are version **28.30 2025-03-03**.
These [IOCCC rules](rules.html) are version **28.31 2025-11-17**.
</p>
<p class="leftbar">
The markdown form of these rules <a href="rules.md" download="rules.md">is
available for download</a>.
</p>
**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html).
@@ -131,7 +129,6 @@ This contest will enter the **[judging](../faq.html#judging)** state on **2025-0
of the above **dates and times may change**!
</p>
<p class="leftbar">
See the
FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)"
and the
@@ -140,7 +137,6 @@ as that FAQ has important details on
[how to register](../next/register.html)
as well as
[how to upload your submission](../next/submit.html) to the IOCCC.
</p>
Jump to: [top](#)
@@ -156,7 +152,6 @@ To help us with the volume of submissions, we ask that you follow the rules belo
#### A warning about rule abuse
</div>
<p class="leftbar">
**WARNING:** Abusing these rules comes with a **fair amount of risk**
that your submission will be rejected. If you do plan to abuse the
rules, then you **MUST CLEARLY EXPLAIN THE RATIONALE** in your `remarks.md` file,
@@ -164,50 +159,38 @@ as to why you think your rule abuse should be allowed, and as to why you think
your submission should not be rejected for a rule violation.
**Nevertheless, _even if you do_ explain this in your `remarks.md` file
you submission may still be rejected**.
</p>
<p class="leftbar">
If you use the most recently released official IOCCC submission packaging tool
(hereby referred to as `mkiocccentry(1)`), which we **STRONGLY recommend you
do**, then the `mkiocccentry(1)` tool will warn you if there appears to be a
violation in certain rules (not all can be detected). The `mkiocccentry(1)`
tool also runs `chkentry(1)` and `txzchk(1)`, the latter of which runs
tool also runs `chksubmit(1)` and `txzchk(1)`, the latter of which runs
`fnamchk(1)`. Overriding problems detected by any of these tools comes with a
**fair amount of risk** that your submission will be rejected.
</p>
<p class="leftbar">
If you do override a rule violation warning from the `mkiocccentry(1)` or
another related IOCCC tool, or otherwise plan to abuse the rules, then you
**MUST CLEARLY EXPLAIN THE RATIONALE** of why you are attempting to abuse the
rules in your `remarks.md` file. **_Even if you do_ explain this in your
`remarks.md` file your submission may still be rejected**.
</p>
<p class="leftbar">
**HINT:** If you do submit such a rule abusing / rule violating
submission, then consider also submitting an alternate version in a
**different submission** server slot that does **NOT** violate the rules
in case your rule abuse excuse is rejected.
</p>
<p class="leftbar">
**IMPORTANT**: if you do submit such an alternate non-rule abusing version,
**PLEASE** indicate that in your `remarks.md` file of your non-rule abusing
version so that the [IOCCC judges](../judges.html) do not think you uploaded a
duplicate into a wrong slot by mistake.
</p>
<p class="leftbar">
Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of
violating [Rule 17](rules.html#rule17), especially as `mkiocccentry(1)` does a
great number of things that are required, and it also runs many checks, and if
any of those checks fail, you are at a very great risk of having your submission
rejected for violating [Rule 17](rules.html#rule17).
</p>
<p class="leftbar">
See also [Rule 12](#rule13).
</p>
Jump to: [top](#)
@@ -217,13 +200,9 @@ Jump to: [top](#)
## Rule 0
</div>
<p class="leftbar">
Just as C starts at 0, so the IOCCC starts at [Rule 0](#rule0). :-)
</p>
<p class="leftbar">
The "[Important IOCCC dates](#dates)" section above is part of this rule.
</p>
Jump to: [top](#)
@@ -233,16 +212,12 @@ Jump to: [top](#)
## Rule 1
</div>
<p class="leftbar">
Your submission must be a C program.
</p>
<p class="leftbar">
You see, the contest is not called the **International Obfuscated JSON Contest**
(**IOJSONC**), even if the [so-called JSON
spec](https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec) might be called obfuscated
by some people. :-)
</p>
Jump to: [top](#)
@@ -255,31 +230,23 @@ Jump to: [top](#)
[Rule 2](#rule2) requires that your submission satisfy **BOTH** [Rule
2a](#rule2a) **AND** [Rule 2b](#rule2b).
<p class="leftbar">
You may check your code with respect to [Rule 2a](#rule2a) and [Rule
2b](#rule2b) prior to submitting your code by giving the filename
as a command like argument to the `iocccsize(1)` tool. For example:
</p>
``` <!---sh-->
iocccsize prog.c
```
<p class="leftbar">
The source to `iocccsize(1)` may be found in the
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry).
</p>
<p class="leftbar">
See also the
FAQ on "[how to further test your submission](../faq.html#mkiocccentry_test)"
for more more thorough testing, including [Rule 2](#rule2).
</p>
<p class="leftbar">
See also [Rule 2a](#rule2a), [Rule 2b](#rule2b), and [Rule 17](#rule17).
</p>
Jump to: [top](#)
@@ -289,7 +256,7 @@ Jump to: [top](#)
</div>
<p class="leftbar">
The size of your program source **should NOT exceed 4993 bytes**.
The size of your program source **MUST NOT exceed 4993 bytes**.
</p>
Jump to: [top](#)
@@ -299,15 +266,11 @@ Jump to: [top](#)
## Rule 2b
</div>
<p class="leftbar">
When the filename of your program source is given as a command line argument to
the latest version of the official IOCCC size tool (hereby referred to as
`iocccsize(1)`), the value printed **should NOT exceed _2503_**.
</p>
`iocccsize(1)`), the value printed **MUST NOT exceed _2503_**.
<p class="leftbar">
See also [Rule 17](#rule17).
</p>
Jump to: [top](#)
@@ -316,38 +279,27 @@ Jump to: [top](#)
## Rule 3
</div>
<p class="leftbar">
You must [register](../next/register.html) in order to submit your entry to the IOCCC.
You may [register](../next/register.html) while the contest is either
**[pending](../faq.html#pending)** or **[open](../faq.html#open)**.
</p>
<p class="leftbar">
When the contest is **[open](../faq.html#open)**, the [submit server](https://submit.ioccc.org)
will email you your [submit server](https://submit.ioccc.org)
**Username** and **Initial password**. **Please be patient** as it may take some time,
perhaps as much as a few days, for your registration to be processed and for that email to be sent.
</p>
<p class="leftbar">
Those who [register](../next/register.html) while the contest status is **[pending](../faq.html#pending)**
will receive their email (containing their [submit server](https://submit.ioccc.org) **Username**
and **Initial password**), later: usually a few days around the time when the contest status
becomes **[open](../faq.html#open)**.
</p>
<p class="leftbar">
Once that email with your **Username** and **Initial password** is sent, you
will have fortnight (**14 days**) to [change your submit server initial password](../next/pw-change.html).
</p>
<p class="leftbar">
If you do not change your **Initial password** in time, you will have to
[send email to the IOCCC judges](../contact.md#if-you-really-need-to-send-email-the-ioccc-judges)
to ask for your password to be reset.
</p>
<p class="leftbar">
Because it takes time (maybe even a few days) to process your registration
and for the server to email you your initial login and password, you
should **MAKE SURE** you give yourself enough time to register well
@@ -355,18 +307,13 @@ before the contest closes. In other words, **DO NOT WAIT UNTIL THE FINAL DAYS**
of the contest to register! The [IOCCC judges](../judges.html)
are **NOT** responsible for delayed or lost email, or for those who wait
until the last minute to try to register!
</p>
<p class="leftbar">
See the
FAQ on "[how to register and submit to the IOCCC](../quick-start.html#enter)"
for instructions on registering and participating in the IOCCC, as the process
may change from contest to contest.
</p>
<p class="leftbar">
See also [Rule 8](#rule8).
</p>
Jump to: [top](#)
@@ -376,31 +323,21 @@ Jump to: [top](#)
## Rule 4
</div>
<p class="leftbar">
If your submission is selected as a winning entry, then your submission may be modified in order
to fit into the structure of the [Official IOCCC winner website](https://www.ioccc.org/index.html).
</p>
<p class="leftbar">
For example, your submission's `Makefile` will be modified and your `remarks.md`
will become a `README.md` which will be used to generate an `index.html` file.
</p>
<p class="leftbar">
Your source code will be the file `prog.c`. The compiled binary
will be called `prog`. If you submission requires different filenames,
then modify your submission's `Makefile` to **COPY** (**NOT** move!) the files
accordingly.
</p>
<p class="leftbar">
Of course your program may also do this, as long as it works, but you're welcome
to use your `Makefile` as well.
</p>
<p class="leftbar">
See also [Rule 5](#rule5), [Rule 18](#rule18) and [Rule 21](#rule21).
</p>
Jump to: [top](#)
@@ -417,16 +354,12 @@ part of your original submission including, but not limited to `prog.c`, the
If you submission needs (or wishes :-) ) to modify such content, it **MUST**
first copy the file to a new filename and then modify that copy.
<p class="leftbar">
You may use your submission (program) to form a copy, or you can make use of
your `Makefile` to form that copy.
</p>
<p class="leftbar">
If you do make a copy of a submission file, **PLEASE** be sure that
the `clobber` rule of your `Makefile` removes that copy in order to
restore your submission to its original submission state.
</p>
Jump to: [top](#)
@@ -436,15 +369,11 @@ Jump to: [top](#)
## Rule 6
</div>
<p class="leftbar">
I am not a rule, I am a `free(void *human);` ‼️
</p>
<p class="leftbar">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`while (!(ioccc(rule(you(are(number(6)))))) {`<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`ha_ha_ha();`<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
</p>
Jump to: [top](#)
@@ -454,42 +383,31 @@ Jump to: [top](#)
## Rule 7
</div>
<p class="leftbar">
The obfuscated C program must be your own original work.
</p>
<p class="leftbar">
You (the author(s)) **MUST** own the contents of your submission **OR**
you **MUST** have permission from the owner(s) to submit their content.
</p>
<p class="leftbar">
If you submit any content that is owned by others, you **MUST
detail that ownership** (i.e., who owns what) **_AND_ document the
permission you obtained from them**, in your `remarks.md` file.
</p>
<p class="leftbar">
Please note that the tools in [mkiocccentry
repo](https://github.com/ioccc-src/mkiocccentry) are **NOT** original works,
unless of course you're the original authors, in which case they are original. :-)
</p>
<p class="leftbar">
Nevertheless tools such as those listed are **NOT** obfuscated. If submitted, they
would probably violate a number of rules. :-)
</p>
- [mkiocccentry&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c)
- [iocccsize&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
- [chkentry&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c)
- [chksubmit&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/chksubmit.c)
- [txzchk&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c)
- [location&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/location_main.c)
- [jparse repo as cloned by the mkiocccentry repo](https://github.com/xexyl/jparse)
- [dbg repo as cloned by the mkiocccentry repo](https://github.com/lcn2/dbg)
- [dyn_array repo as cloned by the mkiocccentry repo](https://github.com/lcn2/dyn_array)
<p class="leftbar">
The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code.
While it is **NOT** required, you are _allowed_ to use tools to develop
@@ -499,11 +417,8 @@ runtime analysis tools, machine learning tools, natural language models,
code copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we **ENCOURAGE you to describe
what tools and how you used those tools**, in your `remarks.md` file.
</p>
<p class="leftbar">
See also [Rule 5](#rule5), [Rule 18](#rule18) and [Rule 21](#rule21).
</p>
Jump to: [top](#)
@@ -513,64 +428,44 @@ Jump to: [top](#)
## Rule 8
</div>
<p class="leftbar">
Submissions may only be uploaded to the [IOCCC submit server](https://submit.ioccc.org)
while the contest is **[open](../faq.html#open)**.
</p>
<p class="leftbar">
If you have [registered](../next/register.html) and received by email your [submit
server](https://submit.ioccc.org) **Username** and **Initial password** you may
upload your submission to the [submit server](https://submit.ioccc.org) but
**ONLY** while the contest is **[open](../faq.html#open)**.
</p>
<p class="leftbar">
The [submit server](https://submit.ioccc.org), in accordance with [Rule
17](rules.html#rule17), places a limit of **3999971** bytes on the size of your
upload.
</p>
<p class="leftbar">
Once the contest is in the **[judging](../faq.html#judging)** state (or
**[closed](../faq.html#closed)** state), you may **NOT** upload submissions.
</p>
<p class="leftbar">
While the contest is **[open](../faq.html#open)** or in the
**[judging](../faq.html#judging)** state, the [IOCCC judges](../judges.html)
**MAY** (but are not required to) modify the slot comment of your submission to
indicate that they have received it. If uploaded submission is malformed, the
[IOCCC judges](../judges.html) **MAY** (but are not required to) modify the slot
comment accordingly.
</p>
<p class="leftbar">
You are **STRONGLY** advised to use the `mkiocccentry(1)` tool
as found in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
to form the file to upload to the [submit server](https://submit.ioccc.org).
</p>
<p class="leftbar">
The [submit server](https://submit.ioccc.org) will become active when the
contest is **[open](../faq.html#open)**. Until the contest status becomes
**[open](../faq.html#open)**, the [submit server](https://submit.ioccc.org) may
be offline and/or unresponsive.
</p>
<p class="leftbar">
See the
FAQs on "[obtaining, compiling, installing and using the latest release of the mkiocccentry tools](../faq.html#mkiocccentry)"
for more information about the `mkiocccentry(1)` tool.
</p>
<p class="leftbar">
See the "[Important IOCCC dates](#dates)" section above for when these contest states are scheduled.
</p>
<p class="leftbar">
See also [Rule 3](#rule3) and [Rule 17](#rule17).
</p>
Jump to: [top](#)
@@ -580,17 +475,13 @@ Jump to: [top](#)
## Rule 9
</div>
<p class="leftbar">
Each **PERSON** may register **ONLY ONE** account and each account may submit up to
and including **10.000000** (ten in base 10) submissions **PER** contest.
</p>
**Each submission _must be submitted separately_**.
<p class="leftbar">
If this seems unreasonable we suggest you wait until the next contest and in
the interim ponder this (modified or not) quote said by Bill Gates:
</p>
> 640K submissions ought to be enough for anybody.
>
@@ -622,15 +513,11 @@ you expect on our test platforms. If your program needs special
permissions you **MUST** document this fact, and explain why
it is needed in your submission's `remarks.md` file.
<p class="leftbar">
Furthermore, if you need a supplementary program that you include, to have these
permissions, you will also have to explain this, because these bits are not
allowed in submissions and those bits will not be copied by `mkiocccentry(1)`.
</p>
<p class="leftbar">
See also [Rule 17](#rule17).
</p>
Jump to: [top](#)
@@ -644,9 +531,7 @@ the opinion of the [judges](../judges.html), violates the rules WILL BE DISQUALI
Submissions that attempt to abuse the rules **MUST** try to justify why
their rule abuse is legal, in the `remarks.md` file.
<p class="leftbar">
See also [the warning about rule abuse](#rule_abuse).
</p>
Jump to: [top](#)
@@ -655,14 +540,10 @@ Jump to: [top](#)
## Rule 13
</div>
<p class="leftbar">
7 out of 13 UTF-8 characters in C code agree that this rule number is lucky
enough to be a prime number.
</p>
<p class="leftbar">
Fun fact: the fear of the number 13 is called _triskaidekaphobia_.
</p>
Jump to: [top](#)
@@ -672,30 +553,22 @@ Jump to: [top](#)
## Rule 14
</div>
<p class="leftbar">
Any C source that fails to compile because of lines with trailing
control-M's (i.e., lines with a trailing byte `015`) **might** be rejected.
</p>
<p class="leftbar">
Please do **NOT** put trailing control-M's on `prog.c`, `Makefile`, or
`remarks.md` files but instead end lines with a trailing newline (i.e.,
byte `012`) character.
</p>
<p class="leftbar">
As we do **NOT** use DOS, please also be sure that the `Makefile` and
`remarks.md` files end in final newline (i.e., byte `012`) character.
</p>
<p class="leftbar">
You are permitted, in order to try and squeeze your `prog.c` under
a [Rule 2a](#rule2a) and/or [Rule 2b](#rule2b) limit, to **NOT**
end your `prog.c` with a newline (i.e., byte `012`) character.
If you need to do this, **PLEASE** document that in your `remarks.md` file and
if your compiler complains about this, document this too and update your
`Makefile` to account for this.
</p>
Jump to: [top](#)
@@ -705,20 +578,14 @@ Jump to: [top](#)
## Rule 15
</div>
<p class="leftbar">
In order to register for the IOCCC, you **MUST** have a valid email address.
</p>
<p class="leftbar">
The [judges](../judges.html) **are NOT responsible for delays in email**, so please plan
enough time accordingly.
</p>
<p class="leftbar">
See the
FAQ on "[how to register](../quick-start.html#register)"
for details.
</p>
Jump to: [top](#)
@@ -730,22 +597,18 @@ Jump to: [top](#)
Submissions that are similar to previous winning IOCCC entries are discouraged.
<p class="leftbar">
You are allowed to resubmit to a later contest, a submission that
did not win the IOCCC. If you do so, then you would be well advised
to try and enhance and improve your submission.
If you do resubmit something that did not previously win, then
you are **encouraged** to mention this in your `remarks.md` file
as this **sometimes** helps.
</p>
<p class="leftbar">
Resubmitting an improved submission that did not become an
IOCCC winning entry is a **time honored** tradition of the IOCCC.
There are some IOCCC winning entries that were submitted to multiple contests
before they were improved enough to "climb over" (as the expression
goes) all the other submissions for a given contest.
</p>
Jump to: [top](#)
@@ -754,68 +617,57 @@ Jump to: [top](#)
## Rule 17
</div>
<p class="leftbar">
Your submission must be in the form of a **xz compressed tarball** that
the **current released version** of the `mkiocccentry(1)` tool would generate.
The files, directories, and paths **MUST** conform to the limits imposed
by `mkiocccentry(1)` including but **NOT LIMITED** to their names, count,
path length, directory tree depth and permissions.
</p>
<p class="leftbar">
Your **xz compressed tarball** must be larger than **0** bytes and no larger
than **3999971** bytes.
</p>
<p class="leftbar">
The sum of the byte lengths of all files, after the **xz compressed tarball** is untarred,
must **NOT** exceed `27651*1024` bytes.
</p>
<p class="leftbar">
Your **xz compressed tarball** submission _file_ **MUST** pass the tests performed by
the current version of `txzchk(1)`.
</p>
<p class="leftbar">
Your **xz compressed tarball** submission _filename_ **MUST** pass the tests
performed by the current version of `fnamchk(1)`.
</p>
<p class="leftbar">
When your **xz compressed tarball** submission file is untarred, the
resulting _directory_ **MUST** pass the checks performed by the current version
of `chkentry(1)`.
</p>
of `chksubmit(1)`.
<p class="leftbar">
The resulting `prog.c` file **MUST** pass the [Rule 2](#rule2) size checks performed by the current
version of `iocccsize(1)`.
</p>
<p class="leftbar">
The `.auth.json` and `.info.json` **MUST** be compatible with what the
current version of the `mkiocccentry(1)` tool would produce. They **MUST
ALSO** pass the tests performed by the current version of `chkentry(1)`.
</p>
ALSO** pass the tests performed by the current version of `chksubmit(1)`.
<p class="leftbar">
The required `Makefile` must **NOT** be empty.
</p>
<p class="leftbar">
The required `remarks.md` must **NOT** be empty.
</p>
<p class="leftbar">
You may **NOT** submit a tarball created by the `-d` or `-s seed` option of
`mkiocccentry(1)`.
</p>
<p class="leftbar">
The maximum number of files your submission tarball may contain, not counting
the optional files (`prog.alt.c`, `try.sh`, `try.alt.sh`) and the mandatory
files (`prog.c`, `Makefile`, `remarks.md`) is 31.
the free files (`prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`,
`try.alt.sh` and the two files generated by `mkiocccentry`, `.info.json` and
`.auth.json`) is 31.
</p>
<p class="leftbar">
The maximum number of directories your submission may have is 13 and the maximum
depth a path may have is 4.
</p>
<p class="leftbar">
The maximum filename length (a component of a path) is 38 which means the
maximum length total of a path is 60 characters.
</p>
See the
@@ -825,31 +677,23 @@ for more details.
### TL;DR Rule 17 - Use `mkiocccentry(1)` to form your submission
<p class="leftbar">
Let the current version of the `mkiocccentry(1)` tool form your **xz
compressed tarball** submission file.
</p>
### Warning
<p class="leftbar">
Using command line flags or input prompts to override checks and
limits made by the above mentioned tools is **NOT** recommended
and may result in your submission being rejected by the [IOCCC
submit server](https://submit.ioccc.org) and/or the [IOCCC Judges](../judges.html).
</p>
<p class="leftbar">
See the
FAQ on the "[mkiocccentry toolkit](../faq.html#mkiocccentry)
for how to obtain and use the above mentioned tools.
</p>
<p class="leftbar">
**IMPORTANT**: See the
FAQ on "[Rule 17](../faq.html#rule17)"
for very important details behind this rule.
</p>
Jump to: [top](#)
@@ -863,9 +707,7 @@ The entirety of your submission 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/)**
<p class="leftbar">
See also [Rule 7](#rule7).
</p>
Jump to: [top](#)
@@ -875,52 +717,38 @@ Jump to: [top](#)
## Rule 19
</div>
<p class="leftbar">
The `remarks.md` file, a required non-empty file, must be written in
[Markdown format](https://www.markdownguide.org/basic-syntax/).
</p>
<p class="leftbar">
We currently use [pandoc&lpar;1&rpar;](https://pandoc.org) to automatically
convert markdown to HTML. Please try to avoid submitting an HTML file
translation to any markdown file. If you **MUST** submit such an HTML
translation, **PLEASE** mention this in your `remarks.md` file.
</p>
<p class="leftbar">
For any submission that wins the contest, we modify your `remarks.md` file and
rename it as `README.md` and then use [pandoc&lpar;1&rpar;](https://pandoc.org)
to generate the `index.html` file in the top level directory of your submission.
For this reason, `mkiocccentry(1)` will **NOT** package such files (in the top
level submission directory) and both `txzchk(1)` and `chkentry(1)` will flag
level submission directory) and both `txzchk(1)` and `chksubmit(1)` will flag
them as errors (in the top level submission directory) as well, so please do
**NOT** try and slip these files in the top level directory where your
`remarks.md` resides.
</p>
<p class="leftbar">
See the [Markdown Cheat Sheet](https://www.markdownguide.org/cheat-sheet/)
for a handy quick reference to the Markdown syntax.
</p>
<p class="leftbar">
See the [Markdown guide](https://www.markdownguide.org)
for free and open-source reference guide that explains
how to use markdown.
</p>
<p class="leftbar">
See also the [Daring Fireball Markdown:
Basics](http://daringfireball.net/projects/markdown/basics) for
information on the markdown format.
</p>
<p class="leftbar">
**PLEASE** see our
FAQ on "[remarks.md](../faq.html#remarks_md)"
**AND** the
[IOCCC markdown guidelines](../markdown.html) for additional markdown guidance.
</p>
Jump to: [top](#)
@@ -934,12 +762,10 @@ The how to build instructions must be in GNU Makefile format. See the
FAQ about "[make&lpar;1&rpar; compatibility the IOCCC supports](../faq.html#make_compatibility)
for more details.
<p class="leftbar">
You are **ENCOURAGED** to use the
Makefile example, renamed as `Makefile` of course, for help in constructing your
`Makefile`. See the [Makefile section](guidelines.html#makefile) in the
guidelines for more details.
</p>
The target of the `Makefile` must be called `prog`. The original
C source file must be called `prog.c`.
@@ -949,26 +775,20 @@ To invoke the C compiler, use `${CC}`. To invoke the C preprocessor use
Do **NOT** assume that `.` (the current directory) is in the `$PATH`.
<p class="leftbar">
When `make clobber` is invoked, we request that your submission directory be restored
to its original submission state. For example, any temporary files
created during the build process, or during execution should be
removed by the `clobber` rule.
</p>
<p class="leftbar">
Your `Makefile` **MUST** use a syntax that is compatible with `bash(1)`
**AND** GNU `make(1)`. You are **ENCOURAGED** to use `SHELL= bash` in
your `Makefile`. Please add a space between the `=` and the value.
</p>
<p class="leftbar">
Assume that commands commonly found in [Single UNIX
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
environments and systems that conform to the [Single UNIX
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) are
available in the `$PATH` search path.
</p>
Jump to: [top](#)
@@ -978,23 +798,17 @@ Jump to: [top](#)
## Rule 21
</div>
<p class="leftbar">
Your submission **MUST NOT** create or modify files **ABOVE** the current directory
_with the exception of_ the `/tmp` and the `/var/tmp` directories. Your submission
**MAY** create subdirectories **below** the submission directory, or in `/tmp`,
or in `/var/tmp` provided that `.` is **NOT** the first byte in any
directory name or filename you create.
</p>
<p class="leftbar">
If you do create files and directories, **PLEASE** be sure that
the `clobber` rule of your `Makefile` removes such created files
in order to restore your submission to its original submission state.
</p>
<p class="leftbar">
See also [Rule 5](#rule5).
</p>
Jump to: [top](#)
@@ -1017,11 +831,9 @@ within your code, data, remarks or program output (unless you are
**Peter Honeyman** or pretending to be **Peter Honeyman**) will be grounds
for disqualification of your submission.
<p class="leftbar">
And don't assume that we won't be able to determine your name even if it's not
obvious, because you stand a significant chance of violating this rule if you
do.
</p>
Yes, Virginia, **WE REALLY MEAN IT!**
@@ -1080,9 +892,7 @@ Jump to: [top](#)
## Rule 27
</div>
<p class="leftbar">
Unless otherwise needed, [Rule 27](#rule27) is reserved for something cubic. :-)
</p>
Jump to: [top](#)
@@ -1092,10 +902,8 @@ Jump to: [top](#)
## Rule 28
</div>
<p class="leftbar">
[Rule 28](#rule28) is a perfect way to end the list of [IOCCC rules](rules.html)
as we do **NOT** plan to have **496** rules. :-)
</p>
Jump to: [top](#)
@@ -1106,41 +914,28 @@ Jump to: [top](#)
</div>
</div>
<p class="leftbar">
For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
</p>
<p class="leftbar">
**Be SURE** to review the [IOCCC Rules and Guidelines](index.html) as they
may (and **often do**) change from year to year.
</p>
<p class="leftbar">
**PLEASE** be **SURE** you have the **current** [IOCCC rules](rules.html) and
[IOCCC guidelines](guidelines.html) prior to submitting to the contest.
</p>
See the [Official IOCCC website news](../news.html) for additional information.
<p class="leftbar">
For the updates and breaking IOCCC news, you are encouraged to follow
the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our
FAQ on "[Mastodon](../faq.html#try_mastodon)"
for more information. Please do note that unless
you are mentioned by us you will **NOT** get a notification from the app _so you
should refresh the page **even if you do follow us**_.
</p>
<p class="leftbar">
Check out the [Official IOCCC winner website](https://www.ioccc.org/index.html) in general.
</p>
<p class="leftbar">
Consider joining the IOCCC discord community via this link:
[https://discord.gg/Wa42Qujwnw](https://discord.gg/Wa42Qujwnw)
</p>
<p class="leftbar">
See the
FAQ on "[obtaining, compiling, installing and using the mkiocccentry tools](../faq.html#mkiocccentry)"
and the
@@ -1149,7 +944,6 @@ as that FAQ has important details on
[how to register](../next/register.html)
as well as
[how to upload your submission](../next/submit.html) for the IOCCC.
</p>
Jump to: [top](#)
+5 -5
View File
@@ -495,7 +495,7 @@ of:</p>
timestamp</a>.</p>
<p>We highly recommend that you use <code>mkiocccentry(1)</code> to create your submit file as
it must pass the <code>txzchk(1)</code> sanity checks, and when the uncompressed tarball is
untarred, the resulting directory must pass <code>chkentry(1)</code>.</p>
untarred, the resulting directory must pass <code>chksubmit(1)</code>.</p>
</blockquote>
<p><strong>NOTE</strong>: the <code>00000000-0000-4000-0000-000000000000</code> is your UUID. <strong>MAKE SURE
YOU CHANGE IT TO YOUR UUID</strong>!</p>
@@ -571,7 +571,7 @@ To see any status updates, you should logout and log back in later.</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p><strong>Status: submit file failed the chkentry test! Use mkiocccentry to rebuild and resubmit to this slot.</strong></p>
<p><strong>Status: submit file failed the chksubmit test! Use mkiocccentry to rebuild and resubmit to this slot.</strong></p>
</blockquote>
<p>… or <strong>ANY</strong> other error then you <strong>MUST FIX</strong> your submission, repackage your
tarball with <code>mkiocccentry</code> and upload to the same slot again! If you do not fix
@@ -579,7 +579,7 @@ this your submission <strong>WILL BE REJECTED</strong> for violating <a href="ru
17</a>!</p>
<p>If the format test went well, then you will see:</p>
<blockquote>
<p><strong>Status: submit file received by the IOCCC judges. Passed both txzchk and chkentry tests.</strong></p>
<p><strong>Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.</strong></p>
</blockquote>
<p><strong>IMPORTANT</strong>: this does <strong>NOT</strong> mean that your submission does not violate the
rules or that everything is OK once the tarball is extracted; it simply means
@@ -589,8 +589,8 @@ submission rejected for violating <a href="rules.html#rule17">Rule 17</a>, even
tests passed.</p>
<p>For details on <code>txzchk</code>, see the
FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.</p>
<p>For details on <code>chkentry</code>, see the
FAQ on “<a href="../faq.html#chkentry">chkentry</a>”.</p>
<p>For details on <code>chksubmit</code>, see the
FAQ on “<a href="../faq.html#chksubmit">chksubmit</a>”.</p>
<p>If you need more information on the two JSON files, see
FAQ on the <a href="../faq.html#info_json">“.info.json file</a>”
and the
+5 -5
View File
@@ -56,7 +56,7 @@ timestamp](https://unixtime.org/).
>
> We highly recommend that you use `mkiocccentry(1)` to create your submit file as
it must pass the `txzchk(1)` sanity checks, and when the uncompressed tarball is
untarred, the resulting directory must pass `chkentry(1)`.
untarred, the resulting directory must pass `chksubmit(1)`.
**NOTE**: the `00000000-0000-4000-0000-000000000000` is your UUID. **MAKE SURE
YOU CHANGE IT TO YOUR UUID**!
@@ -153,7 +153,7 @@ After the format test is complete, if you see an error such as:
Or:
> **Status: submit file failed the chkentry test! Use mkiocccentry to rebuild and resubmit to this slot.**
> **Status: submit file failed the chksubmit test! Use mkiocccentry to rebuild and resubmit to this slot.**
... or **ANY** other error then you **MUST FIX** your submission, repackage your
tarball with `mkiocccentry` and upload to the same slot again! If you do not fix
@@ -162,7 +162,7 @@ this your submission **WILL BE REJECTED** for violating [Rule
If the format test went well, then you will see:
> **Status: submit file received by the IOCCC judges. Passed both txzchk and chkentry tests.**
> **Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.**
**IMPORTANT**: this does **NOT** mean that your submission does not violate the
rules or that everything is OK once the tarball is extracted; it simply means
@@ -174,8 +174,8 @@ tests passed.
For details on `txzchk`, see the
FAQ on "[txzchk](../faq.html#txzchk)".
For details on `chkentry`, see the
FAQ on "[chkentry](../faq.html#chkentry)".
For details on `chksubmit`, see the
FAQ on "[chksubmit](../faq.html#chksubmit)".
If you need more information on the two JSON files, see
FAQ on the [".info.json file](../faq.html#info_json)"
+1 -1
View File
@@ -577,7 +577,7 @@ you have an earlier version and you have not installed the tools and run the
tools from outside the repo directory, you will have to use the options to the
tools to set the path to the required tools.</p>
<p>Do remember to make sure you have the latest vers
<code>chkentry(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>. And remember to make sure you have
<code>chksubmit(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>. And remember to make sure you have
the latest version so you do not violate <a href="next/rules.html#rule17">Rule 17</a>.
See the
FAQ on “<a href="faq.html#obtaining_mkiocccentry">obtaining the latest mkiocccentry tools</a>”,
+1 -1
View File
@@ -177,7 +177,7 @@ tools from outside the repo directory, you will have to use the options to the
tools to set the path to the required tools.
Do remember to make sure you have the latest vers
`chkentry(1)`, `txzchk(1)` and `fnamchk(1)`. And remember to make sure you have
`chksubmit(1)`, `txzchk(1)` and `fnamchk(1)`. And remember to make sure you have
the latest version so you do not violate [Rule 17](next/rules.html#rule17).
See the
FAQ on "[obtaining the latest mkiocccentry tools](faq.html#obtaining_mkiocccentry)",