Final edits before IOCCC28 (I hope :-) )

Renamed some FAQs (typos and/or other things).

Fix a number of typos in various files (including markdown format
errors).

Rules and guidelines should be relatively good although as there is a
lot to get through and not much time left maybe I missed something (I
also kind of cheated doing the final checks with the guidelines rather
than going through them all again).

The next/try.sh and next/try.alt.sh scripts have had updates as well and
the next/Makefile.example was modified too.

The index.html page now has an anchor for goals of the contest so that
the goals in the rules could simply link to it in index.html.

Although some text had to be added (and some corrected) a reasonable
amount of text was also removed as it was elsewhere or was extraneous in
some way.
This commit is contained in:
Cody Boone Ferguson committed 2025-03-04 12:11:08 -08:00
1 parent 4975257fa4
commit 49609b0ead
13 files changed
+645 -751

No files matched your search

+82 -82
View File
@@ -451,7 +451,7 @@
<li><strong>Q 1.3</strong>: <a class="normal" href="#mkiocccentry_bugs">How do I report bugs in an <code>mkiocccentry</code> tool?</a></li> <li><strong>Q 1.3</strong>: <a class="normal" href="#mkiocccentry_bugs">How do I report bugs in an <code>mkiocccentry</code> tool?</a></li>
<li><strong>Q 1.4</strong>: <a class="normal" href="#subdirectories">How may I use subdirectories in my submission if Rule 17 disallows them?</a></li> <li><strong>Q 1.4</strong>: <a class="normal" href="#subdirectories">How may I use subdirectories in my submission if Rule 17 disallows them?</a></li>
<li><strong>Q 1.5</strong>: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a></li> <li><strong>Q 1.5</strong>: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a></li>
<li><strong>Q 1.6</strong>: <a class="normal" href="#extra-files">How may I include additional files beyond the max allowed?</a></li> <li><strong>Q 1.6</strong>: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a></li>
<li><strong>Q 1.7</strong>: <a class="normal" href="#ai">May I use AI, Virtual coding assistants, or similar tools to write my submission?</a></li> <li><strong>Q 1.7</strong>: <a class="normal" href="#ai">May I use AI, Virtual coding assistants, or similar tools to write my submission?</a></li>
<li><strong>Q 1.8</strong>: <a class="normal" href="#rule17">What are the details behind Rule 17?</a></li> <li><strong>Q 1.8</strong>: <a class="normal" href="#rule17">What are the details behind Rule 17?</a></li>
</ul> </ul>
@@ -559,7 +559,7 @@
<li><strong>Q 10.3</strong>: <a class="normal" href="#dot_files"> What is the purpose of the <code>.top</code>, <code>.allyear</code>, <code>.year</code> and <code>.path</code> files?</a></li> <li><strong>Q 10.3</strong>: <a class="normal" href="#dot_files"> What is the purpose of the <code>.top</code>, <code>.allyear</code>, <code>.year</code> and <code>.path</code> files?</a></li>
<li><strong>Q 10.4</strong>: <a class="normal" href="#terms"> What is the current meaning of the IOCCC terms Author, Entry, and Submission?</a></li> <li><strong>Q 10.4</strong>: <a class="normal" href="#terms"> What is the current meaning of the IOCCC terms Author, Entry, and Submission?</a></li>
<li><strong>Q 10.5</strong>: <a class="normal" href="#licence">Am I allowed to use IOCCC content?</a></li> <li><strong>Q 10.5</strong>: <a class="normal" href="#licence">Am I allowed to use IOCCC content?</a></li>
<li><strong>Q 10.6</strong>: <a class="normal" href="#try_mastodon">What is Mastodon and why does IOCCC use it?</a></li> <li><strong>Q 10.6</strong>: <a class="normal" href="#try_mastodon">What is Mastodon and why does the IOCCC use it?</a></li>
<li><strong>Q 10.7</strong>: <a class="normal" href="#tabstops">How do I set certain tabstops for viewing source code in vi(m)?</a></li> <li><strong>Q 10.7</strong>: <a class="normal" href="#tabstops">How do I set certain tabstops for viewing source code in vi(m)?</a></li>
<li><strong>Q 10.8</strong>: <a class="normal" href="#menus">How do the menus on the website work and what can I do if they don’t work?</a></li> <li><strong>Q 10.8</strong>: <a class="normal" href="#menus">How do the menus on the website work and what can I do if they don’t work?</a></li>
<li><strong>Q 10.9</strong>: <a class="normal" href="#author-information">How do I find more information about a winning author of an entry?</a></li> <li><strong>Q 10.9</strong>: <a class="normal" href="#author-information">How do I find more information about a winning author of an entry?</a></li>
@@ -714,7 +714,7 @@ and will not work from any directory, however.</p>
<div id="using_mkiocccentry"> <div id="using_mkiocccentry">
<h4 id="q-0.1.5-how-do-i-use-mkiocccentry">Q 0.1.5: How do I use mkiocccentry?</h4> <h4 id="q-0.1.5-how-do-i-use-mkiocccentry">Q 0.1.5: How do I use mkiocccentry?</h4>
</div> </div>
<p>Once you have registered, you will need to package your entry with the <p>Once you have registered, you will need to package your submission with the
<code>mkiocccentry</code> tool. If you have not already obtained the toolkit, see the <code>mkiocccentry</code> tool. If you have not already obtained the toolkit, see the
FAQ on “<a href="#obtaining_mkiocccentry">obtaining the most recent mkiocccentry FAQ on “<a href="#obtaining_mkiocccentry">obtaining the most recent mkiocccentry
toolkit</a>”, toolkit</a>”,
@@ -917,7 +917,7 @@ but we do enjoy interesting and creative uses of submissions.</p>
<code>try.alt.sh</code> template as well.</p> <code>try.alt.sh</code> template as well.</p>
<p>We recommend that you include the use of these scripts in the <code>try</code> rule in the <p>We recommend that you include the use of these scripts in the <code>try</code> rule in the
example Makefile that you modify for your submission. See the example Makefile that you modify for your submission. See the
FAQ on “<a href="#makefile">submission Makefiles</a>.</p> FAQ on “<a href="#makefile">submission Makefiles</a>”.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="file_perms"> <div id="file_perms">
<h3 id="q-0.6-what-permissions-may-my-files-be-and-what-if-i-need-different-permissions">Q 0.6: What permissions may my files be and what if I need different permissions?</h3> <h3 id="q-0.6-what-permissions-may-my-files-be-and-what-if-i-need-different-permissions">Q 0.6: What permissions may my files be and what if I need different permissions?</h3>
@@ -1037,12 +1037,16 @@ for more thorough details on bug reporting.</p>
<h4 id="q-1.4-how-may-i-use-subdirectories-in-my-submission-if-rule-17-disallows-them">Q 1.4: How may I use subdirectories in my submission if Rule 17 disallows them?</h4> <h4 id="q-1.4-how-may-i-use-subdirectories-in-my-submission-if-rule-17-disallows-them">Q 1.4: How may I use subdirectories in my submission if Rule 17 disallows them?</h4>
</div> </div>
<p>In order to submit a subdirectory, you may simply include a tarball. As long as <p>In order to submit a subdirectory, you may simply include a tarball. As long as
the total size of your submission does not exceed the size limit, defined in the maximum depth of all files does not exceed the maximum, defined as
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">limit_ioccc.h</a> <code>MAX_PATH_DEPTH</code>, the maximum filename length (a single component not counting
as <code>MAX_TARBALL_LEN</code> and your total number of files in your xz compressed the <code>/</code>) of all files does not exceed <code>MAX_FILENAME_LEN</code> and
tarball does not exceed the limit, defined as <code>MAX_FILE_COUNT</code> in the maximum path length (all components) of all files does not exceed
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">limit_ioccc.h</a>, <code>MAX_PATH_LEN</code>. These macros are defined in
you can include tarballs with subdirectories or other files.</p> <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">limit_ioccc.h</a>.</p>
<p>See also the
FAQ on “<a href="#rule17">Rule 17</a>”,
the <a href="next/guidelines.html">guidelines</a> and <a href="next/rules.html#rule17">Rule 17</a>
itself.</p>
<div id="mkiocccentry_test"> <div id="mkiocccentry_test">
<h4 id="q-1.5-how-can-i-check-if-my-submission-passes-tests-without-having-to-answer-questions">Q 1.5: How can I check if my submission passes tests without having to answer questions?</h4> <h4 id="q-1.5-how-can-i-check-if-my-submission-passes-tests-without-having-to-answer-questions">Q 1.5: How can I check if my submission passes tests without having to answer questions?</h4>
</div> </div>
@@ -1054,7 +1058,7 @@ answers.</p>
<p>Please note that the tool will <strong>NOT</strong> delete the directory it makes so if you <p>Please note that the tool will <strong>NOT</strong> delete the directory it makes so if you
do have to try again you’ll have to remove it.</p> do have to try again you’ll have to remove it.</p>
<p>An example use of this option is:</p> <p>An example use of this option is:</p>
<pre><code> mkiocccentry -d test_work prog.c Makefile remarks.md</code></pre> <pre><code> mkiocccentry -d workdir topdir</code></pre>
<p>This will run the tests that <code>mkiocccentry(1)</code>, write the JSON files, use <p>This will run the tests that <code>mkiocccentry(1)</code>, write the JSON files, use
<code>chkentry(1)</code>, package the tarball and run <code>txzchk(1)</code> on it.</p> <code>chkentry(1)</code>, package the tarball and run <code>txzchk(1)</code> on it.</p>
<p>See also the <p>See also the
@@ -1073,18 +1077,24 @@ and the
FAQ on “<a href="#fnamchk">fnamchk</a>” FAQ on “<a href="#fnamchk">fnamchk</a>”
for more details.</p> for more details.</p>
<div id="extra-files"> <div id="extra-files">
<h1 id="how-may-i-include-additional-files-beyond-the-max-allowed">How may I include additional files beyond the max allowed?</h1> <h1 id="what-are-extra-files-and-how-may-i-include-additional-files-beyond-the-max-allowed">What are extra files and how may I include additional files beyond the max allowed?</h1>
</div> </div>
<p>The rules state:</p> <p class="leftbar">
<blockquote> Extra files are defined as files that are not the required files (<code>prog.c</code>,
<p>The maximum number of files your submission tarball may contain, not counting <code>Makefile</code>, <code>remarks.md</code> and the two generated by <code>mkiocccentry(1)</code> <code>.info.json</code>
the optional files (<code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>) and the mandatory and <code>.auth.json</code>) and files that are also not the optional files (<code>try.sh</code>,
files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>) is 31.</p> <code>prog.alt.c</code> and <code>try.alt.sh</code>).
</blockquote> </p>
<p>If you need to include more files than this, you may include a tarball as an <p class="leftbar">
<strong>EXTRA</strong> file.</p> <strong>NOTE</strong>: optional filenames are only optional if they are in the submission top
<p>This file does <strong>NOT</strong> need to pass the <code>txzchk(1)</code> tests; only your submission level directory.
tarball needs to pass these tests.</p> </p>
<p class="leftbar">
If you need to include more files than this, you may include a tarball that
itself is an extra file, meaning it counts <strong>AS</strong> an extra file.
This file does <strong>NOT</strong> need to pass the <code>txzchk(1)</code> tests; only your submission
tarball needs to pass these tests.
</p>
<p>Please pay careful attention to <a href="next/rules.html#rule17">Rule 17</a> and in <p>Please pay careful attention to <a href="next/rules.html#rule17">Rule 17</a> and in
particular the part about the <a href="#max-files">maximum number of files per particular the part about the <a href="#max-files">maximum number of files per
submission</a>, which not only discusses the maximum submission</a>, which not only discusses the maximum
@@ -1100,21 +1110,22 @@ The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent thi
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre> <pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="ai"> <div id="ai">
<h3 id="q-1.7-may-i-use-ai-virtual-coding-assistants-or-similar-tools-to-write-my-submission">Q 1.7: May I use AI, Virtual coding assistants, or similar tools to write my submission?</h3> <div id="llm">
<h3 id="q-1.7-may-i-use-ai-llm-virtual-coding-assistants-or-similar-tools-to-write-my-submission">Q 1.7: May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</h3>
</div>
</div> </div>
<p>You are free to use whatever tools you wish to write your code. <p>You are free to use whatever tools you wish to write your code.
This includes tools that are AI based, Virtual coding assistants, code This includes tools that are AI based, LLM (large language model), Virtual
generators, or similar tools, as well as your own tools. The <a href="https://www.ioccc.org/judges.html">IOCCC coding assistants, code generators, or similar tools, as well as your own tools.
judges</a> do not discriminate on the The <a href="https://www.ioccc.org/judges.html">IOCCC judges</a> do not discriminate on the
basis of the tools used to write obfuscated C code so long as you are basis of the tools used to write obfuscated C code so long as you are the
the ultimate author of the code you submit.</p> ultimate author of the code you submit.</p>
<p>If you do use such tools, <strong>PLEASE mention</strong> which tools you used as well <p>If you do use such tools, <strong>PLEASE mention</strong> in your <code>remarks.md</code> which tools
as how you them to help write you submission in your <code>remarks.md</code> file.</p> you used as well as how you used them to help write your submission.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule17"> <div id="rule17">
<h3 id="q-1.8-what-are-details-behind-rule-17">Q 1.8: What are details behind Rule 17?</h3> <h3 id="q-1.8-what-are-details-behind-rule-17">Q 1.8: What are details behind Rule 17?</h3>
</div> </div>
<p>The following are the details behind <a href="next/rules.html#rule17">Rule 17</a>.</p>
<h3 id="tldr-rule-17---use-mkiocccentry1">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code></h3> <h3 id="tldr-rule-17---use-mkiocccentry1">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code></h3>
<p class="leftbar"> <p class="leftbar">
This is a <strong>COMPLEX</strong> rule. <strong>Violating this rule will cause your submission to This is a <strong>COMPLEX</strong> rule. <strong>Violating this rule will cause your submission to
@@ -1129,54 +1140,41 @@ contains <strong>IMPORTANT</strong> tools and libraries such as:
</p> </p>
<ul> <ul>
<li><p class="leftbar"> <li><p class="leftbar">
<code>chkentry(1)</code> <code>mkiocccentry(1)</code>
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<code>iocccsize(1)</code> <code>iocccsize(1)</code>
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<code>mkiocccentry(1)</code>
</p></li>
<li><p class="leftbar">
<code>txzchk(1)</code> <code>txzchk(1)</code>
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<code>fnamchk(1)</code> <code>fnamchk(1)</code>
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<code>jparse(1)</code> (and other tools) and <code>jparse(3)</code> (which <code>chkentry(1)</code> uses) <code>jparse(3)</code>
</p></li>
<li><p class="leftbar">
<code>chkentry(1)</code> (which uses <code>jparse(3)</code>)
</p></li> </p></li>
</ul> </ul>
<p class="leftbar"> <p class="leftbar">
The above mentioned tools will help you verify that your submission The above mentioned tools will help you verify that your submission
conforms to <a href="next/rules.html#rule17">Rule 17</a>. conforms to <a href="next/rules.html#rule17">Rule 17</a>. Each of these tool has a <code>-h</code>
</p> option that provides command line help. For additional details of each tool, see
<p class="leftbar"> its man page, and in some cases, the <a href="next/guidelines.html">IOCCC guidelines</a>.
Each above mentioned tool has a <code>-h</code> option that provides command line help. For
additional details of each tool, see its man page, and in some cases, the <a href="next/guidelines.html">IOCCC
guidelines</a>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The maximum number of <strong>extra files</strong> is 31. See the <a href="#max-files">maximum number of extra The maximum number of <strong>extra files</strong> is 31. See the <a href="#max-files">maximum number of extra
files section</a> below for finer details and the files section</a> below for finer details and the
FAQ on “<a href="#extra-files">including additional files</a>” FAQ on “<a href="#extra-files">what extra files are and how to include additional files</a>”,
if you need to include more files than this maximum. should you need to include more files than this maximum.
</p>
<p class="leftbar">
Extra files are defined as files that are not the required files (<code>prog.c</code>,
<code>Makefile</code>, <code>remarks.md</code> and the two generated by <code>mkiocccentry(1)</code> <code>.info.json</code>
and <code>.auth.json</code>) and files that are also not the optional files (<code>try.sh</code>,
<code>prog.alt.c</code> and <code>try.alt.sh</code>).
</p>
<p class="leftbar">
<strong>NOTE</strong>: optional filenames are only optional if they are in the submission top
level directory.
</p> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3> <h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3>
<p class="leftbar"> <p class="leftbar">
<p>Each submission <strong>MUST</strong> be in the form of a xz compressed tarball. <p>Each submission <strong>MUST</strong> be in the form of an xz compressed tarball.
The xz compressed tarball filename must be of the form: The xz compressed tarball filename <strong>MUST</strong> be of the form:
<code>^submit.username-slot_num.[1-9][0-9]{9,}.txz$</code>.</p> <code>^submit.username-slot_num.[1-9][0-9]{9,}.txz$</code>.</p>
<p class="leftbar"> <p class="leftbar">
… where <em><code>username</code></em> is your IOCCC registration username <strong>in the form of a … where <em><code>username</code></em> is your IOCCC registration username <strong>in the form of a
@@ -1189,11 +1187,10 @@ details), and where <em><code>slot_num</code></em> is a single decimal digit int
In particular, <code>username</code> is in the form of: In particular, <code>username</code> is in the form of:
<code>xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx</code> where <code>'x'</code> is a hex digit in the range <code>xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx</code> where <code>'x'</code> is a hex digit in the range
of <code>[0-9a-f]</code>, 4 is the UUID version, and <code>N</code> is one of <code>8</code>, <code>9</code>, <code>a</code>, or <code>b</code>. of <code>[0-9a-f]</code>, 4 is the UUID version, and <code>N</code> is one of <code>8</code>, <code>9</code>, <code>a</code>, or <code>b</code>.
And yes, there is a 4 (UUID version 4) and the variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
<code>0xb</code> in there.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your xz compressed tarball <strong>MUST</strong> contain, <strong>at a minimum</strong>, the following files: Your xz compressed tarball <strong>MUST</strong> contain, <strong>at a minimum</strong>, the following
files, in the <strong>TOP LEVEL</strong> directory:
</p> </p>
<ul> <ul>
<li><p class="leftbar"> <li><p class="leftbar">
@@ -1220,9 +1217,9 @@ The <code>Makefile</code> <strong>MUST</strong> be a <strong>non</strong>-empty
Makefile</a></strong> format. See the Makefile</a></strong> format. See the
<a href="next/guidelines.html#makefile">Makefile section in the guidelines</a>, <a href="next/guidelines.html#makefile">Makefile section in the guidelines</a>,
the the
FAQ on “<a href="#submission_makefiles">submission Makefile</a>” FAQ on “<a href="#submission_makefile">submission Makefiles</a>”
and the and the
FAQ on “<a href="#make_compatibility">Makefile compatibility</a>” FAQ on “<a href="#make_compatibility">IOCCC make(1) compatibility</a>”
for help. for help.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -1230,8 +1227,8 @@ The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empt
(<code>mkiocccentry(1)</code> only checks the file size but if you do not have any text in (<code>mkiocccentry(1)</code> only checks the file size but if you do not have any text in
it you still risk violating this rule). See also it you still risk violating this rule). See also
<a href="next/rules.html#rule18">Rule 18</a> and our <a href="next/rules.html#rule18">Rule 18</a> and our
FAQ on “<a href="#remarks_md">remarks.md</a>” FAQ on “<a href="#remarks_md">remarks.md</a>”,
and our our
FAQ on “<a href="#markdown">markdown</a>” FAQ on “<a href="#markdown">markdown</a>”
and our <a href="markdown.html">markdown guidelines</a>. and our <a href="markdown.html">markdown guidelines</a>.
</p> </p>
@@ -1252,7 +1249,7 @@ about the submission itself. It also <strong>MUST</strong> be valid according to
</p> </p>
<p class="leftbar"> <p class="leftbar">
For the complete <code>mkiocccentry(1)</code> process, see the For the complete <code>mkiocccentry(1)</code> process, see the
FAQ on the “<a href="#mkiocccentry_process">mkiocccentry process</a>. FAQ on the “<a href="#mkiocccentry_process">mkiocccentry process</a>”.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The tool performs a lot of checks, both directly and indirectly, and if it or The tool performs a lot of checks, both directly and indirectly, and if it or
@@ -1260,7 +1257,7 @@ any other tool detects <strong>ANY</strong> problem, you are <strong>HIGHLY</str
and try again. and try again.
</p> </p>
<p class="leftbar"> <p class="leftbar">
On the other hand, some issues are errors and you <strong>MUST</strong> fix those). On the other hand, some issues are errors and you <strong>MUST</strong> fix those.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you do use <code>mkiocccentry(1)</code> and you run into a problem, you might see the If you do use <code>mkiocccentry(1)</code> and you run into a problem, you might see the
@@ -1285,27 +1282,28 @@ course if you manipulate the tarball to get past this you risk violating this
rule. rule.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your submission’s xz compressed tarball <strong>MUST</strong> pass the <code>txzchk(1)</code> test. See Your submission’s xz compressed tarball <strong>MUST</strong> pass the <code>txzchk(1)</code> tests. See
the <a href="next/guidelines.html">guidelines</a> for more details on this tool. the <a href="next/guidelines.html#txzchk">guidelines on txzchk(1)</a> for more details on this tool.
</p> </p>
<p class="leftbar"> <p class="leftbar">
<strong>IMPORTANT</strong>: Make <strong>SURE</strong> you have the most recent version of the <strong>IMPORTANT</strong>: Make <strong>SURE</strong> you have the most recent version of the
<code>mkiocccentry</code> toolkit! Not doing so will put you at a great risk of violating <code>mkiocccentry</code> toolkit! Not doing so will put you at a great risk of violating
this rule! See the this rule! See the
FAQ on “<a href="#mkiocccentry">obtaining the mkiocccentry toolkit</a>” FAQs on “<a href="#mkiocccentry">obtaining, compiling, installing and using the mkiocccentry toolkit</a>”
for more details. for more details.
</p> </p>
<p class="leftbar"> <p class="leftbar">
You are <strong>HIGHLY ENCOURAGED</strong> to use the <code>mkiocccentry(1)</code> tool to form your You are <strong>HIGHLY ENCOURAGED</strong> to use the <code>mkiocccentry(1)</code> tool to form your
submission’s xz compressed tarball. See the <a href="next/guidelines.html">guidelines</a> for submission’s xz compressed tarball. See the <a href="next/guidelines.html#mkiocccentry">guidelines on
more details on this tool and the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry mkiocccentry(1)</a> for
repo</a>. more details on this tool and see the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
repo</a> for the toolkit itself.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your entry <strong>MAY</strong> have subdirectories, depending on the depth and total length of Your entry <strong>MAY</strong> have subdirectories, depending on the depth and total length of
the filenames. Certain directories like <code>.git</code>, <code>RCCS</code>, <code>CVS</code> and <code>.svn</code> the filenames. Certain directories like <code>.git</code>, <code>RCCS</code>, <code>CVS</code> and <code>.svn</code>
(amongst others) are skipped. For more information, see the (amongst others) are skipped. For more information, see the
<a href="next/guidelines.html">guidelines</a>. FAQ on “<a href="#subdirectories">subdirectories</a>”.
</p> </p>
<p class="leftbar"> <p class="leftbar">
With the exception of those generated by the <code>mkiocccentry(1)</code> tool or the tools With the exception of those generated by the <code>mkiocccentry(1)</code> tool or the tools
@@ -1325,7 +1323,7 @@ the exception of files generated by <code>mkiocccentry(1)</code> itself, it must
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<strong>NOT</strong> contain a path component of: <strong><code>..</code></strong> (that is, <strong>NOT</strong> contain a path component of: <strong><code>..</code></strong> (that is,
<strong>NO</strong> <strong><code>..</code></strong>). <strong>NO</strong> path component that matches the regular expression <strong><code>^..$</code></strong>).
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
Match the regular expression Match the regular expression
@@ -1333,7 +1331,7 @@ Match the regular expression
<code>mkiocccentry(1)</code>). <code>mkiocccentry(1)</code>).
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<strong>NOT</strong> have a directory depth &gt; 4. <strong>NOT</strong> have a directory/file depth &gt; 4.
</p></li> </p></li>
<li><p class="leftbar"> <li><p class="leftbar">
<strong>NOT</strong> have a total <strong>path</strong> length &gt; 99 characters. <strong>NOT</strong> have a total <strong>path</strong> length &gt; 99 characters.
@@ -1361,12 +1359,14 @@ tarball.
<p class="leftbar"> <p class="leftbar">
Files and directories in your submission tarball <strong>MUST</strong> be specific Files and directories in your submission tarball <strong>MUST</strong> be specific
permissions and <code>mkiocccentry(1)</code> does this for you. In particular: directories permissions and <code>mkiocccentry(1)</code> does this for you. In particular: directories
<strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>), the optional files, not counting <strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>); the optional files, not counting
<code>prog.alt.c</code> (i.e. <code>try.sh</code> and <code>try.alt.sh</code>), if provided, <strong>MUST</strong> be <code>prog.alt.c</code> (i.e. <code>try.sh</code> and <code>try.alt.sh</code>), if provided, <strong>MUST</strong> be
<code>-r-xr-xr-x</code> (i.e. <code>0555</code>) and all other files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e. <code>-r-xr-xr-x</code> (i.e. <code>0555</code>); and all other files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e.
<code>0444</code>). If the files do not have these permissions, your submission <strong>WILL</strong> <code>0444</code>). If any file or directory does not have the correct permissions, your submission <strong>WILL</strong>
be rejected for violating <a href="next/rules.html#rule17">Rule 17</a>! In addition to be rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!
<code>mkiocccentry(1)</code> creating and copying the directories and files with these </p>
<p class="leftbar">
After <code>mkiocccentry(1)</code> creates the directories and copies the files with these
modes, it also verifies them after the fact and if they are not correct it is an modes, it also verifies them after the fact and if they are not correct it is an
<strong>error</strong>. <strong>error</strong>.
</p> </p>
@@ -1413,7 +1413,7 @@ files <code>.auth.json</code> and <code>.info.json</code>), is 31. This is defin
<code>MAX_EXTRA_FILE_COUNT</code> in <code>MAX_EXTRA_FILE_COUNT</code> in
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a> <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>. See the in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>. See the
FAQ on “<a href="#extra-files">how to include additional files</a>” FAQ on “<a href="#extra-files">what extra files are and how to include more</a>”
if you need to include more files. if you need to include more files.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -5812,12 +5812,12 @@ and this may help clarify some aspects of the
<a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1">CC BY-SA 4.0 License</a>.</p> <a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1">CC BY-SA 4.0 License</a>.</p>
<p>The <a href="#copyright">Copyright and CC BY-SA 4.0 License</a> applies to all <p>The <a href="#copyright">Copyright and CC BY-SA 4.0 License</a> applies to all
IOCCC content. We use this to help ensure that we can all IOCCC content. We use this to help ensure that we can all
enjoy hat those working on the IOCCC have proper Attribution enjoy that those working on the IOCCC have proper Attribution
including, of course, the IOCCC winners themselves! It is designed including, of course, the IOCCC winners themselves! It is designed
to help ensure that everyone may enjoy the IOCCC.</p> to help ensure that everyone may enjoy the IOCCC.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="try_mastodon"> <div id="try_mastodon">
<h3 id="q-10.6-what-is-mastodon-and-why-does-ioccc-use-it">Q 10.6: What is Mastodon and why does IOCCC use it?</h3> <h3 id="q-10.6-what-is-mastodon-and-why-does-the-ioccc-use-it">Q 10.6: What is Mastodon and why does the IOCCC use it?</h3>
</div> </div>
<p>The <a href="https://fosstodon.org/@ioccc">IOCCC uses Mastodon</a> for news updates, <p>The <a href="https://fosstodon.org/@ioccc">IOCCC uses Mastodon</a> for news updates,
announcements, and for various other social media purposes.</p> announcements, and for various other social media purposes.</p>
+81 -82
View File
@@ -25,7 +25,7 @@ This is FAQ version **28.2.13 2025-03-01**.
- **Q 1.3**: <a class="normal" href="#mkiocccentry_bugs">How do I report bugs in an `mkiocccentry` tool?</a> - **Q 1.3**: <a class="normal" href="#mkiocccentry_bugs">How do I report bugs in an `mkiocccentry` tool?</a>
- **Q 1.4**: <a class="normal" href="#subdirectories">How may I use subdirectories in my submission if Rule 17 disallows them?</a> - **Q 1.4**: <a class="normal" href="#subdirectories">How may I use subdirectories in my submission if Rule 17 disallows them?</a>
- **Q 1.5**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a> - **Q 1.5**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a>
- **Q 1.6**: <a class="normal" href="#extra-files">How may I include additional files beyond the max allowed?</a> - **Q 1.6**: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a>
- **Q 1.7**: <a class="normal" href="#ai">May I use AI, Virtual coding assistants, or similar tools to write my submission?</a> - **Q 1.7**: <a class="normal" href="#ai">May I use AI, Virtual coding assistants, or similar tools to write my submission?</a>
- **Q 1.8**: <a class="normal" href="#rule17">What are the details behind Rule 17?</a> - **Q 1.8**: <a class="normal" href="#rule17">What are the details behind Rule 17?</a>
@@ -129,7 +129,7 @@ This is FAQ version **28.2.13 2025-03-01**.
- **Q 10.3**: <a class="normal" href="#dot_files"> What is the purpose of the `.top`, `.allyear`, `.year` and `.path` files?</a> - **Q 10.3**: <a class="normal" href="#dot_files"> What is the purpose of the `.top`, `.allyear`, `.year` and `.path` files?</a>
- **Q 10.4**: <a class="normal" href="#terms"> What is the current meaning of the IOCCC terms Author, Entry, and Submission?</a> - **Q 10.4**: <a class="normal" href="#terms"> What is the current meaning of the IOCCC terms Author, Entry, and Submission?</a>
- **Q 10.5**: <a class="normal" href="#licence">Am I allowed to use IOCCC content?</a> - **Q 10.5**: <a class="normal" href="#licence">Am I allowed to use IOCCC content?</a>
- **Q 10.6**: <a class="normal" href="#try_mastodon">What is Mastodon and why does IOCCC use it?</a> - **Q 10.6**: <a class="normal" href="#try_mastodon">What is Mastodon and why does the IOCCC use it?</a>
- **Q 10.7**: <a class="normal" href="#tabstops">How do I set certain tabstops for viewing source code in vi&lpar;m&rpar;?</a> - **Q 10.7**: <a class="normal" href="#tabstops">How do I set certain tabstops for viewing source code in vi&lpar;m&rpar;?</a>
- **Q 10.8**: <a class="normal" href="#menus">How do the menus on the website work and what can I do if they don't work?</a> - **Q 10.8**: <a class="normal" href="#menus">How do the menus on the website work and what can I do if they don't work?</a>
- **Q 10.9**: <a class="normal" href="#author-information">How do I find more information about a winning author of an entry?</a> - **Q 10.9**: <a class="normal" href="#author-information">How do I find more information about a winning author of an entry?</a>
@@ -345,7 +345,7 @@ Jump to: [top](#)
#### Q 0.1.5: How do I use mkiocccentry? #### Q 0.1.5: How do I use mkiocccentry?
</div> </div>
Once you have registered, you will need to package your entry with the Once you have registered, you will need to package your submission with the
`mkiocccentry` tool. If you have not already obtained the toolkit, see the `mkiocccentry` tool. If you have not already obtained the toolkit, see the
FAQ on "[obtaining the most recent mkiocccentry FAQ on "[obtaining the most recent mkiocccentry
toolkit](#obtaining_mkiocccentry)", toolkit](#obtaining_mkiocccentry)",
@@ -585,7 +585,7 @@ If you have alternate code that you are including, then you can use the
We recommend that you include the use of these scripts in the `try` rule in the We recommend that you include the use of these scripts in the `try` rule in the
example Makefile that you modify for your submission. See the example Makefile that you modify for your submission. See the
FAQ on "[submission Makefiles](#makefile). FAQ on "[submission Makefiles](#makefile)".
Jump to: [top](#) Jump to: [top](#)
@@ -759,12 +759,18 @@ Jump to: [top](#)
</div> </div>
In order to submit a subdirectory, you may simply include a tarball. As long as In order to submit a subdirectory, you may simply include a tarball. As long as
the total size of your submission does not exceed the size limit, defined in the maximum depth of all files does not exceed the maximum, defined as
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) `MAX_PATH_DEPTH`, the maximum filename length (a single component not counting
as `MAX_TARBALL_LEN` and your total number of files in your xz compressed the `/`) of all files does not exceed `MAX_FILENAME_LEN` and
tarball does not exceed the limit, defined as `MAX_FILE_COUNT` in the maximum path length (all components) of all files does not exceed
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h), `MAX_PATH_LEN`. These macros are defined in
you can include tarballs with subdirectories or other files. [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h).
See also the
FAQ on "[Rule 17](#rule17)",
the [guidelines](next/guidelines.html) and [Rule 17](next/rules.html#rule17)
itself.
<div id="mkiocccentry_test"> <div id="mkiocccentry_test">
#### Q 1.5: How can I check if my submission passes tests without having to answer questions? #### Q 1.5: How can I check if my submission passes tests without having to answer questions?
@@ -782,7 +788,7 @@ do have to try again you'll have to remove it.
An example use of this option is: An example use of this option is:
``` <!---sh--> ``` <!---sh-->
mkiocccentry -d test_work prog.c Makefile remarks.md mkiocccentry -d workdir topdir
``` ```
This will run the tests that `mkiocccentry(1)`, write the JSON files, use This will run the tests that `mkiocccentry(1)`, write the JSON files, use
@@ -806,20 +812,27 @@ for more details.
<div id="extra-files"> <div id="extra-files">
# How may I include additional files beyond the max allowed? # What are extra files and how may I include additional files beyond the max allowed?
</div> </div>
The rules state: <p class="leftbar">
Extra files are defined as files that are not the required files (`prog.c`,
`Makefile`, `remarks.md` and the two generated by `mkiocccentry(1)` `.info.json`
and `.auth.json`) and files that are also not the optional files (`try.sh`,
`prog.alt.c` and `try.alt.sh`).
</p>
> The maximum number of files your submission tarball may contain, not counting <p class="leftbar">
the optional files (`prog.alt.c`, `try.sh`, `try.alt.sh`) and the mandatory **NOTE**: optional filenames are only optional if they are in the submission top
files (`prog.c`, `Makefile`, `remarks.md`) is 31. level directory.
</p>
If you need to include more files than this, you may include a tarball as an
**EXTRA** file.
<p class="leftbar">
If you need to include more files than this, you may include a tarball that
itself is an extra file, meaning it counts **AS** an extra file.
This file does **NOT** need to pass the `txzchk(1)` tests; only your submission This file does **NOT** need to pass the `txzchk(1)` tests; only your submission
tarball needs to pass these tests. tarball needs to pass these tests.
</p>
Please pay careful attention to [Rule 17](next/rules.html#rule17) and in Please pay careful attention to [Rule 17](next/rules.html#rule17) and in
particular the part about the [maximum number of files per particular the part about the [maximum number of files per
@@ -845,18 +858,20 @@ Jump to: [top](#)
<div id="ai"> <div id="ai">
### Q 1.7: May I use AI, Virtual coding assistants, or similar tools to write my submission? <div id="llm">
### Q 1.7: May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?
</div>
</div> </div>
You are free to use whatever tools you wish to write your code. You are free to use whatever tools you wish to write your code.
This includes tools that are AI based, Virtual coding assistants, code This includes tools that are AI based, LLM (large language model), Virtual
generators, or similar tools, as well as your own tools. The [IOCCC coding assistants, code generators, or similar tools, as well as your own tools.
judges](https://www.ioccc.org/judges.html) do not discriminate on the The [IOCCC judges](https://www.ioccc.org/judges.html) do not discriminate on the
basis of the tools used to write obfuscated C code so long as you are basis of the tools used to write obfuscated C code so long as you are the
the ultimate author of the code you submit. ultimate author of the code you submit.
If you do use such tools, **PLEASE mention** which tools you used as well If you do use such tools, **PLEASE mention** in your `remarks.md` which tools
as how you them to help write you submission in your `remarks.md` file. you used as well as how you used them to help write your submission.
Jump to: [top](#) Jump to: [top](#)
@@ -865,9 +880,6 @@ Jump to: [top](#)
### Q 1.8: What are details behind Rule 17? ### Q 1.8: What are details behind Rule 17?
</div> </div>
The following are the details behind [Rule 17](next/rules.html#rule17).
### TL;DR Rule 17 - Use `mkiocccentry(1)` ### TL;DR Rule 17 - Use `mkiocccentry(1)`
<p class="leftbar"> <p class="leftbar">
@@ -883,41 +895,25 @@ The [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
contains **IMPORTANT** tools and libraries such as: contains **IMPORTANT** tools and libraries such as:
</p> </p>
* <p class="leftbar">`chkentry(1)`</p>
* <p class="leftbar">`iocccsize(1)`</p>
* <p class="leftbar">`mkiocccentry(1)`</p> * <p class="leftbar">`mkiocccentry(1)`</p>
* <p class="leftbar">`iocccsize(1)`</p>
* <p class="leftbar">`txzchk(1)`</p> * <p class="leftbar">`txzchk(1)`</p>
* <p class="leftbar">`fnamchk(1)`</p> * <p class="leftbar">`fnamchk(1)`</p>
* <p class="leftbar">`jparse(1)` (and other tools) and `jparse(3)` (which `chkentry(1)` uses)</p> * <p class="leftbar">`jparse(3)`</p>
* <p class="leftbar">`chkentry(1)` (which uses `jparse(3)`)</p>
<p class="leftbar"> <p class="leftbar">
The above mentioned tools will help you verify that your submission The above mentioned tools will help you verify that your submission
conforms to [Rule 17](next/rules.html#rule17). conforms to [Rule 17](next/rules.html#rule17). Each of these tool has a `-h`
</p> option that provides command line help. For additional details of each tool, see
its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html).
<p class="leftbar">
Each above mentioned tool has a `-h` option that provides command line help. For
additional details of each tool, see its man page, and in some cases, the [IOCCC
guidelines](next/guidelines.html).
</p> </p>
<p class="leftbar"> <p class="leftbar">
The maximum number of **extra files** is 31. See the [maximum number of extra The maximum number of **extra files** is 31. See the [maximum number of extra
files section](#max-files) below for finer details and the files section](#max-files) below for finer details and the
FAQ on "[including additional files](#extra-files)" FAQ on "[what extra files are and how to include additional files](#extra-files)",
if you need to include more files than this maximum. should you need to include more files than this maximum.
</p>
<p class="leftbar">
Extra files are defined as files that are not the required files (`prog.c`,
`Makefile`, `remarks.md` and the two generated by `mkiocccentry(1)` `.info.json`
and `.auth.json`) and files that are also not the optional files (`try.sh`,
`prog.alt.c` and `try.alt.sh`).
</p>
<p class="leftbar">
**NOTE**: optional filenames are only optional if they are in the submission top
level directory.
</p> </p>
Jump to: [top](#) Jump to: [top](#)
@@ -926,8 +922,8 @@ Jump to: [top](#)
### Rule 17 - The COMPLEX details ### Rule 17 - The COMPLEX details
<p class="leftbar"> <p class="leftbar">
Each submission **MUST** be in the form of a xz compressed tarball. Each submission **MUST** be in the form of an xz compressed tarball.
The xz compressed tarball filename must be of the form: The xz compressed tarball filename **MUST** be of the form:
`^submit.username-slot_num.[1-9][0-9]{9,}.txz$`. `^submit.username-slot_num.[1-9][0-9]{9,}.txz$`.
<p class="leftbar"> <p class="leftbar">
@@ -942,12 +938,11 @@ details), and where _`slot_num`_ is a single decimal digit integer
In particular, `username` is in the form of: In particular, `username` is in the form of:
`xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx` where `'x'` is a hex digit in the range `xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx` where `'x'` is a hex digit in the range
of `[0-9a-f]`, 4 is the UUID version, and `N` is one of `8`, `9`, `a`, or `b`. of `[0-9a-f]`, 4 is the UUID version, and `N` is one of `8`, `9`, `a`, or `b`.
And yes, there is a 4 (UUID version 4) and the variants `0x8`, `0x9`, `0xa` and
`0xb` in there.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your xz compressed tarball **MUST** contain, **at a minimum**, the following files: Your xz compressed tarball **MUST** contain, **at a minimum**, the following
files, in the **TOP LEVEL** directory:
</p> </p>
* <p class="leftbar">`prog.c`</p> * <p class="leftbar">`prog.c`</p>
@@ -965,9 +960,9 @@ The `Makefile` **MUST** be a **non**-empty file in **[GNU
Makefile](https://www.gnu.org/software/make/manual/make.html)** format. See the Makefile](https://www.gnu.org/software/make/manual/make.html)** format. See the
[Makefile section in the guidelines](next/guidelines.html#makefile), [Makefile section in the guidelines](next/guidelines.html#makefile),
the the
FAQ on "[submission Makefile](#submission_makefiles)" FAQ on "[submission Makefiles](#submission_makefile)"
and the and the
FAQ on "[Makefile compatibility](#make_compatibility)" FAQ on "[IOCCC make&lpar;1&rpar; compatibility](#make_compatibility)"
for help. for help.
</p> </p>
@@ -976,8 +971,8 @@ The `remarks.md` **MUST** be a **non**-empty file in markdown format
(`mkiocccentry(1)` only checks the file size but if you do not have any text in (`mkiocccentry(1)` only checks the file size but if you do not have any text in
it you still risk violating this rule). See also it you still risk violating this rule). See also
[Rule 18](next/rules.html#rule18) and our [Rule 18](next/rules.html#rule18) and our
FAQ on "[remarks.md](#remarks_md)" FAQ on "[remarks.md](#remarks_md)",
and our our
FAQ on "[markdown](#markdown)" FAQ on "[markdown](#markdown)"
and our [markdown guidelines](markdown.html). and our [markdown guidelines](markdown.html).
</p> </p>
@@ -1003,7 +998,7 @@ about the submission itself. It also **MUST** be valid according to **BOTH**
<p class="leftbar"> <p class="leftbar">
For the complete `mkiocccentry(1)` process, see the For the complete `mkiocccentry(1)` process, see the
FAQ on the "[mkiocccentry process](#mkiocccentry_process). FAQ on the "[mkiocccentry process](#mkiocccentry_process)".
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -1013,7 +1008,7 @@ and try again.
</p> </p>
<p class="leftbar"> <p class="leftbar">
On the other hand, some issues are errors and you **MUST** fix those). On the other hand, some issues are errors and you **MUST** fix those.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -1043,31 +1038,32 @@ rule.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` test. See Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` tests. See
the [guidelines](next/guidelines.html) for more details on this tool. the [guidelines on txzchk&lpar;1&rpar;](next/guidelines.html#txzchk) for more details on this tool.
</p> </p>
<p class="leftbar"> <p class="leftbar">
**IMPORTANT**: Make **SURE** you have the most recent version of the **IMPORTANT**: Make **SURE** you have the most recent version of the
`mkiocccentry` toolkit! Not doing so will put you at a great risk of violating `mkiocccentry` toolkit! Not doing so will put you at a great risk of violating
this rule! See the this rule! See the
FAQ on "[obtaining the mkiocccentry toolkit](#mkiocccentry)" FAQs on "[obtaining, compiling, installing and using the mkiocccentry toolkit](#mkiocccentry)"
for more details. for more details.
</p> </p>
<p class="leftbar"> <p class="leftbar">
You are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool to form your You are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool to form your
submission's xz compressed tarball. See the [guidelines](next/guidelines.html) for submission's xz compressed tarball. See the [guidelines on
more details on this tool and the [mkiocccentry mkiocccentry&lpar;1&rpar;](next/guidelines.html#mkiocccentry) for
repo](https://github.com/ioccc-src/mkiocccentry). more details on this tool and see the [mkiocccentry
repo](https://github.com/ioccc-src/mkiocccentry) for the toolkit itself.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your entry **MAY** have subdirectories, depending on the depth and total length of Your entry **MAY** have subdirectories, depending on the depth and total length of
the filenames. Certain directories like `.git`, `RCCS`, `CVS` and `.svn` the filenames. Certain directories like `.git`, `RCCS`, `CVS` and `.svn`
(amongst others) are skipped. For more information, see the (amongst others) are skipped. For more information, see the
[guidelines](next/guidelines.html). FAQ on "[subdirectories](#subdirectories)".
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -1081,11 +1077,11 @@ it or any other tool invokes, files in your submission **MUST**:
the exception of files generated by `mkiocccentry(1)` itself, it must have the exception of files generated by `mkiocccentry(1)` itself, it must have
**NO** dot file including `.` itself).</p> **NO** dot file including `.` itself).</p>
* <p class="leftbar">**NOT** contain a path component of: **`..`** (that is, * <p class="leftbar">**NOT** contain a path component of: **`..`** (that is,
**NO** **`..`**).</p> **NO** path component that matches the regular expression **`^..$`**).</p>
* <p class="leftbar">Match the regular expression * <p class="leftbar">Match the regular expression
`^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$` (again, excluding files generated by `^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$` (again, excluding files generated by
`mkiocccentry(1)`).</p> `mkiocccentry(1)`).</p>
* <p class="leftbar">**NOT** have a directory depth > 4.</p> * <p class="leftbar">**NOT** have a directory/file depth > 4.</p>
* <p class="leftbar">**NOT** have a total **path** length > 99 characters.</p> * <p class="leftbar">**NOT** have a total **path** length > 99 characters.</p>
<p class="leftbar"> <p class="leftbar">
@@ -1107,12 +1103,15 @@ tarball.
<p class="leftbar"> <p class="leftbar">
Files and directories in your submission tarball **MUST** be specific Files and directories in your submission tarball **MUST** be specific
permissions and `mkiocccentry(1)` does this for you. In particular: directories permissions and `mkiocccentry(1)` does this for you. In particular: directories
**MUST** be `drwxr-xr-x` (i.e. `0755`), the optional files, not counting **MUST** be `drwxr-xr-x` (i.e. `0755`); the optional files, not counting
`prog.alt.c` (i.e. `try.sh` and `try.alt.sh`), if provided, **MUST** be `prog.alt.c` (i.e. `try.sh` and `try.alt.sh`), if provided, **MUST** be
`-r-xr-xr-x` (i.e. `0555`) and all other files **MUST** be `-r--r--r--` (i.e. `-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e.
`0444`). If the files do not have these permissions, your submission **WILL** `0444`). If any file or directory does not have the correct permissions, your submission **WILL**
be rejected for violating [Rule 17](next/rules.html#rule17)! In addition to be rejected for violating [Rule 17](next/rules.html#rule17)!
`mkiocccentry(1)` creating and copying the directories and files with these </p>
<p class="leftbar">
After `mkiocccentry(1)` creates the directories and copies the files with these
modes, it also verifies them after the fact and if they are not correct it is an modes, it also verifies them after the fact and if they are not correct it is an
**error**. **error**.
</p> </p>
@@ -1166,7 +1165,7 @@ files `.auth.json` and `.info.json`), is 31. This is defined in the macro
`MAX_EXTRA_FILE_COUNT` in `MAX_EXTRA_FILE_COUNT` in
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). See the in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). See the
FAQ on "[how to include additional files](#extra-files)" FAQ on "[what extra files are and how to include more](#extra-files)"
if you need to include more files. if you need to include more files.
</p> </p>
@@ -7085,7 +7084,7 @@ and this may help clarify some aspects of the
The [Copyright and CC BY-SA 4.0 License](#copyright) applies to all The [Copyright and CC BY-SA 4.0 License](#copyright) applies to all
IOCCC content. We use this to help ensure that we can all IOCCC content. We use this to help ensure that we can all
enjoy hat those working on the IOCCC have proper Attribution enjoy that those working on the IOCCC have proper Attribution
including, of course, the IOCCC winners themselves! It is designed including, of course, the IOCCC winners themselves! It is designed
to help ensure that everyone may enjoy the IOCCC. to help ensure that everyone may enjoy the IOCCC.
@@ -7093,7 +7092,7 @@ Jump to: [top](#)
<div id="try_mastodon"> <div id="try_mastodon">
### Q 10.6: What is Mastodon and why does IOCCC use it? ### Q 10.6: What is Mastodon and why does the IOCCC use it?
</div> </div>
The [IOCCC uses Mastodon](https://fosstodon.org/@ioccc) for news updates, The [IOCCC uses Mastodon](https://fosstodon.org/@ioccc) for news updates,
+32 -3
View File
@@ -423,13 +423,18 @@
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh --> <!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: index.md --> <!-- BEFORE: 1st line of markdown file: index.md -->
<div id="suggestions">
<h1 id="suggestions-for-visitors">Suggestions for visitors</h1> <h1 id="suggestions-for-visitors">Suggestions for visitors</h1>
</div>
<p>Explore, under the <strong>Entries</strong> in the <em>topbar</em> menu:</p> <p>Explore, under the <strong>Entries</strong> in the <em>topbar</em> menu:</p>
<ul> <ul>
<li><strong><a href="years.html">Winning Entries</a></strong></li> <li><strong><a href="years.html">Winning Entries</a></strong></li>
<li><strong><a href="authors.html">People who have won</a></strong></li> <li><strong><a href="authors.html">People who have won</a></strong></li>
<li>Other parts of the IOCCC menu</li> <li>Other parts of the IOCCC menu</li>
</ul> </ul>
<div id="menu-help">
</div>
<p>If you see this icon <a href="nojs-menu.html"> <img src="png/hamburger-icon-open.png" <p>If you see this icon <a href="nojs-menu.html"> <img src="png/hamburger-icon-open.png"
alt="hambuger-style menu icon" alt="hambuger-style menu icon"
width=24 height=24></a> in the upper right corner, click on it to display the menu.</p> width=24 height=24></a> in the upper right corner, click on it to display the menu.</p>
@@ -439,7 +444,9 @@ order to activate the pull-down. If this does not work or you prefer to use a
plaintext menu even with JavaScript enabled, you can do so plaintext menu even with JavaScript enabled, you can do so
<a href="nojs-menu.html">here</a>. See also the <a href="nojs-menu.html">here</a>. See also the
FAQ on “<a href="faq.html#menus">website menus</a>”.</p> FAQ on “<a href="faq.html#menus">website menus</a>”.</p>
<div id="obfuscate">
<h1 id="obfuscate-defined">Obfuscate defined:</h1> <h1 id="obfuscate-defined">Obfuscate defined:</h1>
</div>
<p>tr.v. -cated, -cating, -cates. <p>tr.v. -cated, -cating, -cates.
<BR><BR> <BR><BR>
<strong>1a.</strong> To render obscure.<BR> <strong>1a.</strong> To render obscure.<BR>
@@ -448,7 +455,9 @@ FAQ on “<a href="faq.html#menus">website menus</a>”.</p>
<strong>2.</strong> To confuse: his emotions obfuscated his judgment.<BR> <strong>2.</strong> To confuse: his emotions obfuscated his judgment.<BR>
    [LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,<BR>     [LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,<BR>
    to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj.</p>     to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj.</p>
<div id="goals">
<h1 id="goals-of-the-contest">Goals of the Contest</h1> <h1 id="goals-of-the-contest">Goals of the Contest</h1>
</div>
<p>The goals of the IOCCC:</p> <p>The goals of the IOCCC:</p>
<ul> <ul>
<li>To write the most Obscure/Obfuscated C program within the rules.</li> <li>To write the most Obscure/Obfuscated C program within the rules.</li>
@@ -459,12 +468,18 @@ FAQ on “<a href="faq.html#menus">website menus</a>”.</p>
<li>To provide a safe forum for poor C code. :-)</li> <li>To provide a safe forum for poor C code. :-)</li>
<li>To have fun with C!</li> <li>To have fun with C!</li>
</ul> </ul>
<div id="enter">
<div id="participate">
<h1 id="entering-the-contest">Entering the Contest</h1> <h1 id="entering-the-contest">Entering the Contest</h1>
</div>
</div>
<p>View the <a href="status.html">current status of the IOCCC</a> to see if the IOCCC is open for submissions.</p> <p>View the <a href="status.html">current status of the IOCCC</a> to see if the IOCCC is open for submissions.</p>
<p>See the <p>See the
FAQ on “<a href="quick-start.html#enter">how to enter the IOCCC</a>” FAQ on “<a href="quick-start.html#enter">how to enter the IOCCC</a>”
for more information.</p> for more information.</p>
<div id="mastodon">
<h1 id="follow-ioccc-on-mastodon">Follow IOCCC on Mastodon</h1> <h1 id="follow-ioccc-on-mastodon">Follow IOCCC on Mastodon</h1>
</div>
<p>The <a href="https://fosstodon.org/@ioccc">IOCCC uses Mastodon</a> for news updates, <p>The <a href="https://fosstodon.org/@ioccc">IOCCC uses Mastodon</a> for news updates,
announcements, and for various other social media purposes.</p> announcements, and for various other social media purposes.</p>
<p><strong>Please follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a></strong>.</p> <p><strong>Please follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a></strong>.</p>
@@ -472,15 +487,29 @@ announcements, and for various other social media purposes.</p>
<a rel="me" href="https://fosstodon.org/@ioccc">Mastodon</a> <a rel="me" href="https://fosstodon.org/@ioccc">Mastodon</a>
please see the please see the
FAQ on “<a href="faq.html#try_mastodon">What is Mastodon and why does IOCCC use it?</a>”.</p> FAQ on “<a href="faq.html#try_mastodon">What is Mastodon and why does IOCCC use it?</a>”.</p>
<div id="discord">
<div id="chat">
<h1 id="ioccc-discord-server">IOCCC Discord server</h1> <h1 id="ioccc-discord-server">IOCCC Discord server</h1>
</div>
</div>
<p>The IOCCC now has a <a href="https://discord.gg/Wa42Qujwnw">Discord server</a>! <p>The IOCCC now has a <a href="https://discord.gg/Wa42Qujwnw">Discord server</a>!
Fans of the IOCCC, hopeful <strong>IOCCC28</strong> contestants, and past winners of the IOCCC Fans of the IOCCC, hopeful <strong>IOCCC</strong> contestants, and past winners of the IOCCC
are all encouraged to stop by and say hello.</p> are all encouraged to stop by and say hello.</p>
<p>To join, click this link: <p>To join, click this link:
<a href="https://discord.gg/Wa42Qujwnw">https://discord.gg/Wa42Qujwnw</a>.</p> <a href="https://discord.gg/Wa42Qujwnw">https://discord.gg/Wa42Qujwnw</a>.</p>
<div id="disclaimer">
<h1 id="important-disclaimer">Important Disclaimer</h1> <h1 id="important-disclaimer">Important Disclaimer</h1>
<p>IOCCC code is for <strong>educational and entertainment purposes only</strong>. We do <strong>NOT</strong> recommend installing any winning IOCCC entry code. Use code found the IOCCC repo and in the IOCCC website <strong>at your own risk!</strong></p> </div>
<p>The <a href="index.html">IOCCC</a> and the <a href="judges.html">IOCCC judges</a> DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p> <p>IOCCC code is for <strong>educational and entertainment purposes only</strong>. We do <strong>NOT</strong>
recommend installing any winning IOCCC entry code. Use code found the IOCCC repo
and in the IOCCC website <strong>at your own risk!</strong></p>
<p>The <a href="index.html">IOCCC</a> and the <a href="judges.html">IOCCC judges</a> DISCLAIM ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL,
INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.</p>
<!-- <!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved. Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+31 -3
View File
@@ -1,4 +1,6 @@
<div id="suggestions">
# Suggestions for visitors # Suggestions for visitors
</div>
Explore, under the **Entries** in the _topbar_ menu: Explore, under the **Entries** in the _topbar_ menu:
@@ -6,6 +8,8 @@ Explore, under the **Entries** in the _topbar_ menu:
* **[People who have won](authors.html)** * **[People who have won](authors.html)**
* Other parts of the IOCCC menu * Other parts of the IOCCC menu
<div id="menu-help"></div>
If you see this icon <a href="nojs-menu.html"> <img src="png/hamburger-icon-open.png" If you see this icon <a href="nojs-menu.html"> <img src="png/hamburger-icon-open.png"
alt="hambuger-style menu icon" alt="hambuger-style menu icon"
width=24 height=24></a> in the upper right corner, click on it to display the menu. width=24 height=24></a> in the upper right corner, click on it to display the menu.
@@ -18,7 +22,9 @@ plaintext menu even with JavaScript enabled, you can do so
FAQ on "[website menus](faq.html#menus)". FAQ on "[website menus](faq.html#menus)".
<div id="obfuscate">
# Obfuscate defined: # Obfuscate defined:
</div>
tr.v. -cated, -cating, -cates. tr.v. -cated, -cating, -cates.
<BR><BR> <BR><BR>
@@ -30,7 +36,9 @@ tr.v. -cated, -cating, -cates.
&nbsp;&nbsp;&nbsp;&nbsp;to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj. &nbsp;&nbsp;&nbsp;&nbsp;to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj.
<div id="goals">
# Goals of the Contest # Goals of the Contest
</div>
The goals of the IOCCC: The goals of the IOCCC:
@@ -43,7 +51,11 @@ The goals of the IOCCC:
* To have fun with C! * To have fun with C!
<div id="enter">
<div id="participate">
# Entering the Contest # Entering the Contest
</div>
</div>
View the [current status of the IOCCC](status.html) to see if the IOCCC is open for submissions. View the [current status of the IOCCC](status.html) to see if the IOCCC is open for submissions.
@@ -52,7 +64,9 @@ FAQ on "[how to enter the IOCCC](quick-start.html#enter)"
for more information. for more information.
<div id="mastodon">
# Follow IOCCC on Mastodon # Follow IOCCC on Mastodon
</div>
The [IOCCC uses Mastodon](https://fosstodon.org/@ioccc) for news updates, The [IOCCC uses Mastodon](https://fosstodon.org/@ioccc) for news updates,
announcements, and for various other social media purposes. announcements, and for various other social media purposes.
@@ -64,10 +78,14 @@ For more information on
please see the please see the
FAQ on "[What is Mastodon and why does IOCCC use it?](faq.html#try_mastodon)". FAQ on "[What is Mastodon and why does IOCCC use it?](faq.html#try_mastodon)".
<div id="discord">
<div id="chat">
# IOCCC Discord server # IOCCC Discord server
</div>
</div>
The IOCCC now has a [Discord server](https://discord.gg/Wa42Qujwnw)! The IOCCC now has a [Discord server](https://discord.gg/Wa42Qujwnw)!
Fans of the IOCCC, hopeful **IOCCC28** contestants, and past winners of the IOCCC Fans of the IOCCC, hopeful **IOCCC** contestants, and past winners of the IOCCC
are all encouraged to stop by and say hello. are all encouraged to stop by and say hello.
To join, click this link: To join, click this link:
@@ -75,11 +93,21 @@ To join, click this link:
<div id="disclaimer">
# Important Disclaimer # Important Disclaimer
</div>
IOCCC code is for **educational and entertainment purposes only**. We do **NOT** recommend installing any winning IOCCC entry code. Use code found the IOCCC repo and in the IOCCC website **at your own risk!** IOCCC code is for **educational and entertainment purposes only**. We do **NOT**
recommend installing any winning IOCCC entry code. Use code found the IOCCC repo
and in the IOCCC website **at your own risk!**
The [IOCCC](index.html) and the [IOCCC judges](judges.html) DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. The [IOCCC](index.html) and the [IOCCC judges](judges.html) DISCLAIM ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL,
INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
<!-- <!--
+1 -1
View File
@@ -528,7 +528,7 @@ anchors.</p>
<h2 id="please-do-not-use-the-u-html-element">Please do NOT use the <code>&lt;u&gt;</code> HTML element</h2> <h2 id="please-do-not-use-the-u-html-element">Please do NOT use the <code>&lt;u&gt;</code> HTML element</h2>
</div> </div>
</div> </div>
<p>Please <strong>NOT</strong> use the obsolete <code>&lt;u&gt;</code> (<ins><em>underline</em></ins>) HTML element:</p> <p>Please do <strong>NOT</strong> use the obsolete <code>&lt;u&gt;</code> (<ins><em>underline</em></ins>) HTML element:</p>
<pre><code> &lt;u&gt;...&lt;/u&gt; &lt;=== no thank you</code></pre> <pre><code> &lt;u&gt;...&lt;/u&gt; &lt;=== no thank you</code></pre>
<p>Use instead:</p> <p>Use instead:</p>
<pre><code> &lt;ins&gt;...&lt;/ins&gt;</code></pre> <pre><code> &lt;ins&gt;...&lt;/ins&gt;</code></pre>
+1 -1
View File
@@ -179,7 +179,7 @@ Jump to: [top](#)
</div> </div>
</div> </div>
Please **NOT** use the obsolete `<u>` (<ins>_underline_</ins>) HTML element: Please do **NOT** use the obsolete `<u>` (<ins>_underline_</ins>) HTML element:
``` <!---html--> ``` <!---html-->
<u>...</u> <=== no thank you <u>...</u> <=== no thank you
+14 -13
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env make #!/usr/bin/env make
# #
# prog - an example Makefile <<=== change "an example Makefile" to a suitable title for entry # prog - an example Makefile <<=== change "an example Makefile" to a suitable
# title for submission
# #
# Please copy this file into your entry directory under the name: Makefile # Please use this Makefile, renamed as Makefile of course, as the Makefile in
# Modify the resulting Makefile as needed. # your submission. Modify it as needed, including removing this comment and
# other comments we ask you to remove.
############################# #############################
# shell used by this Makefile # shell used by this Makefile
@@ -138,14 +139,10 @@ PROG= prog
OBJ= ${PROG}.o OBJ= ${PROG}.o
TARGET= ${PROG} TARGET= ${PROG}
# If you have alternate code, try something like: # If you have alternate code, uncomment the next two lines and
# remove the rest of the comments:
# ALT_OBJ= ${PROG}.alt.o # ALT_OBJ= ${PROG}.alt.o
# ALT_TARGET= ${PROG}.alt # ALT_TARGET= ${PROG}.alt
#
# or so.
#
# Please remove these comments either way.
#
ALT_OBJ= ALT_OBJ=
ALT_TARGET= ALT_TARGET=
@@ -158,11 +155,14 @@ DATA=
################# #################
all: data ${TARGET} all: data ${TARGET}
@# please remove these comments
@
@# NOTE: only try.sh and try.alt.sh scripts will be made executable in @# NOTE: only try.sh and try.alt.sh scripts will be made executable in
@# the tarball so if you need any scripts that are executable, make sure @# the tarball so if you need any scripts that are executable, make sure
@# to use ${CHMOD} +x on them like: @# to use ${CHMOD} +x on them like:
@# @#
@# ${CHMOD} +x foo.sh @# ${CHMOD} +x foo.sh
@:
.PHONY: all data try clean clobber install .PHONY: all data try clean clobber install
@@ -174,7 +174,7 @@ ${PROG}: ${PROG}.c
# suggested way(s) to run the program # suggested way(s) to run the program
# #
try: ${PROG} ${DATA} try: ${PROG} ${DATA}
@# remove these comments @# please remove these comments
@# notice how we do not assume that . is a component of the $PATH environment variable @# notice how we do not assume that . is a component of the $PATH environment variable
@# you may use the try.sh script if you have one @# you may use the try.sh script if you have one
@# change this next line as needed @# change this next line as needed
@@ -184,14 +184,15 @@ try: ${PROG} ${DATA}
# alternative executable # alternative executable
# #
alt: data ${ALT_TARGET} alt: data ${ALT_TARGET}
@:
${PROG}.alt: ${PROG}.alt.c ${PROG}.alt: ${PROG}.alt.c
${CC} ${CFLAGS} ${PROG}.alt.c -o $@ ${LDFLAGS} ${CC} ${CFLAGS} ${PROG}.alt.c -o $@ ${LDFLAGS}
# suggested way(s) to run alt code, if you include one # suggested way(s) to run alt code, if you include a prog.alt.c
# #
try.alt: ${PROG}.alt ${DATA} try.alt: ${PROG}.alt ${DATA}
@# remove these comments @# please remove these comments
@# notice how we do not assume that . is a component of the $PATH environment variable @# notice how we do not assume that . is a component of the $PATH environment variable
@# you may use the try.alt.sh script if you have one @# you may use the try.alt.sh script if you have one
@# change this next line as needed @# change this next line as needed
+22 -100
View File
@@ -461,7 +461,7 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
</div> </div>
</div> </div>
<p class="leftbar"> <p class="leftbar">
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.42 2025-03-03</strong>. These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.44 2025-03-04</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The markdown form of these guidelines <a href="guidelines.md" The markdown form of these guidelines <a href="guidelines.md"
@@ -537,95 +537,12 @@ considered</strong> provisional <strong>BETA</strong> versions and <strong>may b
before the contest status becomes <strong><a href="../faq.html#open">open</a></strong>. before the contest status becomes <strong><a href="../faq.html#open">open</a></strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
You <strong>MUST</strong> <a href="register.html">register</a> in order to participate in the IOCCC.
You may <a href="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>
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="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>), much 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 you your <strong>Username</strong> and <strong>Initial password</strong> is sent, you
will have 72 hours to <a href="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 <a href="../contact.html">contact an IOCCC judge</a> by email and ask them to reset
your password. Not only is this a hassle for everyone involved, it will
delay your IOCCC registration process, perhaps by a number of days that
<code>egrep(1)</code> would be able to pattern match. By <code>egrep(1)</code>, we refer to the
long standing <strong>UNIX</strong> utility that should just run and <strong>NOT</strong> whine about
the command being allegedly deprecated.
</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 <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 See the
FAQ on “<a href="../quick-start.html#enter">how to register and submit to the IOCCC</a>” 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 for instructions on registering and participating in the IOCCC, as the process
may change from contest to contest. may change from contest to contest.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you have <a href="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>
from an <a href="../judges.html">IOCCC judge</a>, you may upload your submission to
the <a href="https://submit.ioccc.org">submit server</a> <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> 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">
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 un-tarred,
must not exceed <strong>27651*1024</strong> bytes.
</p>
<p class="leftbar">
Your <strong>xz compressed tarball</strong> submission file must pass the tests performed by the current version of <code>txzchk(1)</code>.
</p>
<p class="leftbar">
Your <strong>xz compressed tarball</strong> submission filename must 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 un-tarred, the
resulting directory must pass the checks performed by the current version of <code>chkentry(1)</code>.
</p>
<p class="leftbar">
The resulting <code>prog.c</code> file must 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> must be compatible with what the
current version of the <code>mkiocccentry(1)</code> tool would produce. They must
also 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">
To assist in the formation of the xz compressed tarball for submission, use the To assist in the formation of the xz compressed tarball for submission, use the
<code>mkiocccentry(1)</code> tool as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>. <code>mkiocccentry(1)</code> tool as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.
</p> </p>
@@ -636,7 +553,7 @@ See FAQs regarding:
<ul> <ul>
<li><a href="../faq.html#obtaining_mkiocccentry">obtaining the latest mkiocccentry tools</a></li> <li><a href="../faq.html#obtaining_mkiocccentry">obtaining the latest mkiocccentry tools</a></li>
<li><a href="../faq.html#compiling_mkiocccentry">compiling the mkiocccentry tools</a></li> <li><a href="../faq.html#compiling_mkiocccentry">compiling the mkiocccentry tools</a></li>
<li><a href="../faq.html#installing">installing the mkiocccentry tools</a></li> <li><a href="../faq.html#install">installing the mkiocccentry tools</a></li>
<li><a href="../faq.html#using_mkiocccentry">using the mkiocccentry tools</a></li> <li><a href="../faq.html#using_mkiocccentry">using the mkiocccentry tools</a></li>
</ul> </ul>
</p> </p>
@@ -728,7 +645,7 @@ counted by the IOCCC size tool. This is a <strong>feature</strong>, not a bug!
<p class="leftbar"> <p class="leftbar">
In cases where the above summary and the algorithm implemented by In cases where the above summary and the algorithm implemented by
the IOCCC size tool <code>iocccsize(1)</code> conflict, the algorithm implemented the IOCCC size tool <code>iocccsize(1)</code> conflict, the algorithm implemented
by current version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC judges</a>. by the current version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC judges</a>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
In other words, make sure <code>iocccsize</code> does not flag any issues with your In other words, make sure <code>iocccsize</code> does not flag any issues with your
@@ -789,7 +706,7 @@ While it is <strong>NOT</strong> required, you are allowed to use tools to devel
and test your submission. These tools may include, but are not limited and test your submission. These tools may include, but are not limited
to code generators, code analysis tools, static code analysis tools, to code generators, code analysis tools, static code analysis tools,
runtime analysis tools, machine learning tools, natural language models, runtime analysis tools, machine learning tools, natural language models,
code copilot tools, so-called AI services, large language models, etc. 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 If you do make use of such tools or services, then we <strong>ENCOURAGE you to describe
how you used such tools</strong> in your <code>remarks.md</code> file. how you used such tools</strong> in your <code>remarks.md</code> file.
</p> </p>
@@ -804,7 +721,7 @@ Any submission that fails to compile/build because it requires
an <strong>IDE</strong> will be rejected. an <strong>IDE</strong> will be rejected.
</p> </p>
<p class="leftbar"> <p class="leftbar">
We will use <code>make(1)</code> tool, your <code>Makefile</code>, and other tools found in We will use the <code>make(1)</code> tool, your <code>Makefile</code>, and other tools found in
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a> <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 environments and systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
Specification</a> Specification</a>
@@ -986,15 +903,16 @@ checks described above are still made but through the <code>mkiocccentry(1)</cod
<code>.info.json</code>. These files contain information about the author(s) and about the <code>.info.json</code>. These files contain information about the author(s) and about the
submission. After these files are formed, the <code>chkentry(1)</code> tool will be run on submission. After these files are formed, the <code>chkentry(1)</code> tool will be run on
the submission directory; this tool not only validates the two JSON files the submission directory; this tool not only validates the two JSON files
(running specific checks on them after validating the JSON), but it also (and runs specific checks on them after validating the JSON), but it also
verifies that what is in the manifest in <code>.info.json</code> matches the contents of verifies that what is in the manifest in <code>.info.json</code> matches the contents of
the directory, in addition to other checks. If <code>chkentry(1)</code> fails to validate the directory, in addition to other checks. If <code>chkentry(1)</code> fails to validate
anything at all, your submission <strong>WILL BE</strong> rejected! anything at all, your submission <strong>WILL BE</strong> rejected!
</p> </p>
<p class="leftbar"> <p class="leftbar">
<strong>IMPORTANT</strong>: although <code>chkentry(1)</code> validates the files in the directory, it <strong>IMPORTANT</strong>: although <code>chkentry(1)</code> validates the files in the directory, it
only inspects the contents of the two JSON files; it performs other checks on only inspects the contents of the two JSON files; it performs other kinds of
the other files, and those checks are run on the two JSON files as well. checks on the other files, and those checks are run on the two JSON files as
well.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you submit your own JSON files (other than <code>.auth.json</code> and If you submit your own JSON files (other than <code>.auth.json</code> and
@@ -1105,9 +1023,9 @@ FAQ on “<a href="../faq.html#mkiocccentry_bugs">reporting mkiocccentry bugs</a
</p> </p>
<p class="leftbar"> <p class="leftbar">
As part of its algorithm, <code>txzchk(1)</code> will run <code>fnamchk(1)</code> on the As part of its algorithm, <code>txzchk(1)</code> will run <code>fnamchk(1)</code> on the
<em>tarball</em> to verify that the filename is valid. See the <em>tarball</em> to verify that the <em>filename</em> is valid. See the
FAQ on “<a href="../faq.html#fnamchk">fnamchk</a>” FAQ on “<a href="../faq.html#fnamchk">fnamchk</a>”
and <a href="#fnamchk">fnamchk below</a> for more details on this tool. and the <a href="#fnamchk">fnamchk section</a> below for more details on this tool.
</p> </p>
<p class="leftbar"> <p class="leftbar">
It is beyond the scope of this document to discuss the many tests that It is beyond the scope of this document to discuss the many tests that
@@ -1117,8 +1035,8 @@ page. You might just find a fun option if you do either of these!
</p> </p>
<p class="leftbar"> <p class="leftbar">
Of course, as <code>txzchk</code> does not extract the tarball, it is possible that if you Of course, as <code>txzchk</code> does not extract the tarball, it is possible that if you
manually package your submission tarball, you could still be violating <a href="rules.html#rule17">Rule manually package your submission tarball and/or find and exploit a missing
17</a>. check, you could still be violating <a href="rules.html#rule17">Rule 17</a>.
</p> </p>
<div id="extra-files"> <div id="extra-files">
<h2 id="including-optional-and-extra-files">Including optional and extra files</h2> <h2 id="including-optional-and-extra-files">Including optional and extra files</h2>
@@ -1145,7 +1063,7 @@ directory they will also be counted as an extra file. The <code>.info.json</code
In other words, the actual amount of <strong>EXTRA</strong> files is <strong>31</strong>. In other words, the actual amount of <strong>EXTRA</strong> files is <strong>31</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you use the optional file for something other than their intended use If you use an optional filename for something other than their intended use
in order to get past the file limit, we will consider that an in order to get past the file limit, we will consider that an
abuse of rules. For more details on the optional files, see the abuse of rules. For more details on the optional files, see the
FAQ on the “<a href="../faq.html#try_script">try.sh script system</a>” FAQ on the “<a href="../faq.html#try_script">try.sh script system</a>”
@@ -1291,6 +1209,10 @@ reasons. Again, just update the <code>Makefile</code> and explain it in your <co
See the <a href="#optimiser">optimiser section</a> for details for changing optimiser See the <a href="#optimiser">optimiser section</a> for details for changing optimiser
flags. flags.
</p> </p>
<p class="leftbar">
For more fun when it comes to optimisers breaking code, see
<a href="1986/marshall/compilers.html">1986/marshall/compilers.html</a>.
</p>
<div id="compilers"> <div id="compilers">
<h2 id="default-compiler">Default compiler</h2> <h2 id="default-compiler">Default compiler</h2>
</div> </div>
@@ -1446,7 +1368,7 @@ to:
<p class="leftbar"> <p class="leftbar">
Some compilers have reported this as an error, however, and if you have Some compilers have reported this as an error, however, and if you have
such a compiler you might want to not add it, or at least note in your such a compiler you might want to not add it, or at least note in your
<code>remarks.md</code> file, which OS, OS version, compiler and compiler version for <code>remarks.md</code> file, which OS, OS version, compiler and compiler version
that has such a problem. that has such a problem.
</p> </p>
<div id="macros"> <div id="macros">
@@ -2366,7 +2288,7 @@ FAQ on “<a href="../faq.html#Xorg_deprecated">Xorg being deprecated</a>”)
<li><strong>worst/best abuse of the rules</strong> (or some variation)</li> <li><strong>worst/best abuse of the rules</strong> (or some variation)</li>
<li>(anything else so strange that it deserves an award)</li> <li>(anything else so strange that it deserves an award)</li>
</ul> </ul>
<p>Be do not limit ourselves to this list. For example, a few submissions are so <p>We do not limit ourselves to this list. For example, a few submissions are so
good/bad that they are declared winners at the start of the final round. good/bad that they are declared winners at the start of the final round.
We will invent awards categories for them, if necessary.</p> We will invent awards categories for them, if necessary.</p>
<p>In the final round process, we perform the difficult tasks of <p>In the final round process, we perform the difficult tasks of
@@ -2501,7 +2423,7 @@ Often, winning entries are published in selected magazines from around the
world. Winners have appeared in books (‘<code>The New Hacker's Dictionary</code>’, world. Winners have appeared in books (‘<code>The New Hacker's Dictionary</code>’,
‘<code>Obfuscated C and Other Mysteries</code>’, ‘<code>Pointers On C</code>’, others) and on t-shirts ‘<code>Obfuscated C and Other Mysteries</code>’, ‘<code>Pointers On C</code>’, others) and on t-shirts
(sometimes by the author(s) themselves). There have been multiple classes (sometimes by the author(s) themselves). There have been multiple classes
that have focused in part, on IOCCC winning entries. And More than one winner has been turned that have focused in part, on IOCCC winning entries. And more than one winner has been turned
into a tattoo! into a tattoo!
</p> </p>
<p>Last, but not least, <a href="../authors.html">winners</a> receive international fame and flames! :-)</p> <p>Last, but not least, <a href="../authors.html">winners</a> receive international fame and flames! :-)</p>
@@ -2540,7 +2462,7 @@ Consider joining the IOCCC discord community via this link:
</p> </p>
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>” FAQs on “<a href="../faq.html#mkiocccentry">obtaining, compiling, installing and using the mkiocccentry tools</a>”
and the and the
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>” FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
as that FAQ has important details on as that FAQ has important details on
+24 -117
View File
@@ -49,7 +49,7 @@ Jump to: [top](#)
</div> </div>
<p class="leftbar"> <p class="leftbar">
These [IOCCC guidelines](guidelines.html) are version **28.42 2025-03-03**. These [IOCCC guidelines](guidelines.html) are version **28.44 2025-03-04**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -147,51 +147,6 @@ considered** provisional **BETA** versions and **may be adjusted _AT ANY TIME_**
before the contest status becomes **[open](../faq.html#open)**. before the contest status becomes **[open](../faq.html#open)**.
</p> </p>
<p class="leftbar">
You **MUST** [register](register.html) in order to participate in the IOCCC.
You may [register](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](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**), much later: usually a few days around the time when the contest status
becomes **[open](../faq.html#open)**.
</p>
<p class="leftbar">
Once that email you your **Username** and **Initial password** is sent, you
will have 72 hours to [change your submit server initial password](pw-change.html).
</p>
<p class="leftbar">
If you do not change your **Initial password** in time, you will have
to [contact an IOCCC judge](../contact.html) by email and ask them to reset
your password. Not only is this a hassle for everyone involved, it will
delay your IOCCC registration process, perhaps by a number of days that
`egrep(1)` would be able to pattern match. By `egrep(1)`, we refer to the
long standing **UNIX** utility that should just run and **NOT** whine about
the command being allegedly deprecated.
</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
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"> <p class="leftbar">
See the See the
FAQ on "[how to register and submit to the IOCCC](../quick-start.html#enter)" FAQ on "[how to register and submit to the IOCCC](../quick-start.html#enter)"
@@ -199,61 +154,6 @@ for instructions on registering and participating in the IOCCC, as the process
may change from contest to contest. may change from contest to contest.
</p> </p>
<p class="leftbar">
If you have [registered](register.html) and received by email your
[submit server](https://submit.ioccc.org) **Username** and **Initial password**
from an [IOCCC judge](../judges.html), you may upload your submission to
the [submit server](https://submit.ioccc.org) **ONLY** while the
contest is **[open](../faq.html#open)**.
</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">
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 un-tarred,
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 un-tarred, the
resulting directory must pass the checks performed by the current version of `chkentry(1)`.
</p>
<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>
<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"> <p class="leftbar">
To assist in the formation of the xz compressed tarball for submission, use the To assist in the formation of the xz compressed tarball for submission, use the
`mkiocccentry(1)` tool as found in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). `mkiocccentry(1)` tool as found in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry).
@@ -266,7 +166,7 @@ See FAQs regarding:
<p class="leftbar"> <p class="leftbar">
- [obtaining the latest mkiocccentry tools](../faq.html#obtaining_mkiocccentry) - [obtaining the latest mkiocccentry tools](../faq.html#obtaining_mkiocccentry)
- [compiling the mkiocccentry tools](../faq.html#compiling_mkiocccentry) - [compiling the mkiocccentry tools](../faq.html#compiling_mkiocccentry)
- [installing the mkiocccentry tools](../faq.html#installing) - [installing the mkiocccentry tools](../faq.html#install)
- [using the mkiocccentry tools](../faq.html#using_mkiocccentry) - [using the mkiocccentry tools](../faq.html#using_mkiocccentry)
</p> </p>
@@ -374,7 +274,7 @@ counted by the IOCCC size tool. This is a **feature**, not a bug!
<p class="leftbar"> <p class="leftbar">
In cases where the above summary and the algorithm implemented by In cases where the above summary and the algorithm implemented by
the IOCCC size tool `iocccsize(1)` conflict, the algorithm implemented the IOCCC size tool `iocccsize(1)` conflict, the algorithm implemented
by current version of `iocccsize(1)` is preferred by the [IOCCC judges](../judges.html). by the current version of `iocccsize(1)` is preferred by the [IOCCC judges](../judges.html).
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -449,7 +349,7 @@ While it is **NOT** required, you are allowed to use tools to develop
and test your submission. These tools may include, but are not limited and test your submission. These tools may include, but are not limited
to code generators, code analysis tools, static code analysis tools, to code generators, code analysis tools, static code analysis tools,
runtime analysis tools, machine learning tools, natural language models, runtime analysis tools, machine learning tools, natural language models,
code copilot tools, so-called AI services, large language models, etc. 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 If you do make use of such tools or services, then we **ENCOURAGE you to describe
how you used such tools** in your `remarks.md` file. how you used such tools** in your `remarks.md` file.
</p> </p>
@@ -467,7 +367,7 @@ an **IDE** will be rejected.
</p> </p>
<p class="leftbar"> <p class="leftbar">
We will use `make(1)` tool, your `Makefile`, and other tools found in We will use the `make(1)` tool, your `Makefile`, and other tools found in
[Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
environments and systems that conform to the [Single UNIX environments and systems that conform to the [Single UNIX
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
@@ -703,7 +603,7 @@ Jump to: [top](#)
`.info.json`. These files contain information about the author(s) and about the `.info.json`. These files contain information about the author(s) and about the
submission. After these files are formed, the `chkentry(1)` tool will be run on submission. After these files are formed, the `chkentry(1)` tool will be run on
the submission directory; this tool not only validates the two JSON files the submission directory; this tool not only validates the two JSON files
(running specific checks on them after validating the JSON), but it also (and runs specific checks on them after validating the JSON), but it also
verifies that what is in the manifest in `.info.json` matches the contents of verifies that what is in the manifest in `.info.json` matches the contents of
the directory, in addition to other checks. If `chkentry(1)` fails to validate the directory, in addition to other checks. If `chkentry(1)` fails to validate
anything at all, your submission **WILL BE** rejected! anything at all, your submission **WILL BE** rejected!
@@ -711,8 +611,9 @@ anything at all, your submission **WILL BE** rejected!
<p class="leftbar"> <p class="leftbar">
**IMPORTANT**: although `chkentry(1)` validates the files in the directory, it **IMPORTANT**: although `chkentry(1)` validates the files in the directory, it
only inspects the contents of the two JSON files; it performs other checks on only inspects the contents of the two JSON files; it performs other kinds of
the other files, and those checks are run on the two JSON files as well. checks on the other files, and those checks are run on the two JSON files as
well.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -847,9 +748,9 @@ FAQ on "[reporting mkiocccentry bugs](../faq.html#mkiocccentry_bugs)".
<p class="leftbar"> <p class="leftbar">
As part of its algorithm, `txzchk(1)` will run `fnamchk(1)` on the As part of its algorithm, `txzchk(1)` will run `fnamchk(1)` on the
_tarball_ to verify that the filename is valid. See the _tarball_ to verify that the _filename_ is valid. See the
FAQ on "[fnamchk](../faq.html#fnamchk)" FAQ on "[fnamchk](../faq.html#fnamchk)"
and [fnamchk below](#fnamchk) for more details on this tool. and the [fnamchk section](#fnamchk) below for more details on this tool.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -861,8 +762,8 @@ page. You might just find a fun option if you do either of these!
<p class="leftbar"> <p class="leftbar">
Of course, as `txzchk` does not extract the tarball, it is possible that if you Of course, as `txzchk` does not extract the tarball, it is possible that if you
manually package your submission tarball, you could still be violating [Rule manually package your submission tarball and/or find and exploit a missing
17](rules.html#rule17). check, you could still be violating [Rule 17](rules.html#rule17).
</p> </p>
<div id="extra-files"> <div id="extra-files">
@@ -895,7 +796,7 @@ In other words, the actual amount of **EXTRA** files is **31**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you use the optional file for something other than their intended use If you use an optional filename for something other than their intended use
in order to get past the file limit, we will consider that an in order to get past the file limit, we will consider that an
abuse of rules. For more details on the optional files, see the abuse of rules. For more details on the optional files, see the
FAQ on the "[try.sh script system](../faq.html#try_script)" FAQ on the "[try.sh script system](../faq.html#try_script)"
@@ -1074,6 +975,12 @@ See the [optimiser section](#optimiser) for details for changing optimiser
flags. flags.
</p> </p>
<p class="leftbar">
For more fun when it comes to optimisers breaking code, see
[1986/marshall/compilers.html](1986/marshall/compilers.html).
</p>
<div id="compilers"> <div id="compilers">
## Default compiler ## Default compiler
</div> </div>
@@ -1285,7 +1192,7 @@ to:
<p class="leftbar"> <p class="leftbar">
Some compilers have reported this as an error, however, and if you have Some compilers have reported this as an error, however, and if you have
such a compiler you might want to not add it, or at least note in your such a compiler you might want to not add it, or at least note in your
`remarks.md` file, which OS, OS version, compiler and compiler version for `remarks.md` file, which OS, OS version, compiler and compiler version
that has such a problem. that has such a problem.
</p> </p>
@@ -2396,7 +2303,7 @@ FAQ on "[Xorg being deprecated](../faq.html#Xorg_deprecated)")</p>
* **worst/best abuse of the rules** (or some variation) * **worst/best abuse of the rules** (or some variation)
* (anything else so strange that it deserves an award) * (anything else so strange that it deserves an award)
Be do not limit ourselves to this list. For example, a few submissions are so We do not limit ourselves to this list. For example, a few submissions are so
good/bad that they are declared winners at the start of the final round. good/bad that they are declared winners at the start of the final round.
We will invent awards categories for them, if necessary. We will invent awards categories for them, if necessary.
@@ -2572,7 +2479,7 @@ Often, winning entries are published in selected magazines from around the
world. Winners have appeared in books ('`The New Hacker's Dictionary`', world. Winners have appeared in books ('`The New Hacker's Dictionary`',
'`Obfuscated C and Other Mysteries`', '`Pointers On C`', others) and on t-shirts '`Obfuscated C and Other Mysteries`', '`Pointers On C`', others) and on t-shirts
(sometimes by the author(s) themselves). There have been multiple classes (sometimes by the author(s) themselves). There have been multiple classes
that have focused in part, on IOCCC winning entries. And More than one winner has been turned that have focused in part, on IOCCC winning entries. And more than one winner has been turned
into a tattoo! into a tattoo!
</p> </p>
@@ -2624,7 +2531,7 @@ Consider joining the IOCCC discord community via this link:
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)" FAQs on "[obtaining, compiling, installing and using the mkiocccentry tools](../faq.html#mkiocccentry)"
and the and the
FAQ on "[how to enter the IOCCC](../quick-start.html#enter)" FAQ on "[how to enter the IOCCC](../quick-start.html#enter)"
as that FAQ has important details on as that FAQ has important details on
+167 -162
View File
@@ -461,7 +461,7 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
</div> </div>
</div> </div>
<p class="leftbar"> <p class="leftbar">
These <a href="rules.html">IOCCC rules</a> are version <strong>28.29 2025-03-03</strong>. These <a href="rules.html">IOCCC rules</a> are version <strong>28.30 2025-03-03</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The markdown form of these rules <a href="rules.md" download="rules.md">is The markdown form of these rules <a href="rules.md" download="rules.md">is
@@ -495,28 +495,18 @@ to bar modified sections.
    to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj.</p>     to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="goals"> <div id="goals">
<h1 id="goals-of-the-contest">Goals of the Contest</h1> <h1 id="goals-of-the-ioccc-international-obfuscated-c-code-contest">Goals of the IOCCC (International Obfuscated C Code Contest)</h1>
</div> </div>
<p>The goals of the IOCCC:</p> <p class="leftbar">
<ul> See the <a href="../index.html#goals">IOCCC goals</a>.
<li>To write the most Obscure/Obfuscated C program within the <a href="rules.html">IOCCC rules</a>.</li> </p>
<li>To show the importance of programming style, in an ironic way.</li>
<li>To emphasize the value of perspicuous code by use of negative examples.</li>
<li>To stress C compilers with unusual code.</li>
<li>To illustrate some of the subtleties of the C language.</li>
<li>To provide a safe forum for poor C code. :-)</li>
<li>To have fun with C!</li>
</ul>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="dates"> <div id="dates">
<h1 id="important-ioccc-dates">Important IOCCC dates</h1> <h1 id="important-ioccc-dates">Important IOCCC dates</h1>
</div> </div>
<p class="leftbar"> <p class="leftbar">
This IOCCC runs from <strong>2024-12-29 23:58:13.213455 UTC</strong> to <strong>2025-06-05 04:03:02.010099 UTC</strong>. This IOCCC runs from <strong>2024-12-29 23:58:13.213455 UTC</strong> to <strong>2025-06-05 04:03:02.010099 UTC</strong>.
</p> This IOCCC marks the <strong>40th anniversary</strong> of the contest!
<p class="leftbar">
This contest will enter the <strong><a href="../faq.html#pending">pending</a></strong> state on or about
<strong>2024-12-29 23:58:13.213455 UTC</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
This contest will enter the <strong><a href="../faq.html#open">open</a></strong> state on <strong>2025-03-05 23:19:17.131107 UTC</strong>. This contest will enter the <strong><a href="../faq.html#open">open</a></strong> state on <strong>2025-03-05 23:19:17.131107 UTC</strong>.
@@ -529,24 +519,6 @@ This contest will enter the <strong><a href="../faq.html#judging">judging</a></s
of the above <strong>dates and times may change</strong>! of the above <strong>dates and times may change</strong>!
</p> </p>
<p class="leftbar"> <p class="leftbar">
Those who <a href="register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong>
will receive email with their <a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong> and <strong>Initial password</strong>
from an <a href="../judges.html">IOCCC judge</a> shortly after the contest status becomes <strong><a href="../faq.html#open">open</a></strong>.
</p>
<p class="leftbar">
Once an <a href="../judges.html">IOCCC judge</a> emails you your <strong>Username</strong> and <strong>Initial password</strong>, you
will have 72 hours to <a href="pw-change.html">change your submit server initial password</a>.
If you do not change your <strong>Initial password</strong> in time, you will have to <a href="register.html">re-register</a>.
</p>
<p class="leftbar">
Because it takes time (maybe even a few days) for an <a href="../judges.html">IOCCC judge</a>
to process your registration and email you your initial login and password,
you should <strong>MAKE SURE</strong> you give yourself enough time 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 See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>” FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>”
and the and the
@@ -570,34 +542,36 @@ 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, 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 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. 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 <strong>Nevertheless, <em>even if you do</em> explain this in your <code>remarks.md</code> file
you submission may still be rejected</strong>. you submission may still be rejected</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you use the most recently released official IOCCC submission packaging If you use the most recently released official IOCCC submission packaging tool
tool (hereby referred to as <code>mkiocccentry(1)</code>), which we <strong>STRONGLY (hereby referred to as <code>mkiocccentry(1)</code>), which we <strong>STRONGLY recommend you
recommend you do</strong>, then the <code>mkiocccentry(1)</code> tool will warn you do</strong>, then the <code>mkiocccentry(1)</code> tool will warn you if there appears to be a
if there appears to be a rule violation. The <code>mkiocccentry(1)</code> tool violation in certain rules (not all can be detected). The <code>mkiocccentry(1)</code>
also runs the <code>fnamchk(1)</code>, <code>txzchk(1)</code> and <code>chkentry(1)</code> tools. tool also runs <code>chkentry(1)</code> and <code>txzchk(1)</code>, the latter of which runs
Overriding problems detected by any of these tools comes with a <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. <strong>fair amount of risk</strong> that your submission will be rejected.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you do override a rule violation warning from the <code>mkiocccentry(1)</code> If you do override a rule violation warning from the <code>mkiocccentry(1)</code> or
or related IOCCC tool, or otherwise plan to abuse the rules, then you <strong>MUST CLEARLY another related IOCCC tool, or otherwise plan to abuse the rules, then you
EXPLAIN THE RATIONALE</strong> of why you are attempting to abuse the rules in your <strong>MUST CLEARLY EXPLAIN THE RATIONALE</strong> of why you are attempting to abuse the
<code>remarks.md</code> file. <strong><em>Even if you do</em> explain this in your <code>remarks.md</code> file rules in your <code>remarks.md</code> file. <strong><em>Even if you do</em> explain this in your
your submission may still be rejected</strong>. <code>remarks.md</code> file your submission may still be rejected</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
<strong>HINT:</strong> If you do submit such a rule abusing / rule violating <strong>HINT:</strong> If you do submit such a rule abusing / rule violating
submission, then consider also submitting an alternate version in a submission, then consider also submitting an alternate version in a
different submission server slot that does <strong>NOT</strong> violate the rules <strong>different submission</strong> server slot that does <strong>NOT</strong> violate the rules
in case your rule abuse excuse is rejected. If you do submit such an in case your rule abuse excuse is rejected.
alternate non-rule abusing version, <strong>PLEASE</strong> indicate that in your </p>
<code>remarks.md</code> file of your non-rule abusing version so that the <a href="../judges.html">IOCCC <p class="leftbar">
judges</a> do not think you uploaded a duplicate into a <strong>IMPORTANT</strong>: if you do submit such an alternate non-rule abusing version,
wrong slot by mistake. <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>
<p class="leftbar"> <p class="leftbar">
Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
@@ -636,7 +610,23 @@ by some people. :-)
<div id="rule2"> <div id="rule2">
<h2 id="rule-2">Rule 2</h2> <h2 id="rule-2">Rule 2</h2>
</div> </div>
<p><a href="#rule2">Rule 2</a> requires that your submission satisfy <strong>BOTH</strong> <a href="#rule2a">Rule 2a</a> and <a href="#rule2b">Rule 2b</a>.</p> <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
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>
<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
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"> <p class="leftbar">
See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a href="#rule17">Rule 17</a>. See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a href="#rule17">Rule 17</a>.
</p> </p>
@@ -647,17 +637,6 @@ See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a hr
<p class="leftbar"> <p class="leftbar">
The size of your program source <strong>should NOT exceed 4993 bytes</strong>. The size of your program source <strong>should NOT exceed 4993 bytes</strong>.
</p> </p>
<p class="leftbar">
You may check your code with respect to <a href="#rule2">Rule 2</a> prior to submission by giving the filename
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">
Alternatively, you may use the <code>mkiocccentry(1)</code> option <code>-d</code> to verify that
things check out okay (i.e. no problems are detected) without having to answer
all the questions. See the
FAQ on “<a href="../faq.html#mkiocccentry_test">how to rule test your submission</a>” for more details.
</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule2b"> <div id="rule2b">
<h2 id="rule-2b">Rule 2b</h2> <h2 id="rule-2b">Rule 2b</h2>
@@ -668,20 +647,6 @@ 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>. <code>iocccsize(1)</code>), the value printed <strong>should NOT exceed <em>2503</em></strong>.
</p> </p>
<p class="leftbar"> <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">
If you use the <code>mkiocccentry(1)</code> tool, which we <strong>STRONGLY recommend
you do</strong> then <code>mkiocccentry(1)</code> will invoke the <code>iocccsize(1)</code> checks before packaging
your submission.
</p>
<p class="leftbar">
You may check your code prior to submission by giving the filename
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">
See also <a href="#rule17">Rule 17</a>. See also <a href="#rule17">Rule 17</a>.
</p> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
@@ -702,16 +667,16 @@ perhaps as much as a few days, for your registration to be processed and for tha
<p class="leftbar"> <p class="leftbar">
Those who <a href="register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong> Those who <a href="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> will receive their email (containing their <a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong>
and <strong>Initial password</strong>), much later: usually a few days around the time when the contest status 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>. becomes <strong><a href="../faq.html#open">open</a></strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Once that email you your <strong>Username</strong> and <strong>Initial password</strong> is sent, you Once that email with your <strong>Username</strong> and <strong>Initial password</strong> is sent, you
will have 72 hours to <a href="pw-change.html">change your submit server initial password</a>. will have <strong>72 hours</strong> to <a href="pw-change.html">change your submit server initial password</a>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you do not change your <strong>Initial password</strong> in time, you will have If you do not change your <strong>Initial password</strong> in time, <strong>you will have
to <a href="../contact.html">contact an IOCCC judge</a> by email and ask them to reset to <a href="../contact.html">contact an IOCCC judge</a></strong> by email and ask them to reset
your password. Not only is this a hassle for everyone involved, it will your password. Not only is this a hassle for everyone involved, it will
delay your IOCCC registration process, perhaps by a number of days that delay your IOCCC registration process, perhaps by a number of days that
<code>egrep(1)</code> would be able to pattern match. By <code>egrep(1)</code>, we refer to the <code>egrep(1)</code> would be able to pattern match. By <code>egrep(1)</code>, we refer to the
@@ -755,15 +720,19 @@ then modify your submission’s <code>Makefile</code> to <strong>COPY</strong> (
accordingly. accordingly.
</p> </p>
<p class="leftbar"> <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>. See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.
</p> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule5"> <div id="rule5">
<h2 id="rule-5">Rule 5</h2> <h2 id="rule-5">Rule 5</h2>
</div> </div>
<p>Your submission must <strong>NOT</strong> modify the content or filename of any part of your <p>Your submission must <strong>NOT</strong> modify the <em>content</em> <strong>OR</strong> <em>filename</em> of <strong>ANY</strong>
original submission including, but not limited to <code>prog.c</code>, the <code>Makefile</code> part of your original submission including, but not limited to <code>prog.c</code>, the
as well as any data files you submit.</p> <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> <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> first copy the file to a new filename and then modify that copy.</p>
<p class="leftbar"> <p class="leftbar">
@@ -773,7 +742,7 @@ your <code>Makefile</code> to form that copy.
<p class="leftbar"> <p class="leftbar">
If you do make a copy of a submission file, <strong>PLEASE</strong> be sure that 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 the <code>clobber</code> rule of your <code>Makefile</code> removes that copy in order to
in order restore your submission to its original submission state. restore your submission to its original submission state.
</p> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule6"> <div id="rule6">
@@ -795,18 +764,18 @@ I am not a rule, I am a <code>free(void *human);</code> ‼️
The obfuscated C program must be your own original work. The obfuscated C program must be your own original work.
</p> </p>
<p class="leftbar"> <p class="leftbar">
You (the author(s)) must own the contents of your submission OR You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
you must have permission from the owner(s) to submit their content. you <strong>MUST</strong> have permission from the owner(s) to submit their content.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you submit any content that is owned by others, you <strong>MUST 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 detail that ownership</strong> (i.e., who owns what) <strong><em>AND</em> document the
permission you obtained</strong> in your <code>remarks.md</code> file. permission you obtained from them</strong>, in your <code>remarks.md</code> file.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Please note that <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> Please note that the tools in <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
are <strong>NOT</strong> original works, unless of course you’re the respective authors, in repo</a> are <strong>NOT</strong> original works,
which case they are original. :-) unless of course you’re the original authors, in which case they are original. :-)
</p> </p>
<p class="leftbar"> <p class="leftbar">
Nevertheless tools such as those listed are <strong>NOT</strong> obfuscated. If submitted, they Nevertheless tools such as those listed are <strong>NOT</strong> obfuscated. If submitted, they
@@ -814,10 +783,11 @@ would probably violate a number of rules. :-)
</p> </p>
<p class="leftbar"> <p class="leftbar">
<ul> <ul>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c">mkioccentry(1)</a></li> <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">iooccsize(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/chkentry.c">chkentry(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/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/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/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> <li><a href="https://github.com/lcn2/dyn_array">dyn_array repo as cloned by the mkiocccentry repo</a></li>
@@ -826,13 +796,13 @@ would probably violate a number of rules. :-)
<p class="leftbar"> <p class="leftbar">
The IOCCC has a rich history of remarkable winning entries created by The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code. authors who skillfully employed various techniques to develop their code.
While it is <strong>NOT</strong> required, you are allowed to use tools to develop 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 and test your submission. These tools may include, but are not limited
to code generators, code analysis tools, static code analysis tools, to code generators, code analysis tools, static code analysis tools,
runtime analysis tools, machine learning tools, natural language models, runtime analysis tools, machine learning tools, natural language models,
code copilot tools, so-called AI services, large language models, etc. 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 If you do make use of such tools or services, then we <strong>ENCOURAGE you to describe
how you used such tools</strong> in your <code>remarks.md</code> file. what tools and how you used those tools</strong>, in your <code>remarks.md</code> file.
</p> </p>
<p class="leftbar"> <p class="leftbar">
See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>. See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.
@@ -846,25 +816,27 @@ Submissions may only be uploaded to the <a href="https://submit.ioccc.org">IOCCC
while the contest is <strong><a href="../faq.html#open">open</a></strong>. while the contest is <strong><a href="../faq.html#open">open</a></strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you have <a href="register.html">registered</a> and received by email your If you have <a href="register.html">registered</a> and received by email your <a href="https://submit.ioccc.org">submit
<a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong> and <strong>Initial password</strong> server</a> <strong>Username</strong> and <strong>Initial password</strong> you may
from an <a href="../judges.html">IOCCC judge</a>, you may upload your submission to upload your submission to the <a href="https://submit.ioccc.org">submit server</a> but
the <a href="https://submit.ioccc.org">submit server</a> <strong>ONLY</strong> while the <strong>ONLY</strong> while the contest is <strong><a href="../faq.html#open">open</a></strong>.
contest is <strong><a href="../faq.html#open">open</a></strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The <a href="https://submit.ioccc.org">submit server</a>, in accordance with <a href="rules.html#rule17">Rule 17</a>, The <a href="https://submit.ioccc.org">submit server</a>, in accordance with <a href="rules.html#rule17">Rule
places a limit of <strong>3999971</strong> bytes on the size of your upload. 17</a>, places a limit of <strong>3999971</strong> bytes on the size of your
upload.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Once the contest is in the <strong><a href="../faq.html#judging">judging</a></strong> state (or 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>), you may <strong>NOT</strong> upload submissions. <strong><a href="../faq.html#closed">closed</a></strong> state), you may <strong>NOT</strong> upload submissions.
</p> </p>
<p class="leftbar"> <p class="leftbar">
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, While the contest is <strong><a href="../faq.html#open">open</a></strong> or in the
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 <strong><a href="../faq.html#judging">judging</a></strong> state, the <a href="../judges.html">IOCCC judges</a>
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 of your submission to
<strong>MAY</strong> (but are not required to) modify the slot comment accordingly. 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>
<p class="leftbar"> <p class="leftbar">
You are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool You are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool
@@ -872,13 +844,14 @@ as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>. to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
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>. The <a href="https://submit.ioccc.org">submit server</a> will become active when the
Until the contest status becomes <strong><a href="../faq.html#open">open</a></strong>, contest is <strong><a href="../faq.html#open">open</a></strong>. Until the contest status becomes
the <a href="https://submit.ioccc.org">submit server</a> may be offline and/or unresponsive. <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>
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>” 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. for more information about the <code>mkiocccentry(1)</code> tool.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -897,13 +870,13 @@ and including <strong>10.000000</strong> (ten in base 10) submissions <strong>PE
</p> </p>
<p><strong>Each submission <em>must be submitted separately</em></strong>.</p> <p><strong>Each submission <em>must be submitted separately</em></strong>.</p>
<p class="leftbar"> <p class="leftbar">
If this seems unreasonable we suggest you wait until the next contest, and in If this seems unreasonable we suggest you wait until the next contest and in
the interim ponder this modified quote purportedly said by Bill Gates: the interim ponder this (modified or not) quote said by Bill Gates:
</p> </p>
<p class="leftbar"> <p class="leftbar">
<blockquote> <blockquote>
<p>10 submissions ought to be enough for anybody. :-)</p> <p>640K submissions ought to be enough for anybody.</p>
<p>– Bill Gates s/640K/10/ (allegedly)</p> <p>– Bill Gates s/640K/10/ (allegedly :-) )</p>
</blockquote> </blockquote>
</p> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
@@ -922,6 +895,14 @@ DISCOURAGED</strong>. We do not guarantee these functions will behave as
you expect on our test platforms. If your program needs special you expect on our test platforms. If your program needs special
permissions you <strong>MUST</strong> document this fact, and explain why permissions you <strong>MUST</strong> document this fact, and explain why
it is needed in your submission’s <code>remarks.md</code> file.</p> 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
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>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule12"> <div id="rule12">
<h2 id="rule-12">Rule 12</h2> <h2 id="rule-12">Rule 12</h2>
@@ -950,7 +931,7 @@ Fun fact: the fear of the number 13 is called <em>triskaidekaphobia</em>.
</div> </div>
<p class="leftbar"> <p class="leftbar">
Any C source that fails to compile because of lines with trailing Any C source that fails to compile because of lines with trailing
control-M’s (i.e., lines with a trailing byte <code>015</code>) <strong><em>might</em></strong> be rejected. control-M’s (i.e., lines with a trailing byte <code>015</code>) <strong>might</strong> be rejected.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>, <code>Makefile</code>, or Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>, <code>Makefile</code>, or
@@ -958,14 +939,16 @@ Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>
byte <code>012</code>) character. byte <code>012</code>) character.
</p> </p>
<p class="leftbar"> <p class="leftbar">
As we do <strong>NOT</strong> DOS, please also be sure that the <code>Makefile</code> and 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. <code>remarks.md</code> files end in final newline (i.e., byte <code>012</code>) character.
</p> </p>
<p class="leftbar"> <p class="leftbar">
You are permitted, in order to try and squeeze your <code>prog.c</code> under 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> 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. 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. 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> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule15"> <div id="rule15">
@@ -989,15 +972,15 @@ for details.
</div> </div>
<p>Submissions that are similar to previous winning IOCCC entries are discouraged.</p> <p>Submissions that are similar to previous winning IOCCC entries are discouraged.</p>
<p class="leftbar"> <p class="leftbar">
You are allowed to re-submit to a later contest, a submission that 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 did not win the IOCCC. If you do so, then you would be well advised
to try and enhance and improve your submission. to try and enhance and improve your submission.
If you do re-submit something that did not previously win, then 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 you are <strong>encouraged</strong> to mention this in your <code>remarks.md</code> file
as this sometimes helps. as this <strong>sometimes</strong> helps.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Re-submitting an improved submission that did not become an Resubmitting an improved submission that did not become an
IOCCC winning entry is a <strong>time honored</strong> tradition of the IOCCC. 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 There are some IOCCC winning entries that were submitted to multiple contests
before they were improved enough to “climb over” (as the expression before they were improved enough to “climb over” (as the expression
@@ -1009,36 +992,40 @@ goes) all the other submissions for a given contest.
</div> </div>
<p class="leftbar"> <p class="leftbar">
Your submission must be in the form of a <strong>xz compressed tarball</strong> that Your submission must be in the form of a <strong>xz compressed tarball</strong> that
the current released version of the <code>mkiocccentry(1)</code> tool would generate. 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 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, by <code>mkiocccentry(1)</code> including but <strong>NOT LIMITED</strong> to their names, count,
path length and directory tree depth. path length, directory tree depth and permissions.
</p> </p>
<p class="leftbar"> <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. Your <strong>xz compressed tarball</strong> must be larger than <strong>0</strong> bytes and no larger
than <strong>3999971</strong> bytes.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The sum of the byte lengths of all files, after the <strong>xz compressed tarball</strong> is un-tarred, The sum of the byte lengths of all files, after the <strong>xz compressed tarball</strong> is untarred,
must not exceed <strong>27651*1024</strong> bytes. must <strong>NOT</strong> exceed <code>27651*1024</code> bytes.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your <strong>xz compressed tarball</strong> submission file must pass the tests performed by the current version of <code>txzchk(1)</code>. 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>
<p class="leftbar"> <p class="leftbar">
Your <strong>xz compressed tarball</strong> submission filename must pass the tests performed by the current version of <code>fnamchk(1)</code>. 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>
<p class="leftbar"> <p class="leftbar">
When your <strong>xz compressed tarball</strong> submission file is un-tarred, the When your <strong>xz compressed tarball</strong> submission file is untarred, the
resulting directory must pass the checks performed by the current version of <code>chkentry(1)</code>. resulting <em>directory</em> <strong>MUST</strong> pass the checks performed by the current version
of <code>chkentry(1)</code>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The resulting <code>prog.c</code> file must pass the <a href="#rule2">Rule 2</a> size checks performed by the current 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>. version of <code>iocccsize(1)</code>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The <code>.auth.json</code> and <code>.info.json</code> must be compatible with what the 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 must current version of the <code>mkiocccentry(1)</code> tool would produce. They <strong>MUST
also pass the tests performed by the current version of <code>chkentry(1)</code>. ALSO</strong> pass the tests performed by the current version of <code>chkentry(1)</code>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The required <code>Makefile</code> must <strong>NOT</strong> be empty. The required <code>Makefile</code> must <strong>NOT</strong> be empty.
@@ -1047,8 +1034,18 @@ The required <code>Makefile</code> must <strong>NOT</strong> be empty.
The required <code>remarks.md</code> must <strong>NOT</strong> be empty. The required <code>remarks.md</code> must <strong>NOT</strong> be empty.
</p> </p>
<p class="leftbar"> <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>. 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>
<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.
</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> <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"> <p class="leftbar">
Let the current version of the <code>mkiocccentry(1)</code> tool form your <strong>xz Let the current version of the <code>mkiocccentry(1)</code> tool form your <strong>xz
@@ -1063,7 +1060,7 @@ submit server</a> and/or the <a href="../judges.html">IOCCC Judges</a>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on the “<a href="../faq.html#mkiocccentry">mkiocccentry tool</a> FAQ on the “<a href="../faq.html#mkiocccentry">mkiocccentry toolkit</a>
for how to obtain and use the above mentioned tools. for how to obtain and use the above mentioned tools.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -1093,16 +1090,20 @@ 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>. <a href="https://www.markdownguide.org/basic-syntax/">Markdown format</a>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
We currently use <a href="https://pandoc.org">pandoc(1)</a> to automatically convert markdown to HTML. We currently use <a href="https://pandoc.org">pandoc(1)</a> to automatically
Please try to avoid submitting an HTML file translation to any markdown file. convert markdown to HTML. Please try to avoid submitting an HTML file
If you <strong>MUST</strong> submit such an HTML translation, <strong>PLEASE</strong> mention this in your <code>remarks.md</code> 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>
<p class="leftbar"> <p class="leftbar">
For any submission that wins the contest, we modify your <code>remarks.md</code> file and 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 rename it as <code>README.md</code> and then use <a href="https://pandoc.org">pandoc(1)</a>
the <code>index.html</code> file in the top level directory of your submission. to generate the <code>index.html</code> file in the top level directory of your submission.
For this reason, please do <strong>NOT</strong> submit a <code>README.md</code> file, <strong>NOR</strong> an <code>index.html</code> For this reason, <code>mkiocccentry(1)</code> will <strong>NOT</strong> package such files (in the top
file in the top level directory where your <code>remarks.md</code> file resides. level submission directory) and both <code>txzchk(1)</code> and <code>chkentry(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>
<p class="leftbar"> <p class="leftbar">
See the <a href="https://www.markdownguide.org/cheat-sheet/">Markdown Cheat Sheet</a> See the <a href="https://www.markdownguide.org/cheat-sheet/">Markdown Cheat Sheet</a>
@@ -1119,16 +1120,18 @@ Basics</a> for
information on the markdown format. information on the markdown format.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Please see our FAQ “<a href="../faq.html#remarks_md">remarks.md</a>” and the <a href="../markdown.html">IOCCC markdown <strong>PLEASE</strong> see our
guidelines</a> for additional markdown guidance. 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> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule20"> <div id="rule20">
<h2 id="rule-20">Rule 20</h2> <h2 id="rule-20">Rule 20</h2>
</div> </div>
<p>The how to build instructions must be in Makefile format. See <a href="../faq.html#make_compatibility">the FAQ about <p>The how to build instructions must be in GNU Makefile format. See the
make(1) compatibility the IOCCC FAQ about “<a href="../faq.html#make_compatibility">make(1) compatibility the IOCCC supports</a>
supports</a> for more details.</p> for more details.</p>
<p class="leftbar"> <p class="leftbar">
You are <strong>ENCOURAGED</strong> to use the You are <strong>ENCOURAGED</strong> to use the
Makefile example, renamed as <code>Makefile</code> of course, for help in constructing your Makefile example, renamed as <code>Makefile</code> of course, for help in constructing your
@@ -1141,15 +1144,15 @@ C source file must be called <code>prog.c</code>.</p>
<code>${CPP}</code>.</p> <code>${CPP}</code>.</p>
<p>Do <strong>NOT</strong> assume that <code>.</code> (the current directory) is in the <code>$PATH</code>.</p> <p>Do <strong>NOT</strong> assume that <code>.</code> (the current directory) is in the <code>$PATH</code>.</p>
<p class="leftbar"> <p class="leftbar">
When <code>make clobber</code> is invoked, we request that submission directory be restored 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 to its original submission state. For example, any temporary files
created during the build process, or during execution should be created during the build process, or during execution should be
removed by the <code>clobber</code> rule. removed by the <code>clobber</code> rule.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with <code>bash(1)</code> Your <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with <code>bash(1)</code>
and GNU <code>make(1)</code>. You are <strong>ENCOURAGED</strong> to use <code>SHELL= bash</code> in <strong>AND</strong> GNU <code>make(1)</code>. You are <strong>ENCOURAGED</strong> to use <code>SHELL= bash</code> in
your <code>Makefile</code>. your <code>Makefile</code>. Please add a space between the <code>=</code> and the value.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
@@ -1162,15 +1165,17 @@ available in the <code>$PATH</code> search path.
<div id="rule21"> <div id="rule21">
<h2 id="rule-21">Rule 21</h2> <h2 id="rule-21">Rule 21</h2>
</div> </div>
<p>Your submission <strong>MUST NOT</strong> create or modify files <strong>ABOVE</strong> the current directory <p class="leftbar">
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 <em>with the exception of</em> the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your submission
<strong>MAY</strong> create subdirectories below the current directory, or in <code>/tmp</code>, <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 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> directory name or filename you create.
</p>
<p class="leftbar"> <p class="leftbar">
If you do create files and directories, <strong>PLEASE</strong> be sure that 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 the <code>clobber</code> rule of your <code>Makefile</code> removes such created files
in order restore your submission to its original submission state. in order to restore your submission to its original submission state.
</p> </p>
<p class="leftbar"> <p class="leftbar">
See also <a href="#rule5">Rule 5</a>. See also <a href="#rule5">Rule 5</a>.
@@ -1209,7 +1214,7 @@ do.
<h2 id="rule-25">Rule 25</h2> <h2 id="rule-25">Rule 25</h2>
</div> </div>
<p class="leftbar"> <p class="leftbar">
The <a href="rules.html">IOCCC rule set</a> needs more than 5^2 rules: see <a href="#rule26">Rule 26</a>. The <a href="rules.html">IOCCC rule set</a> needs more than <code>5^2</code> rules: see <a href="#rule26">Rule 26</a>.
</p> </p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="rule26"> <div id="rule26">
@@ -1253,7 +1258,7 @@ For questions or comments about the contest, see <a href="../contact.html">Conta
may (and <strong>often do</strong>) change from year to year. may (and <strong>often do</strong>) change from year to year.
</p> </p>
<p class="leftbar"> <p class="leftbar">
<strong>PLEASE</strong> be sure you have the current <a href="rules.html">IOCCC rules</a> and <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. <a href="guidelines.html">IOCCC guidelines</a> prior to submitting to the contest.
</p> </p>
<p>See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p> <p>See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
@@ -1274,7 +1279,7 @@ Consider joining the IOCCC discord community via this link:
</p> </p>
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>” FAQ on “<a href="../faq.html#mkiocccentry">obtaining, compiling, installing and using the mkiocccentry tools</a>”
and the and the
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>” FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
as that FAQ has important details on as that FAQ has important details on
+175 -179
View File
@@ -51,7 +51,7 @@ Jump to: [top](#)
</div> </div>
<p class="leftbar"> <p class="leftbar">
These [IOCCC rules](rules.html) are version **28.29 2025-03-03**. These [IOCCC rules](rules.html) are version **28.30 2025-03-03**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -102,19 +102,12 @@ Jump to: [top](#)
<div id="goals"> <div id="goals">
# Goals of the Contest # Goals of the IOCCC (International Obfuscated C Code Contest)
</div> </div>
The goals of the IOCCC: <p class="leftbar">
See the [IOCCC goals](../index.html#goals).
* To write the most Obscure/Obfuscated C program within the [IOCCC rules](rules.html). </p>
* To show the importance of programming style, in an ironic way.
* To emphasize the value of perspicuous code by use of negative examples.
* To stress C compilers with unusual code.
* To illustrate some of the subtleties of the C language.
* To provide a safe forum for poor C code. :-)
* To have fun with C!
Jump to: [top](#) Jump to: [top](#)
@@ -125,11 +118,7 @@ Jump to: [top](#)
<p class="leftbar"> <p class="leftbar">
This IOCCC runs from **2024-12-29 23:58:13.213455 UTC** to **2025-06-05 04:03:02.010099 UTC**. This IOCCC runs from **2024-12-29 23:58:13.213455 UTC** to **2025-06-05 04:03:02.010099 UTC**.
</p> This IOCCC marks the **40th anniversary** of the contest!
<p class="leftbar">
This contest will enter the **[pending](../faq.html#pending)** state on or about
**2024-12-29 23:58:13.213455 UTC**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -145,27 +134,6 @@ This contest will enter the **[judging](../faq.html#judging)** state on **2025-0
of the above **dates and times may change**! of the above **dates and times may change**!
</p> </p>
<p class="leftbar">
Those who [register](register.html) while the contest status is **[pending](../faq.html#pending)**
will receive email with their [submit server](https://submit.ioccc.org) **Username** and **Initial password**
from an [IOCCC judge](../judges.html) shortly after the contest status becomes **[open](../faq.html#open)**.
</p>
<p class="leftbar">
Once an [IOCCC judge](../judges.html) emails you your **Username** and **Initial password**, you
will have 72 hours to [change your submit server initial password](pw-change.html).
If you do not change your **Initial password** in time, you will have to [re-register](register.html).
</p>
<p class="leftbar">
Because it takes time (maybe even a few days) for an [IOCCC judge](../judges.html)
to process your registration and email you your initial login and password,
you should **MAKE SURE** you give yourself enough time 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"> <p class="leftbar">
See the See the
FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)" FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)"
@@ -197,37 +165,39 @@ 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, rules, then you **MUST CLEARLY EXPLAIN THE RATIONALE** in your `remarks.md` file,
as to why you think your rule abuse should be allowed, and as to why you think 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. your submission should not be rejected for a rule violation.
**Nevertheless, _Even if you do_ explain this in your `remarks.md` file **Nevertheless, _even if you do_ explain this in your `remarks.md` file
you submission may still be rejected**. you submission may still be rejected**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you use the most recently released official IOCCC submission packaging If you use the most recently released official IOCCC submission packaging tool
tool (hereby referred to as `mkiocccentry(1)`), which we **STRONGLY (hereby referred to as `mkiocccentry(1)`), which we **STRONGLY recommend you
recommend you do**, then the `mkiocccentry(1)` tool will warn you do**, then the `mkiocccentry(1)` tool will warn you if there appears to be a
if there appears to be a rule violation. The `mkiocccentry(1)` tool violation in certain rules (not all can be detected). The `mkiocccentry(1)`
also runs the `fnamchk(1)`, `txzchk(1)` and `chkentry(1)` tools. tool also runs `chkentry(1)` and `txzchk(1)`, the latter of which runs
Overriding problems detected by any of these tools comes with a `fnamchk(1)`. Overriding problems detected by any of these tools comes with a
**fair amount of risk** that your submission will be rejected. **fair amount of risk** that your submission will be rejected.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you do override a rule violation warning from the `mkiocccentry(1)` If you do override a rule violation warning from the `mkiocccentry(1)` or
or related IOCCC tool, or otherwise plan to abuse the rules, then you **MUST CLEARLY another related IOCCC tool, or otherwise plan to abuse the rules, then you
EXPLAIN THE RATIONALE** of why you are attempting to abuse the rules in your **MUST CLEARLY EXPLAIN THE RATIONALE** of why you are attempting to abuse the
`remarks.md` file. **_Even if you do_ explain this in your `remarks.md` file rules in your `remarks.md` file. **_Even if you do_ explain this in your
your submission may still be rejected**. `remarks.md` file your submission may still be rejected**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
**HINT:** If you do submit such a rule abusing / rule violating **HINT:** If you do submit such a rule abusing / rule violating
submission, then consider also submitting an alternate version in a submission, then consider also submitting an alternate version in a
different submission server slot that does **NOT** violate the rules **different submission** server slot that does **NOT** violate the rules
in case your rule abuse excuse is rejected. If you do submit such an in case your rule abuse excuse is rejected.
alternate non-rule abusing version, **PLEASE** indicate that in your </p>
`remarks.md` file of your non-rule abusing version so that the [IOCCC <p class="leftbar">
judges](../judges.html) do not think you uploaded a duplicate into a **IMPORTANT**: if you do submit such an alternate non-rule abusing version,
wrong slot by mistake. **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>
<p class="leftbar"> <p class="leftbar">
@@ -285,7 +255,30 @@ Jump to: [top](#)
## Rule 2 ## Rule 2
</div> </div>
[Rule 2](#rule2) requires that your submission satisfy **BOTH** [Rule 2a](#rule2a) and [Rule 2b](#rule2b). [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"> <p class="leftbar">
See also [Rule 2a](#rule2a), [Rule 2b](#rule2b), and [Rule 17](#rule17). See also [Rule 2a](#rule2a), [Rule 2b](#rule2b), and [Rule 17](#rule17).
@@ -302,22 +295,6 @@ Jump to: [top](#)
The size of your program source **should NOT exceed 4993 bytes**. The size of your program source **should NOT exceed 4993 bytes**.
</p> </p>
<p class="leftbar">
You may check your code with respect to [Rule 2](#rule2) prior to submission by giving the filename
as a command like argument to the `iocccsize(1)` tool. For example:
</p>
``` <!---sh-->
iocccsize prog.c
```
<p class="leftbar">
Alternatively, you may use the `mkiocccentry(1)` option `-d` to verify that
things check out okay (i.e. no problems are detected) without having to answer
all the questions. See the
FAQ on "[how to rule test your submission](../faq.html#mkiocccentry_test)" for more details.
</p>
Jump to: [top](#) Jump to: [top](#)
@@ -331,31 +308,10 @@ the latest version of the official IOCCC size tool (hereby referred to as
`iocccsize(1)`), the value printed **should NOT exceed _2503_**. `iocccsize(1)`), the value printed **should NOT exceed _2503_**.
</p> </p>
<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">
If you use the `mkiocccentry(1)` tool, which we **STRONGLY recommend
you do** then `mkiocccentry(1)` will invoke the `iocccsize(1)` checks before packaging
your submission.
</p>
<p class="leftbar">
You may check your code prior to submission by giving the filename
as a command like argument to the `iocccsize(1)` tool. For example:
</p>
``` <!---sh-->
iocccsize prog.c
```
<p class="leftbar"> <p class="leftbar">
See also [Rule 17](#rule17). See also [Rule 17](#rule17).
</p> </p>
Jump to: [top](#) Jump to: [top](#)
@@ -379,18 +335,18 @@ perhaps as much as a few days, for your registration to be processed and for tha
<p class="leftbar"> <p class="leftbar">
Those who [register](register.html) while the contest status is **[pending](../faq.html#pending)** Those who [register](register.html) while the contest status is **[pending](../faq.html#pending)**
will receive their email (containing their [submit server](https://submit.ioccc.org) **Username** will receive their email (containing their [submit server](https://submit.ioccc.org) **Username**
and **Initial password**), much later: usually a few days around the time when the contest status and **Initial password**), later: usually a few days around the time when the contest status
becomes **[open](../faq.html#open)**. becomes **[open](../faq.html#open)**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Once that email you your **Username** and **Initial password** is sent, you Once that email with your **Username** and **Initial password** is sent, you
will have 72 hours to [change your submit server initial password](pw-change.html). will have **72 hours** to [change your submit server initial password](pw-change.html).
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you do not change your **Initial password** in time, you will have If you do not change your **Initial password** in time, **you will have
to [contact an IOCCC judge](../contact.html) by email and ask them to reset to [contact an IOCCC judge](../contact.html)** by email and ask them to reset
your password. Not only is this a hassle for everyone involved, it will your password. Not only is this a hassle for everyone involved, it will
delay your IOCCC registration process, perhaps by a number of days that delay your IOCCC registration process, perhaps by a number of days that
`egrep(1)` would be able to pattern match. By `egrep(1)`, we refer to the `egrep(1)` would be able to pattern match. By `egrep(1)`, we refer to the
@@ -444,6 +400,11 @@ then modify your submission's `Makefile` to **COPY** (**NOT** move!) the files
accordingly. accordingly.
</p> </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"> <p class="leftbar">
See also [Rule 5](#rule5), [Rule 18](#rule18) and [Rule 21](#rule21). See also [Rule 5](#rule5), [Rule 18](#rule18) and [Rule 21](#rule21).
</p> </p>
@@ -456,9 +417,9 @@ Jump to: [top](#)
## Rule 5 ## Rule 5
</div> </div>
Your submission must **NOT** modify the content or filename of any part of your Your submission must **NOT** modify the _content_ **OR** _filename_ of **ANY**
original submission including, but not limited to `prog.c`, the `Makefile` part of your original submission including, but not limited to `prog.c`, the
as well as any data files you submit. `Makefile` or any data files you submit.
If you submission needs (or wishes :-) ) to modify such content, it **MUST** 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. first copy the file to a new filename and then modify that copy.
@@ -471,7 +432,7 @@ your `Makefile` to form that copy.
<p class="leftbar"> <p class="leftbar">
If you do make a copy of a submission file, **PLEASE** be sure that 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 the `clobber` rule of your `Makefile` removes that copy in order to
in order restore your submission to its original submission state. restore your submission to its original submission state.
</p> </p>
@@ -505,20 +466,20 @@ The obfuscated C program must be your own original work.
</p> </p>
<p class="leftbar"> <p class="leftbar">
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.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you submit any content that is owned by others, you **MUST If you submit any content that is owned by others, you **MUST
detail that ownership** (i.e., who owns what) **_AND_ document the detail that ownership** (i.e., who owns what) **_AND_ document the
permission you obtained** in your `remarks.md` file. permission you obtained from them**, in your `remarks.md` file.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Please note that [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) Please note that the tools in [mkiocccentry
are **NOT** original works, unless of course you're the respective authors, in repo](https://github.com/ioccc-src/mkiocccentry) are **NOT** original works,
which case they are original. :-) unless of course you're the original authors, in which case they are original. :-)
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -527,10 +488,11 @@ would probably violate a number of rules. :-)
</p> </p>
<p class="leftbar"> <p class="leftbar">
- [mkioccentry&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c) - [mkiocccentry&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c)
- [iooccsize&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.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) - [chkentry&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c)
- [txzchk&lpar;1&rpar;](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.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) - [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) - [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) - [dyn_array repo as cloned by the mkiocccentry repo](https://github.com/lcn2/dyn_array)
@@ -539,13 +501,13 @@ would probably violate a number of rules. :-)
<p class="leftbar"> <p class="leftbar">
The IOCCC has a rich history of remarkable winning entries created by The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code. authors who skillfully employed various techniques to develop their code.
While it is **NOT** required, you are allowed to use tools to develop While it is **NOT** required, you are _allowed_ to use tools to develop
and test your submission. These tools may include, but are not limited and test your submission. These tools may include, but are not limited
to code generators, code analysis tools, static code analysis tools, to code generators, code analysis tools, static code analysis tools,
runtime analysis tools, machine learning tools, natural language models, runtime analysis tools, machine learning tools, natural language models,
code copilot tools, so-called AI services, large language models, etc. 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 If you do make use of such tools or services, then we **ENCOURAGE you to describe
how you used such tools** in your `remarks.md` file. what tools and how you used those tools**, in your `remarks.md` file.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -566,28 +528,30 @@ while the contest is **[open](../faq.html#open)**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
If you have [registered](register.html) and received by email your If you have [registered](register.html) and received by email your [submit
[submit server](https://submit.ioccc.org) **Username** and **Initial password** server](https://submit.ioccc.org) **Username** and **Initial password** you may
from an [IOCCC judge](../judges.html), you may upload your submission to upload your submission to the [submit server](https://submit.ioccc.org) but
the [submit server](https://submit.ioccc.org) **ONLY** while the **ONLY** while the contest is **[open](../faq.html#open)**.
contest is **[open](../faq.html#open)**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The [submit server](https://submit.ioccc.org), in accordance with [Rule 17](rules.html#rule17), The [submit server](https://submit.ioccc.org), in accordance with [Rule
places a limit of **3999971** bytes on the size of your upload. 17](rules.html#rule17), places a limit of **3999971** bytes on the size of your
upload.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Once the contest is in the **[judging](../faq.html#judging)** state (or Once the contest is in the **[judging](../faq.html#judging)** state (or
**[closed](../faq.html#closed)**), you may **NOT** upload submissions. **[closed](../faq.html#closed)** state), you may **NOT** upload submissions.
</p> </p>
<p class="leftbar"> <p class="leftbar">
While the contest is **[open](../faq.html#open)** or in the **[judging](../faq.html#judging)** state, While the contest is **[open](../faq.html#open)** or in the
the [IOCCC judges](../judges.html) **MAY** (but are not required to) modify the slot comment of your submission to indicate **[judging](../faq.html#judging)** state, the [IOCCC judges](../judges.html)
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 of your submission to
**MAY** (but are not required to) modify the slot comment accordingly. 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>
<p class="leftbar"> <p class="leftbar">
@@ -597,14 +561,15 @@ to form the file to upload to the [submit server](https://submit.ioccc.org).
</p> </p>
<p class="leftbar"> <p class="leftbar">
The [submit server](https://submit.ioccc.org) will become active when the contest is **[open](../faq.html#open)**. The [submit server](https://submit.ioccc.org) will become active when the
Until the contest status becomes **[open](../faq.html#open)**, contest is **[open](../faq.html#open)**. Until the contest status becomes
the [submit server](https://submit.ioccc.org) may be offline and/or unresponsive. **[open](../faq.html#open)**, the [submit server](https://submit.ioccc.org) may
be offline and/or unresponsive.
</p> </p>
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)" 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. for more information about the `mkiocccentry(1)` tool.
</p> </p>
@@ -632,14 +597,14 @@ and including **10.000000** (ten in base 10) submissions **PER** contest.
**Each submission _must be submitted separately_**. **Each submission _must be submitted separately_**.
<p class="leftbar"> <p class="leftbar">
If this seems unreasonable we suggest you wait until the next contest, and in If this seems unreasonable we suggest you wait until the next contest and in
the interim ponder this modified quote purportedly said by Bill Gates: the interim ponder this (modified or not) quote said by Bill Gates:
</p> </p>
<p class="leftbar"> <p class="leftbar">
> 10 submissions ought to be enough for anybody. :-) > 640K submissions ought to be enough for anybody.
> >
> -- Bill Gates s/640K/10/ (allegedly) > -- Bill Gates s/640K/10/ (allegedly :-) )
</p> </p>
@@ -668,6 +633,15 @@ you expect on our test platforms. If your program needs special
permissions you **MUST** document this fact, and explain why permissions you **MUST** document this fact, and explain why
it is needed in your submission's `remarks.md` file. 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](#) Jump to: [top](#)
@@ -685,7 +659,6 @@ their rule abuse is legal, in the `remarks.md` file.
See also [the warning about rule abuse](#rule_abuse). See also [the warning about rule abuse](#rule_abuse).
</p> </p>
Jump to: [top](#) Jump to: [top](#)
@@ -712,7 +685,7 @@ Jump to: [top](#)
<p class="leftbar"> <p class="leftbar">
Any C source that fails to compile because of lines with trailing Any C source that fails to compile because of lines with trailing
control-M's (i.e., lines with a trailing byte `015`) **_might_** be rejected. control-M's (i.e., lines with a trailing byte `015`) **might** be rejected.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -722,7 +695,7 @@ byte `012`) character.
</p> </p>
<p class="leftbar"> <p class="leftbar">
As we do **NOT** DOS, please also be sure that the `Makefile` and 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. `remarks.md` files end in final newline (i.e., byte `012`) character.
</p> </p>
@@ -730,7 +703,9 @@ As we do **NOT** DOS, please also be sure that the `Makefile` and
You are permitted, in order to try and squeeze your `prog.c` under 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** a [Rule 2a](#rule2a) and/or [Rule 2b](#rule2b) limit, to **NOT**
end your `prog.c` with a newline (i.e., byte `012`) character. 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. 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> </p>
@@ -767,23 +742,22 @@ Jump to: [top](#)
Submissions that are similar to previous winning IOCCC entries are discouraged. Submissions that are similar to previous winning IOCCC entries are discouraged.
<p class="leftbar"> <p class="leftbar">
You are allowed to re-submit to a later contest, a submission that 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 did not win the IOCCC. If you do so, then you would be well advised
to try and enhance and improve your submission. to try and enhance and improve your submission.
If you do re-submit something that did not previously win, then If you do resubmit something that did not previously win, then
you are **encouraged** to mention this in your `remarks.md` file you are **encouraged** to mention this in your `remarks.md` file
as this sometimes helps. as this **sometimes** helps.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Re-submitting an improved submission that did not become an Resubmitting an improved submission that did not become an
IOCCC winning entry is a **time honored** tradition of the IOCCC. IOCCC winning entry is a **time honored** tradition of the IOCCC.
There are some IOCCC winning entries that were submitted to multiple contests There are some IOCCC winning entries that were submitted to multiple contests
before they were improved enough to "climb over" (as the expression before they were improved enough to "climb over" (as the expression
goes) all the other submissions for a given contest. goes) all the other submissions for a given contest.
</p> </p>
Jump to: [top](#) Jump to: [top](#)
@@ -793,43 +767,47 @@ Jump to: [top](#)
<p class="leftbar"> <p class="leftbar">
Your submission must be in the form of a **xz compressed tarball** that 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 **current released version** of the `mkiocccentry(1)` tool would generate.
The files, directories, and paths **MUST** conform to the limits imposed The files, directories, and paths **MUST** conform to the limits imposed
by `mkiocccentry(1)` including but **NOT LIMITED** to their names, count, by `mkiocccentry(1)` including but **NOT LIMITED** to their names, count,
path length and directory tree depth. path length, directory tree depth and permissions.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your **xz compressed tarball** must be larger than **0** bytes and no larger than **3999971** bytes. Your **xz compressed tarball** must be larger than **0** bytes and no larger
than **3999971** bytes.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The sum of the byte lengths of all files, after the **xz compressed tarball** is un-tarred, The sum of the byte lengths of all files, after the **xz compressed tarball** is untarred,
must not exceed **27651\*1024** bytes. must **NOT** exceed `27651*1024` bytes.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your **xz compressed tarball** submission file must pass the tests performed by the current version of `txzchk(1)`. Your **xz compressed tarball** submission _file_ **MUST** pass the tests performed by
the current version of `txzchk(1)`.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Your **xz compressed tarball** submission filename must pass the tests performed by the current version of `fnamchk(1)`. Your **xz compressed tarball** submission _filename_ **MUST** pass the tests
performed by the current version of `fnamchk(1)`.
</p> </p>
<p class="leftbar"> <p class="leftbar">
When your **xz compressed tarball** submission file is un-tarred, the When your **xz compressed tarball** submission file is untarred, the
resulting directory must pass the checks performed by the current version of `chkentry(1)`. resulting _directory_ **MUST** pass the checks performed by the current version
of `chkentry(1)`.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The resulting `prog.c` file must pass the [Rule 2](#rule2) size checks performed by the current The resulting `prog.c` file **MUST** pass the [Rule 2](#rule2) size checks performed by the current
version of `iocccsize(1)`. version of `iocccsize(1)`.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The `.auth.json` and `.info.json` must be compatible with what the The `.auth.json` and `.info.json` **MUST** be compatible with what the
current version of the `mkiocccentry(1)` tool would produce. They must current version of the `mkiocccentry(1)` tool would produce. They **MUST
also pass the tests performed by the current version of `chkentry(1)`. ALSO** pass the tests performed by the current version of `chkentry(1)`.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -841,9 +819,20 @@ The required `remarks.md` must **NOT** be empty.
</p> </p>
<p class="leftbar"> <p class="leftbar">
You may **NOT** submit a tarball created by the `-d` or `-s seed` option of `mkiocccentry(1)`. You may **NOT** submit a tarball created by the `-d` or `-s seed` option of
`mkiocccentry(1)`.
</p> </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.
</p>
See the
FAQ on "[what extra files are and how to include more](../faq.html#extra-files)"
as well as the [guidelines on extra files](guidelines.html#extra-files)
for more details.
### TL;DR Rule 17 - Use `mkiocccentry(1)` to form your submission ### TL;DR Rule 17 - Use `mkiocccentry(1)` to form your submission
@@ -863,7 +852,7 @@ submit server](https://submit.ioccc.org) and/or the [IOCCC Judges](../judges.htm
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on the "[mkiocccentry tool](../faq.html#mkiocccentry) FAQ on the "[mkiocccentry toolkit](../faq.html#mkiocccentry)
for how to obtain and use the above mentioned tools. for how to obtain and use the above mentioned tools.
</p> </p>
@@ -905,17 +894,21 @@ The `remarks.md` file, a required non-empty file, must be written in
</p> </p>
<p class="leftbar"> <p class="leftbar">
We currently use [pandoc&lpar;1&rpar;](https://pandoc.org) to automatically convert markdown to HTML. We currently use [pandoc&lpar;1&rpar;](https://pandoc.org) to automatically
Please try to avoid submitting an HTML file translation to any markdown file. convert markdown to HTML. Please try to avoid submitting an HTML file
If you **MUST** submit such an HTML translation, **PLEASE** mention this in your `remarks.md` file. translation to any markdown file. If you **MUST** submit such an HTML
translation, **PLEASE** mention this in your `remarks.md` file.
</p> </p>
<p class="leftbar"> <p class="leftbar">
For any submission that wins the contest, we modify your `remarks.md` file and 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 rename it as `README.md` and then use [pandoc&lpar;1&rpar;](https://pandoc.org)
the `index.html` file in the top level directory of your submission. to generate the `index.html` file in the top level directory of your submission.
For this reason, please do **NOT** submit a `README.md` file, **NOR** an `index.html` For this reason, `mkiocccentry(1)` will **NOT** package such files (in the top
file in the top level directory where your `remarks.md` file resides. level submission directory) and both `txzchk(1)` and `chkentry(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>
<p class="leftbar"> <p class="leftbar">
@@ -936,8 +929,10 @@ information on the markdown format.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Please see our FAQ "[remarks.md](../faq.html#remarks_md)" and the [IOCCC markdown **PLEASE** see our
guidelines](../markdown.html) for additional markdown guidance. FAQ on "[remarks.md](../faq.html#remarks_md)"
**AND** the
[IOCCC markdown guidelines](../markdown.html) for additional markdown guidance.
</p> </p>
@@ -948,9 +943,9 @@ Jump to: [top](#)
## Rule 20 ## Rule 20
</div> </div>
The how to build instructions must be in Makefile format. See [the FAQ about The how to build instructions must be in GNU Makefile format. See the
make&lpar;1&rpar; compatibility the IOCCC FAQ about "[make&lpar;1&rpar; compatibility the IOCCC supports](../faq.html#make_compatibility)
supports](../faq.html#make_compatibility) for more details. for more details.
<p class="leftbar"> <p class="leftbar">
You are **ENCOURAGED** to use the You are **ENCOURAGED** to use the
@@ -968,7 +963,7 @@ To invoke the C compiler, use `${CC}`. To invoke the C preprocessor use
Do **NOT** assume that `.` (the current directory) is in the `$PATH`. Do **NOT** assume that `.` (the current directory) is in the `$PATH`.
<p class="leftbar"> <p class="leftbar">
When `make clobber` is invoked, we request that submission directory be restored When `make clobber` is invoked, we request that your submission directory be restored
to its original submission state. For example, any temporary files to its original submission state. For example, any temporary files
created during the build process, or during execution should be created during the build process, or during execution should be
removed by the `clobber` rule. removed by the `clobber` rule.
@@ -976,8 +971,8 @@ removed by the `clobber` rule.
<p class="leftbar"> <p class="leftbar">
Your `Makefile` **MUST** use a syntax that is compatible with `bash(1)` Your `Makefile` **MUST** use a syntax that is compatible with `bash(1)`
and GNU `make(1)`. You are **ENCOURAGED** to use `SHELL= bash` in **AND** GNU `make(1)`. You are **ENCOURAGED** to use `SHELL= bash` in
your `Makefile`. your `Makefile`. Please add a space between the `=` and the value.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -996,16 +991,18 @@ Jump to: [top](#)
## Rule 21 ## Rule 21
</div> </div>
<p class="leftbar">
Your submission **MUST NOT** create or modify files **ABOVE** the current directory 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 _with the exception of_ the `/tmp` and the `/var/tmp` directories. Your submission
**MAY** create subdirectories below the current directory, or in `/tmp`, **MAY** create subdirectories **below** the submission directory, or in `/tmp`,
or in `/var/tmp` provided that `.` is **NOT** the first byte in any or in `/var/tmp` provided that `.` is **NOT** the first byte in any
directory name or filename you create. directory name or filename you create.
</p>
<p class="leftbar"> <p class="leftbar">
If you do create files and directories, **PLEASE** be sure that If you do create files and directories, **PLEASE** be sure that
the `clobber` rule of your `Makefile` removes such created files the `clobber` rule of your `Makefile` removes such created files
in order restore your submission to its original submission state. in order to restore your submission to its original submission state.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -1070,7 +1067,7 @@ Jump to: [top](#)
</div> </div>
<p class="leftbar"> <p class="leftbar">
The [IOCCC rule set](rules.html) needs more than 5^2 rules: see [Rule 26](#rule26). The [IOCCC rule set](rules.html) needs more than `5^2` rules: see [Rule 26](#rule26).
</p> </p>
@@ -1089,7 +1086,6 @@ Jump to: [top](#)
> "Mr. Jock, TV quiz PhD, bags few lynx."<br> > "Mr. Jock, TV quiz PhD, bags few lynx."<br>
> "abcdefg, hijklmnop, qrstu&v, wxy&z." > "abcdefg, hijklmnop, qrstu&v, wxy&z."
Jump to: [top](#) Jump to: [top](#)
@@ -1133,7 +1129,7 @@ may (and **often do**) change from year to year.
</p> </p>
<p class="leftbar"> <p class="leftbar">
**PLEASE** be sure you have the current [IOCCC rules](rules.html) and **PLEASE** be **SURE** you have the **current** [IOCCC rules](rules.html) and
[IOCCC guidelines](guidelines.html) prior to submitting to the contest. [IOCCC guidelines](guidelines.html) prior to submitting to the contest.
</p> </p>
@@ -1159,7 +1155,7 @@ Consider joining the IOCCC discord community via this link:
<p class="leftbar"> <p class="leftbar">
See the See the
FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)" FAQ on "[obtaining, compiling, installing and using the mkiocccentry tools](../faq.html#mkiocccentry)"
and the and the
FAQ on "[how to enter the IOCCC](../quick-start.html#enter)" FAQ on "[how to enter the IOCCC](../quick-start.html#enter)"
as that FAQ has important details on as that FAQ has important details on
+7 -4
View File
@@ -1,8 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# try.alt.sh - demonstrate IOCCC entry YYYY/foo alternate code # try.alt.sh - demonstrate IOCCC entry YYYY/foo alternate code
# XXX - try.alt.sh example version: 1.0.0-1 11-28-2024 - XXX # XXX - try.alt.sh example version: 28.0.0-0 2024-03-04 - XXX
#
# XXX - NOTE: if your submission wins and becomes an entry, then - XXX # XXX - NOTE: if your submission wins and becomes an entry, then - XXX
# XXX - YYYY/foo will be changed to the 4 digit year and directory - XXX # XXX - YYYY/foo will be changed to the 4 digit year and directory - XXX
# XXX - name. - XXX # XXX - name. - XXX
@@ -43,8 +42,8 @@ clear
# XXX - Examples follow. - XXX # XXX - Examples follow. - XXX
# XXX - if the prompt will not be too long, say more than 80 chars - XXX # XXX - if the prompt will not be too long, say no more than 80-100 - XXX
# XXX - or so: - XXX # XXX - chars or so: - XXX
read -r -n 1 -p "Press any key to run: ./prog.alt: " read -r -n 1 -p "Press any key to run: ./prog.alt: "
echo 1>&2 echo 1>&2
./prog.alt ./prog.alt
@@ -54,3 +53,7 @@ echo "$ ./prog.alt some long command line"
read -r -n 1 -p "Press any key to continue: " read -r -n 1 -p "Press any key to continue: "
./prog.alt some long command line ./prog.alt some long command line
# XXX - of course, if the prompt needs to be long, or it will be - XXX
# XXX - longer no matter what or you have some other purpose, you - XXX
# XXX - can do it the other way or another way entirely. The point - XXX
# XXX - is to make it easy to use and see but still fit your ideas. - XXX
+8 -4
View File
@@ -1,8 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# try.sh - demonstrate IOCCC entry YYYY/foo # try.sh - demonstrate IOCCC entry YYYY/foo
# XXX - try.sh example version: 1.0.0-1 11-28-2024 - XXX # XXX - try.sh example version: 28.0.0-0 2024-03-04 - XXX
# XXX - NOTE: if your submission wins and becomes an entry, then - XXX # XXX - NOTE: if your submission wins and becomes an entry, then - XXX
# XXX - YYYY/foo will be changed to the 4 digit year and directory - XXX # XXX - YYYY/foo will be changed to the 4 digit year and directory - XXX
# XXX - name. - XXX # XXX - name. - XXX
@@ -45,8 +44,8 @@ clear
# XXX - Examples follow. - XXX # XXX - Examples follow. - XXX
# XXX - if the prompt will not be too long, say more than 80 chars - XXX # XXX - if the prompt will not be too long, say no more than 80-100 - XXX
# XXX - or so: - XXX # XXX - chars or so: - XXX
read -r -n 1 -p "Press any key to run: ./prog: " read -r -n 1 -p "Press any key to run: ./prog: "
echo 1>&2 echo 1>&2
./prog ./prog
@@ -55,3 +54,8 @@ echo 1>&2
echo "$ ./prog some long command line" echo "$ ./prog some long command line"
read -r -n 1 -p "Press any key to continue: " read -r -n 1 -p "Press any key to continue: "
./prog some long command line ./prog some long command line
# XXX - of course, if the prompt needs to be long, or it will be - XXX
# XXX - longer no matter what or you have some other purpose, you - XXX
# XXX - can do it the other way or another way entirely. The point - XXX
# XXX - is to make it easy to use and see but still fit your ideas. - XXX