Merge pull request #249 from xexyl/guidelines
This commit is contained in:
2 files changed
+343
-305
No files matched your search
+152
-139
@@ -472,6 +472,24 @@ indicates an <strong>change</strong> from the previous IOCCC.
|
|||||||
Because the <strong>IOCCC29</strong> was a substantial rewrite, only <strong>important
|
Because the <strong>IOCCC29</strong> was a substantial rewrite, only <strong>important
|
||||||
changes</strong> from <strong>IOCCC28</strong> have been marked.
|
changes</strong> from <strong>IOCCC28</strong> have been marked.
|
||||||
</p>
|
</p>
|
||||||
|
<h1 id="guidelines">Guidelines</h1>
|
||||||
|
<p>These <a href="guidelines.html">Guidelines</a> are <strong>hints</strong> and <strong>suggestions</strong>,
|
||||||
|
<strong>NOT</strong> <a href="rules.html">Rules</a>.</p>
|
||||||
|
<p>While submissions that violate the <a href="guidelines.html">Guidelines</a> are
|
||||||
|
allowed, submissions that remain within the
|
||||||
|
<a href="guidelines.html">Guidelines</a> are preferred.</p>
|
||||||
|
<p>You are encouraged to review the following <a href="../faq.html">FAQs</a>:</p>
|
||||||
|
<ul>
|
||||||
|
<li><p><a href="../quick-start.html#enter">How to enter the IOCCC</a></p></li>
|
||||||
|
<li><p><a href="../faq.html#mkiocccentry">Obtaining and compiling the most recent mkiocccentry
|
||||||
|
toolkit</a></p></li>
|
||||||
|
<li><p><a href="./submit.html">How to upload your submission</a></p></li>
|
||||||
|
</ul>
|
||||||
|
<p>While the contest is <strong><a href="../faq.html#open">open</a></strong>, you may modify your
|
||||||
|
previously uploaded submission by rebuilding your submission with the
|
||||||
|
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>, and
|
||||||
|
then re-uploading it to <strong>the same slot number</strong> on the <a href="https://submit.ioccc.org">submit
|
||||||
|
server</a>.</p>
|
||||||
<p>Be sure to read the <a href="rules.html">Rules</a>.</p>
|
<p>Be sure to read the <a href="rules.html">Rules</a>.</p>
|
||||||
<div id="guideline1">
|
<div id="guideline1">
|
||||||
<div id="guideline1-c">
|
<div id="guideline1-c">
|
||||||
@@ -615,10 +633,10 @@ such as:</p>
|
|||||||
<li>Etc.</li>
|
<li>Etc.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>The IOCCC has a rich history of remarkable winning entries created by
|
<p>The IOCCC has a rich history of remarkable winning entries created by
|
||||||
authors who skillfully employed various techniques to develop their
|
authors who skillfully employed various techniques (often their own
|
||||||
code. If you do make use of such tools or services, then we
|
tools) to develop their code. If you do make use of such tools or
|
||||||
<strong>ENCOURAGE you to describe how you used such tools</strong> in your
|
services, then we <strong>ENCOURAGE you to describe how you used such tools</strong>
|
||||||
<code>remarks.md</code> file.</p>
|
in your <code>remarks.md</code> file.</p>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
In short: you created it, you own it, its an original work <strong>OR</strong> you have
|
In short: you created it, you own it, its an original work <strong>OR</strong> you have
|
||||||
explicit permission to the work that you document in your remarks.
|
explicit permission to the work that you document in your remarks.
|
||||||
@@ -633,7 +651,9 @@ to write my submission?</a>”.</p>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>Do <strong>NOT</strong> register more than one account just to try and get around
|
<p>Do <strong>NOT</strong> register more than one account just to try and get around
|
||||||
the limit on the number of submission slots.</p>
|
the limit on the number of submission slots, because if you do and we
|
||||||
|
discover that you did so your submissions will be rejected for
|
||||||
|
violating the rules.</p>
|
||||||
<p>Jump to: <a href="#">top</a></p>
|
<p>Jump to: <a href="#">top</a></p>
|
||||||
<div id="guideline9">
|
<div id="guideline9">
|
||||||
<div id="guideline9-no-interactive-compiling-allowed">
|
<div id="guideline9-no-interactive-compiling-allowed">
|
||||||
@@ -882,23 +902,6 @@ mkiocccentry?</a>”.</p>
|
|||||||
<div id="general-overall-guidelines">
|
<div id="general-overall-guidelines">
|
||||||
<h2 id="overall-guidelines">Overall Guidelines</h2>
|
<h2 id="overall-guidelines">Overall Guidelines</h2>
|
||||||
</div>
|
</div>
|
||||||
<p>These <a href="guidelines.html">Guidelines</a> are <strong>hints</strong> and <strong>suggestions</strong>,
|
|
||||||
<strong>NOT</strong> <a href="rules.html">Rules</a>.</p>
|
|
||||||
<p>While submissions that violate the <a href="guidelines.html">Guidelines</a> are
|
|
||||||
allowed, submissions that remain within the
|
|
||||||
<a href="guidelines.html">Guidelines</a> are preferred.</p>
|
|
||||||
<p>You are encouraged to review the following <a href="../faq.html">FAQs</a>:</p>
|
|
||||||
<ul>
|
|
||||||
<li><p><a href="../quick-start.html#enter">How to enter the IOCCC</a></p></li>
|
|
||||||
<li><p><a href="../faq.html#mkiocccentry">Obtaining and compiling the most recent mkiocccentry
|
|
||||||
toolkit</a></p></li>
|
|
||||||
<li><p><a href="./submit.html">How to upload your submission</a></p></li>
|
|
||||||
</ul>
|
|
||||||
<p>While the contest is <strong><a href="../faq.html#open">open</a></strong>, you may modify your
|
|
||||||
previously uploaded submission by rebuilding your submission with the
|
|
||||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>, and
|
|
||||||
then re-uploading it to <strong>the same slot number</strong> on the <a href="https://submit.ioccc.org">submit
|
|
||||||
server</a>.</p>
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.
|
The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.
|
||||||
</p>
|
</p>
|
||||||
@@ -917,6 +920,7 @@ apply a number of tests to a submission:</p>
|
|||||||
<li>examine the algorithm</li>
|
<li>examine the algorithm</li>
|
||||||
<li>compile it (with flags to enable all warnings)</li>
|
<li>compile it (with flags to enable all warnings)</li>
|
||||||
<li>execute it</li>
|
<li>execute it</li>
|
||||||
|
<li>…and various other things only we know about :-)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>You should consider how your submission looks in each of the above
|
<p>You should consider how your submission looks in each of the above
|
||||||
tests. You should ask yourself if your submission remains obscure
|
tests. You should ask yourself if your submission remains obscure
|
||||||
@@ -949,7 +953,7 @@ Of course, a correctly working submission might be better.</p>
|
|||||||
<p>We tend to look down on a <a href="https://en.wikipedia.org/wiki/Prime_number">prime
|
<p>We tend to look down on a <a href="https://en.wikipedia.org/wiki/Prime_number">prime
|
||||||
number</a> printer that claims
|
number</a> printer that claims
|
||||||
that 16 is a prime number. Clever people will note that 16 might be
|
that 16 is a prime number. Clever people will note that 16 might be
|
||||||
prime under certain conditions. ;-) Wise people, when submitting
|
prime under certain conditions. :-) Wise people, when submitting
|
||||||
something clever will <strong>fully explain such cleverness</strong> in their
|
something clever will <strong>fully explain such cleverness</strong> in their
|
||||||
submission’s <code>remarks.md</code> file.</p>
|
submission’s <code>remarks.md</code> file.</p>
|
||||||
<p>People who are considering to just use some complex mathematical
|
<p>People who are considering to just use some complex mathematical
|
||||||
@@ -960,6 +964,37 @@ creative</strong>.</p>
|
|||||||
an appropriate level of obfuscation.</p>
|
an appropriate level of obfuscation.</p>
|
||||||
<p>A clean looking program with misleading comments and variable names
|
<p>A clean looking program with misleading comments and variable names
|
||||||
might be a <strong>VERY GOOD START</strong> to a great submission!</p>
|
might be a <strong>VERY GOOD START</strong> to a great submission!</p>
|
||||||
|
<p>Try to avoid submissions that play music that some people believe is
|
||||||
|
copyrighted music.</p>
|
||||||
|
<p>Did we remember to indicate that programs that blatantly use some
|
||||||
|
complex state machine to do something simple, are boring? We think we
|
||||||
|
did. :-)</p>
|
||||||
|
<p>Given two versions of the same program, one that is a compact blob of
|
||||||
|
code, and the other that is formatted more like a typical C program, we
|
||||||
|
tend to favor the second version. Of course, a third version of the
|
||||||
|
same program that is formatted in an interesting and/or obfuscated way,
|
||||||
|
would definitely win over the first two!</p>
|
||||||
|
<p>Remember, you can submit more than one submission. See the
|
||||||
|
<a href="rules.html">Rules</a> for details (in particular, <a href="rules.html#rule8-submitting-requirements">Rule 8 - Submitting
|
||||||
|
requirements</a>).</p>
|
||||||
|
<p>Please note that the C source below, besides lacking in obfuscation, is
|
||||||
|
<strong>NOT</strong> the smallest C source file that when compiled and run, dumps
|
||||||
|
core:</p>
|
||||||
|
<pre><code> main;</code></pre>
|
||||||
|
<p>Unless you specify <code>-fwritable-strings</code> (see <code>COTHER</code> in the example
|
||||||
|
Makefile, described in the
|
||||||
|
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission
|
||||||
|
Makefile</a>”), do not
|
||||||
|
assume this sort of code will work:</p>
|
||||||
|
<pre><code> char *T = "So many primes, so little time!";
|
||||||
|
...
|
||||||
|
T[14] = ';'; /* modifying a string requires: -fwritable-strings */</code></pre>
|
||||||
|
<p>Even so, one should probably not assume that this is universally
|
||||||
|
accepted.</p>
|
||||||
|
<p>Initialized char arrays are OK to write over. For instance, this is
|
||||||
|
OK:</p>
|
||||||
|
<pre><code> char b[] = "Is this OK";
|
||||||
|
b[9] = 'k'; /* modifying an initialized char array is OK */</code></pre>
|
||||||
<p>Jump to: <a href="#">top</a></p>
|
<p>Jump to: <a href="#">top</a></p>
|
||||||
<div id="likes">
|
<div id="likes">
|
||||||
<div id="dislikes">
|
<div id="dislikes">
|
||||||
@@ -1018,6 +1053,36 @@ rule in the Makefile.
|
|||||||
If you don’t have a prog.alt.c, then <strong>PLEASE</strong> remove the <code>try.alt</code>
|
If you don’t have a prog.alt.c, then <strong>PLEASE</strong> remove the <code>try.alt</code>
|
||||||
rule as well.
|
rule as well.
|
||||||
</p>
|
</p>
|
||||||
|
<p>We tend to <strong>DISLIKE</strong> programs that:</p>
|
||||||
|
<ul>
|
||||||
|
<li>are very hardware specific</li>
|
||||||
|
<li>are very OS version specific (<code>index(3)</code>/<code>strchr(3)</code> differences are
|
||||||
|
OK, but sockets/streams specific code is likely not to be)</li>
|
||||||
|
<li>dump core or have compiler warnings (it is OK only if
|
||||||
|
you warn us in your <code>remarks.md</code> file)</li>
|
||||||
|
<li>won’t compile or run in a <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||||
|
Specification</a>
|
||||||
|
(UNIX-like) environment</li>
|
||||||
|
<li>depend on a utility or application not normally found
|
||||||
|
in systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||||
|
Specification</a></li>
|
||||||
|
<li>abuse the build file to get around the size limit</li>
|
||||||
|
<li>obfuscate by use of ANSI trigraphs</li>
|
||||||
|
<li>obfuscate by use of digraphs</li>
|
||||||
|
<li><p class="leftbar">
|
||||||
|
obfuscate by use of <code>goto</code>s
|
||||||
|
</p></li>
|
||||||
|
<li>are larger than they need to be</li>
|
||||||
|
<li>have more lines than they need to have</li>
|
||||||
|
<li>are “blob-ier” (just a pile of unformatted C code) than they need to be</li>
|
||||||
|
<li>are rather similar to <strong><a href="../years.html">previous winners</a></strong> :-(</li>
|
||||||
|
<li>are <strong>identical</strong> to <strong><a href="https://en.wikipedia.org/wiki/Null_device">previous losers</a></strong> :-)</li>
|
||||||
|
<li>that mandate the exclusive use of a specific Integrated Development Environment (IDE)</li>
|
||||||
|
</ul>
|
||||||
|
<p>In order to encourage submission portability, we <strong>DISLIKE</strong>
|
||||||
|
submissions that fail to build unless one is using an IDE. For example,
|
||||||
|
do not mandate that one must use Microsoft Visual Studio to compile
|
||||||
|
your submission.</p>
|
||||||
<p>Jump to: <a href="#">top</a></p>
|
<p>Jump to: <a href="#">top</a></p>
|
||||||
<div id="about-cpp">
|
<div id="about-cpp">
|
||||||
<h3 id="about-c-preprocessor">About C preprocessor</h3>
|
<h3 id="about-c-preprocessor">About C preprocessor</h3>
|
||||||
@@ -1038,8 +1103,8 @@ to not do this.</p>
|
|||||||
<pre><code> this_is_not; /* <-- Try to avoid implicit type declarations */</code></pre>
|
<pre><code> this_is_not; /* <-- Try to avoid implicit type declarations */</code></pre>
|
||||||
<p>We really <strong>DISLIKE</strong> submissions that make blatant use of <code>#include</code>
|
<p>We really <strong>DISLIKE</strong> submissions that make blatant use of <code>#include</code>
|
||||||
of large data files to get around the source code size limit. This does
|
of large data files to get around the source code size limit. This does
|
||||||
not mean <code>#include</code> of standard header files, just data files you
|
not mean <code>#include</code> of standard header files, just files you provide,
|
||||||
provide.</p>
|
or system files such as <code>/usr/share/dict/words</code>.</p>
|
||||||
<p>On 28 January 2007, the Judges rescinded the requirement that the <code>#</code>
|
<p>On 28 January 2007, the Judges rescinded the requirement that the <code>#</code>
|
||||||
in a C preprocessor directive must be the 1st non-whitespace byte.</p>
|
in a C preprocessor directive must be the 1st non-whitespace byte.</p>
|
||||||
<h3 id="about-compilers">About compilers</h3>
|
<h3 id="about-compilers">About compilers</h3>
|
||||||
@@ -1098,12 +1163,13 @@ Such a need for a tarball <strong>MUST</strong> be explained in the <code>remark
|
|||||||
file.</p>
|
file.</p>
|
||||||
<div id="gotos">
|
<div id="gotos">
|
||||||
<div id="goto">
|
<div id="goto">
|
||||||
|
<h3 id="on-gotos">On <code>goto</code>s</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
Using a mass of <code>goto</code>s to obfuscate your code has become ‘old’ and is
|
Using a mass of <code>goto</code>s to obfuscate your code has become <em>old</em> and is
|
||||||
unlikely to make it through the final rounds, if it even gets that far.
|
unlikely to make it through the final rounds, if it even gets that far.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="about-stdib">
|
<div id="about-stdib">
|
||||||
<div id="about-exit">
|
<div id="about-exit">
|
||||||
<h3 id="about-exit3">About <code>exit(3)</code></h3>
|
<h3 id="about-exit3">About <code>exit(3)</code></h3>
|
||||||
@@ -1120,26 +1186,29 @@ While such programs are not as complex as other winners, they do serve
|
|||||||
a useful purpose: they are often the only program that people attempt
|
a useful purpose: they are often the only program that people attempt
|
||||||
to completely understand. For this reason, we look for programs that
|
to completely understand. For this reason, we look for programs that
|
||||||
are compact, and are instructional.</p>
|
are compact, and are instructional.</p>
|
||||||
|
<p>Programs that claim to be the smallest C source that does something, really
|
||||||
|
better be the smallest such program or they risk being rejected because
|
||||||
|
they do not work as documented.</p>
|
||||||
<p>We suggest that you avoid trying for the ‘<strong>smallest self-replicating</strong>’
|
<p>We suggest that you avoid trying for the ‘<strong>smallest self-replicating</strong>’
|
||||||
source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in
|
source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in
|
||||||
<a href="../years.html#1994">1994</a>.</p>
|
<a href="../years.html#1994">1994</a>.</p>
|
||||||
<div id="one-liner">
|
<div id="one-liner">
|
||||||
<h3 id="what-a-one-liner-means">What a one-liner means</h3>
|
<h2 id="what-a-one-liner-means">What a one-liner means</h2>
|
||||||
</div>
|
</div>
|
||||||
<p>One line programs should be short one line programs: say around <strong>80</strong>
|
One line programs should be short one line programs: say around <strong>80</strong>
|
||||||
to <strong>132</strong> bytes long. Going well beyond <strong>132</strong> bytes is a bit too
|
to <strong>132</strong> bytes long. Going well beyond <strong>132</strong> bytes is a bit too
|
||||||
long to be called a one-liner in our vague opinion.
|
long to be called a one-liner in our vague opinion.
|
||||||
Programs that claim to be the smallest C source that does something, really
|
|
||||||
better be the smallest such program or they risk being rejected because
|
|
||||||
they do not work as documented.</p>
|
|
||||||
<div id="blobs">
|
<div id="blobs">
|
||||||
<h3 id="about-blobs-of-code">About blobs of code</h3>
|
<h2 id="about-blobs-of-code">About blobs of code</h2>
|
||||||
</div>
|
</div>
|
||||||
<p>We want to get away from source that is simply a compact blob of
|
<p>We want to get away from source that is simply a compact blob of
|
||||||
bytes. <strong>REALLY TRY</strong> to be more creative than blob coding. <strong>HINT!</strong></p>
|
bytes. <strong>REALLY TRY</strong> to be more creative than blob coding. <strong>HINT!</strong></p>
|
||||||
<p>Unless you are cramped for space, or unless you are entering the
|
<p>Unless you are cramped for space, or unless you are entering the
|
||||||
‘<strong>Best one liner</strong>’ category, we suggest that you format your program
|
‘<strong>Best one liner</strong>’ category, we suggest that you format your program
|
||||||
in a more creative way than simply forming excessively long lines.</p>
|
in a more creative way than simply forming excessively long lines.</p>
|
||||||
|
<div id="size">
|
||||||
|
<h2 id="about-size-restrictions">About size restrictions</h2>
|
||||||
|
</div>
|
||||||
<p>The <code>Makefile</code> should not be used to try and get around the size limit.
|
<p>The <code>Makefile</code> should not be used to try and get around the size limit.
|
||||||
It is one thing to make use of a several <code>-D</code>s on the compile line to
|
It is one thing to make use of a several <code>-D</code>s on the compile line to
|
||||||
help out, but it is quite another to use many bytes of <code>-D</code>s in order
|
help out, but it is quite another to use many bytes of <code>-D</code>s in order
|
||||||
@@ -1150,38 +1219,14 @@ This was done years ago; please try to be much more creative.</p>
|
|||||||
<a href="https://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a>.
|
<a href="https://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a>.
|
||||||
:-)</p>
|
:-)</p>
|
||||||
<h3 id="about-environment">About environment</h3>
|
<h3 id="about-environment">About environment</h3>
|
||||||
<p>We tend to <strong>DISLIKE</strong> programs that:</p>
|
|
||||||
<ul>
|
|
||||||
<li>are very hardware specific</li>
|
|
||||||
<li>are very OS version specific (<code>index(3)</code>/<code>strchr(3)</code> differences are
|
|
||||||
OK, but sockets/streams specific code is likely not to be)</li>
|
|
||||||
<li>dump core or have compiler warnings (it is OK only if
|
|
||||||
you warn us in your <code>remarks.md</code> file)</li>
|
|
||||||
<li>won’t compile or run in a <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
|
||||||
Specification</a>
|
|
||||||
(UNIX-like) environment</li>
|
|
||||||
<li>depend on a utility or application not normally found
|
|
||||||
in systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
|
||||||
Specification</a></li>
|
|
||||||
<li>abuse the build file to get around the size limit</li>
|
|
||||||
<li>obfuscate by use of ANSI trigraphs</li>
|
|
||||||
<li>obfuscate by use of digraphs</li>
|
|
||||||
<li>are larger than they need to be</li>
|
|
||||||
<li>have more lines than they need to have</li>
|
|
||||||
<li>are “blob-ier” (just a pile of unformatted C code) than they need to be</li>
|
|
||||||
<li>are rather similar to <strong><a href="../years.html">previous winners</a></strong> :-(</li>
|
|
||||||
<li>are <strong>identical</strong> to <strong><a href="https://en.wikipedia.org/wiki/Null_device">previous losers</a></strong> :-)</li>
|
|
||||||
<li>that mandate the exclusive use of a specific Integrated Development Environment (IDE)</li>
|
|
||||||
</ul>
|
|
||||||
<p>In order to encourage submission portability, we <strong>DISLIKE</strong>
|
|
||||||
submissions that fail to build unless one is using an IDE. For example,
|
|
||||||
do not mandate that one must use Microsoft Visual Studio to compile
|
|
||||||
your submission.</p>
|
|
||||||
<p>The program must compile and link cleanly in a <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
<p>The program must compile and link cleanly in a <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||||
Specification</a>
|
Specification</a>
|
||||||
(UNIX-like) environment. Therefore do not assume the system has a
|
(UNIX-like) environment. Therefore do not assume the system has a
|
||||||
<a href="https://en.wikipedia.org/wiki/Windows.h">windows.h</a> include file:</p>
|
<a href="https://en.wikipedia.org/wiki/Windows.h">windows.h</a> include file:</p>
|
||||||
<pre><code> #include <windows.h> /* we DISLIKE this */</code></pre>
|
<pre><code> #include <windows.h> /* we DISLIKE this */</code></pre>
|
||||||
|
<p>Other windows, on the other hand, might be OK: especially where “<strong>X
|
||||||
|
marks the spot</strong>”. Yet on the third hand, windows are best when they
|
||||||
|
are “unseen” (i.e., not dirty). :-)</p>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
You should try to restrict commands used in the build file to commands
|
You should try to restrict commands used in the build file to commands
|
||||||
found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||||
@@ -1195,37 +1240,6 @@ absolute one. The intent is to ensure that the building of your
|
|||||||
program is reasonably portable.</p>
|
program is reasonably portable.</p>
|
||||||
<p>We prefer programs that are portable across a wide variety of UNIX-like
|
<p>We prefer programs that are portable across a wide variety of UNIX-like
|
||||||
operating systems (e.g., Linux, GNU Hurd, BSD, UNIX, macOS, etc.).</p>
|
operating systems (e.g., Linux, GNU Hurd, BSD, UNIX, macOS, etc.).</p>
|
||||||
<p>Try to avoid submissions that play music that some people believe is
|
|
||||||
copyrighted music.</p>
|
|
||||||
<p>Did we remember to indicate that programs that blatantly use some
|
|
||||||
complex state machine to do something simple, are boring? We think we
|
|
||||||
did. :-)</p>
|
|
||||||
<p>Given two versions of the same program, one that is a compact blob of
|
|
||||||
code, and the other that is formatted more like a typical C program, we
|
|
||||||
tend to favor the second version. Of course, a third version of the
|
|
||||||
same program that is formatted in an interesting and/or obfuscated way,
|
|
||||||
would definitely win over the first two!</p>
|
|
||||||
<p>Remember, you can submit more than one submission. See the
|
|
||||||
<a href="rules.html">Rules</a> for details (in particular, <a href="rules.html#rule8-submitting-requirements">Rule 8 - Submitting
|
|
||||||
requirements</a>).</p>
|
|
||||||
<p>Please note that the C source below, besides lacking in obfuscation, is
|
|
||||||
<strong>NOT</strong> the smallest C source file that when compiled and run, dumps
|
|
||||||
core:</p>
|
|
||||||
<pre><code> main;</code></pre>
|
|
||||||
<p>Unless you specify <code>-fwritable-strings</code> (see <code>COTHER</code> in the example
|
|
||||||
Makefile, described in the
|
|
||||||
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission
|
|
||||||
Makefile</a>”), do not
|
|
||||||
assume this sort of code will work:</p>
|
|
||||||
<pre><code> char *T = "So many primes, so little time!";
|
|
||||||
...
|
|
||||||
T[14] = ';'; /* modifying a string requires: -fwritable-strings */</code></pre>
|
|
||||||
<p>Even so, one should probably not assume that this is universally
|
|
||||||
accepted.</p>
|
|
||||||
<p>Initialized char arrays are OK to write over. For instance, this is
|
|
||||||
OK:</p>
|
|
||||||
<pre><code> char b[] = "Is this OK";
|
|
||||||
b[9] = 'k'; /* modifying an initialized char array is OK */</code></pre>
|
|
||||||
<p>We prefer code that can run on either a 64-bit or 32-bit processor.
|
<p>We prefer code that can run on either a 64-bit or 32-bit processor.
|
||||||
However, it is <strong>UNWISE </strong>to assume it will run on an some Intel-like
|
However, it is <strong>UNWISE </strong>to assume it will run on an some Intel-like
|
||||||
x86 architecture**.</p>
|
x86 architecture**.</p>
|
||||||
@@ -1244,18 +1258,18 @@ architectures. For instance, more recent versions of <code>macOS</code> do <stro
|
|||||||
support 32-bit, and more than zero Judges use it!</p>
|
support 32-bit, and more than zero Judges use it!</p>
|
||||||
<h3 id="about-x">About X</h3>
|
<h3 id="about-x">About X</h3>
|
||||||
<p>X client submissions should be as portable as possible. Submissions
|
<p>X client submissions should be as portable as possible. Submissions
|
||||||
that adapt to a wide collection of environments will be favored. For
|
that adapt to a wide collection of environments will be favored.</p>
|
||||||
example, don’t depend on a particular type or size of display. Don’t
|
<p>For example, don’t depend on a particular type or size of display.</p>
|
||||||
assume the use of a particular browser. Instead assume a generic
|
<p>Don’t assume the use of a particular browser. Instead assume a generic
|
||||||
browser that forms to a widely used <a href="https://www.w3.org/standards/">W3C
|
browser that forms to a widely used <a href="https://www.w3.org/standards/">W3C
|
||||||
standard</a>. Don’t assume a particular
|
standard</a>.</p>
|
||||||
sound sub-system or video driver is installed in the OS. Instead, make
|
<p>Don’t assume a particular sound sub-system or video driver is installed
|
||||||
use of a well known and widely available open source program (one that
|
in the OS. Instead, make use of a well known and widely available open
|
||||||
actually works) to display audio/visual data.</p>
|
source program (one that actually works) to display audio/visual data.</p>
|
||||||
<p>X client submissions should avoid using X related libraries and
|
<p>X client submissions should avoid using X related libraries and
|
||||||
software that are not in wide spread use.</p>
|
software that are not in wide spread use.</p>
|
||||||
<p>As of Red Hat RHEL9.0, the X.org server is deprecated. See the FAQ on
|
<p>As of Red Hat RHEL9.0, the X.org server is deprecated. See the FAQ on
|
||||||
“<a href="../faq.html#Xorg_deprecated">Xorg deprecation”</a>” for more details.
|
“<a href="../faq.html#Xorg_deprecated">Xorg deprecation</a>” for more details.
|
||||||
This does not mean that a submission using this will necessarily be
|
This does not mean that a submission using this will necessarily be
|
||||||
rejected, but it would be better if it can support Wayland in some way
|
rejected, but it would be better if it can support Wayland in some way
|
||||||
or another.</p>
|
or another.</p>
|
||||||
@@ -1264,8 +1278,9 @@ or another.</p>
|
|||||||
Use an open source toolkit that is widely and freely available instead.</p>
|
Use an open source toolkit that is widely and freely available instead.</p>
|
||||||
<p>X client submissions should try to not to depend on particular items in
|
<p>X client submissions should try to not to depend on particular items in
|
||||||
<code>.Xdefaults</code>. If you must do so, be sure to note the required lines in
|
<code>.Xdefaults</code>. If you must do so, be sure to note the required lines in
|
||||||
the your <code>remarks.md</code> file. They should also not depend on any
|
the your <code>remarks.md</code> file.</p>
|
||||||
particular window manager.</p>
|
<p>X client submissions should also not depend on any particular window
|
||||||
|
manager.</p>
|
||||||
<div id="about-curses">
|
<div id="about-curses">
|
||||||
<h3 id="about-libcurses">About libcurses</h3>
|
<h3 id="about-libcurses">About libcurses</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -1290,7 +1305,7 @@ process.</p>
|
|||||||
<p>If you do use ASCII tab characters in your non-markdown files, be aware
|
<p>If you do use ASCII tab characters in your non-markdown files, be aware
|
||||||
that some people may use a tab stop that is different than the common 8
|
that some people may use a tab stop that is different than the common 8
|
||||||
character tab stop.</p>
|
character tab stop.</p>
|
||||||
<p><strong>PLEASE</strong> observe our <a href="../markdown.html">Markdown Guidelines</a> when
|
<p><strong>PLEASE</strong> observe our <a href="../markdown.html">markdown guidelines</a> when
|
||||||
forming your submission’s <code>remarks.md</code> file. And if your submission
|
forming your submission’s <code>remarks.md</code> file. And if your submission
|
||||||
contains additional markdown files, please follow those same Guidelines
|
contains additional markdown files, please follow those same Guidelines
|
||||||
for those files.</p>
|
for those files.</p>
|
||||||
@@ -1315,22 +1330,21 @@ think your submission is obfuscated. This is particularly true if your
|
|||||||
submission has some very subtle obfuscations that we might otherwise
|
submission has some very subtle obfuscations that we might otherwise
|
||||||
overlook. <strong><<– Hint!</strong></p>
|
overlook. <strong><<– Hint!</strong></p>
|
||||||
<p>Anyone can format their code into a dense blob. A really clever author
|
<p>Anyone can format their code into a dense blob. A really clever author
|
||||||
will try format their submission using a “normal” formatting style such
|
will try formatting their submission using a “normal” formatting style
|
||||||
that at first glance (if you squint and don’t look at the details) the
|
such that at first glance (if you squint and don’t look at the details)
|
||||||
code might pass for non-obfuscated C. Deceptive comments, and
|
the code might pass for non-obfuscated C. Deceptive comments, and
|
||||||
misleading formatting, in some cases, may be a plus. On the other
|
misleading formatting, in some cases, may be a plus. On the other
|
||||||
hand, a misleading code style requires more source bytes.</p>
|
hand, a misleading code style requires more source bytes.</p>
|
||||||
<p>If you do elect to use misleading formatting and comments, we suggest
|
<p>If you do elect to use misleading formatting and comments, we suggest
|
||||||
you remark on this point in your <code>remarks.md</code> where you talk about why
|
you remark on this point in your <code>remarks.md</code> where you talk about why
|
||||||
you think your submission is obfuscated. On the other hand, if you are
|
you think your submission is obfuscated.</p>
|
||||||
pushing up against the size limits, you may be forced into creating a
|
<p>If you are pushing up against the size limits, you may be forced into
|
||||||
dense blob. Such are the trade-offs that obfuscators face!</p>
|
creating a dense blob. Such are the trade-offs that obfuscators face!</p>
|
||||||
<p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain
|
<p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain
|
||||||
useful, informative, and even humorous content about your submission.
|
useful, informative, and even humorous content about your submission.
|
||||||
Yes, this is a <strong>hint</strong>. :-)</p>
|
Yes, this is a <strong>hint</strong>. :-)</p>
|
||||||
<p>We <strong>RECOMMEND</strong> you put a reasonable amount effort into the content of
|
<p>We <strong>RECOMMEND</strong> you put a reasonable amount effort into the content of
|
||||||
the <code>remarks.md</code> file: it is a required file for a reason. :-)</p>
|
the <code>remarks.md</code> file: it is a required file for a reason. :-)</p>
|
||||||
<p>Try to be even more creative!</p>
|
|
||||||
<p>Jump to: <a href="#">top</a></p>
|
<p>Jump to: <a href="#">top</a></p>
|
||||||
<h3 id="miscellaneous">Miscellaneous</h3>
|
<h3 id="miscellaneous">Miscellaneous</h3>
|
||||||
<p>While we recognize that UNIX is not a universal operating system, the
|
<p>While we recognize that UNIX is not a universal operating system, the
|
||||||
@@ -1354,6 +1368,7 @@ UNIX Specification Version 4</a>.</p>
|
|||||||
<p>Some types of programs can’t excel (anti-tm) in some areas. Your
|
<p>Some types of programs can’t excel (anti-tm) in some areas. Your
|
||||||
program doesn’t have to excel in all areas, but doing well in several
|
program doesn’t have to excel in all areas, but doing well in several
|
||||||
areas really does help.</p>
|
areas really does help.</p>
|
||||||
|
<p>Try to be even more creative!</p>
|
||||||
<p>If there are limitations in your submission, you are highly encouraged
|
<p>If there are limitations in your submission, you are highly encouraged
|
||||||
to note such limitations in your <code>remarks.md</code> file. For example if
|
to note such limitations in your <code>remarks.md</code> file. For example if
|
||||||
your submission factors values up to a certain size, you might want to
|
your submission factors values up to a certain size, you might want to
|
||||||
@@ -1432,11 +1447,11 @@ be <strong>REJECTED</strong>!</p>
|
|||||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||||
tools:</p>
|
tools:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>iocccsize(1)</li>
|
<li><code>iocccsize(1)</code></li>
|
||||||
<li>txzchk(1)</li>
|
<li><code>txzchk(1)</code></li>
|
||||||
<li>fnamchk(1)</li>
|
<li><code>fnamchk(1)</code></li>
|
||||||
<li>chksubmit(1)</li>
|
<li><code>chksubmit(1)</code></li>
|
||||||
<li>chkentry(1)</li>
|
<li><code>chkentry(1)</code></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Do <strong>NOT</strong> use <code>txzchk(1)</code> or <code>fnamchk(1)</code> command line options that
|
<p>Do <strong>NOT</strong> use <code>txzchk(1)</code> or <code>fnamchk(1)</code> command line options that
|
||||||
are labelled “<strong>for TESTING purposes</strong>” in their respective man pages.</p>
|
are labelled “<strong>for TESTING purposes</strong>” in their respective man pages.</p>
|
||||||
@@ -1459,21 +1474,22 @@ your current directory is the top of the source tree:</p>
|
|||||||
having to install them first.</p>
|
having to install them first.</p>
|
||||||
<p>So that you do not have to repeatedly answer all the <code>mkiocccentry(1)</code>
|
<p>So that you do not have to repeatedly answer all the <code>mkiocccentry(1)</code>
|
||||||
questions, use <code>mkiocccentry -a answers ...</code> to create a file
|
questions, use <code>mkiocccentry -a answers ...</code> to create a file
|
||||||
containing the answers you first give, so later enter <code>mkiocccentry -i answers ...</code> to reuse those same answers.</p>
|
containing the answers you first give, and later enter <code>mkiocccentry -i answers ...</code> to reuse those same answers.</p>
|
||||||
<p>The <code>mkiocccentry -A answers ...</code> does the same thing except that the
|
<p>The <code>mkiocccentry -A answers ...</code> does the same thing except that the
|
||||||
<strong>answers file will be overwritten</strong>.</p>
|
<strong>answers file will be overwritten</strong>.</p>
|
||||||
<p>The <code>mkiocccentry -i answers ...</code> will still be required to confirm
|
<p>The <code>mkiocccentry -i answers ...</code> will still be required to confirm
|
||||||
“<em>Yes/No</em>” questions.</p>
|
“<em>Yes/No</em>” questions.</p>
|
||||||
<p>Use <code>mkiocccentry -Y -i answers ..</code> to force a yes answers with <strong>great
|
<p>Use <code>mkiocccentry -Y -i answers ...</code> to force a yes answers with <strong>great
|
||||||
caution</strong> because it might force a yes answer to something you do
|
caution</strong> because it might force a yes answer to something you do
|
||||||
<strong>NOT</strong> want, such as a change in your code that violates a detected
|
<strong>NOT</strong> want, such as a change in your code that violates a detected
|
||||||
rule.</p>
|
rule.</p>
|
||||||
<p>The <code>mkiocccentry -i answers ..</code> will still be required to confirm
|
<p>The <code>mkiocccentry -i answers ...</code> will still be required to confirm
|
||||||
“<em>Yes/No</em>” questions. While <code>mkiocccentry -Y -i answers ..</code> will force
|
“<em>Yes/No</em>” questions. While <code>mkiocccentry -Y -i answers ...</code> will force
|
||||||
yes answers, use with <strong>great caution</strong>, because it might force a yes
|
yes answers, use with <strong>great caution</strong>, because it might force a yes
|
||||||
answer to something you do <strong>NOT</strong> want.</p>
|
answer to something you do <strong>NOT</strong> want.</p>
|
||||||
<p>To help with not having to repeatedly enter a UUID, put your UUID into
|
<p>To help with not having to repeatedly enter a UUID, put your UUID into
|
||||||
a file and use <code>mkiocccentry -u uuidfile ...</code>, or use <code>mkiocccentry -U UUID ...</code> to give the <code>UUID</code> on the command line.</p>
|
a file and use <code>mkiocccentry -u uuidfile ...</code>, or use <code>mkiocccentry -U UUID ...</code> to give the <code>UUID</code> on the command line. If you also use <code>-a answers</code> or <code>-A answers</code> the UUID will be recorded, assuming it is a
|
||||||
|
valid UUID.</p>
|
||||||
<p>If you wish to <strong>test</strong> that your submission passes the
|
<p>If you wish to <strong>test</strong> that your submission passes the
|
||||||
<code>mkiocccentry(1)</code> tests without having to type in answers each time,
|
<code>mkiocccentry(1)</code> tests without having to type in answers each time,
|
||||||
you can use the <code>-d</code> or <code>-s seed</code> option to <code>mkiocccentry</code> for the tool
|
you can use the <code>-d</code> or <code>-s seed</code> option to <code>mkiocccentry</code> for the tool
|
||||||
@@ -1499,12 +1515,15 @@ the <strong>CORRECT</strong> answer.
|
|||||||
detects a number of issues (such as <a href="rules.html#rule2-size">Rule 2 - Size
|
detects a number of issues (such as <a href="rules.html#rule2-size">Rule 2 - Size
|
||||||
restrictions</a>) that you may ignore, however
|
restrictions</a>) that you may ignore, however
|
||||||
ignoring such issues <strong>comes with a SIGNIFICANT level of risk!</strong></p>
|
ignoring such issues <strong>comes with a SIGNIFICANT level of risk!</strong></p>
|
||||||
<p>Once the tarball is packaged it will run <code>txzchk(1)</code>, which will also
|
<p>Once the submission directory has been constructed the
|
||||||
run <code>fnamchk(1)</code>, as part of its algorithm.</p>
|
<code>mkiocccentry(1)</code> tool will run <code>chksubmit(1)</code> to verify everything is
|
||||||
|
well, <strong>before</strong> forming the tarball.</p>
|
||||||
|
<p>Once the tarball is formed <code>mkiocccentry(1)</code> will run <code>txzchk(1)</code>,
|
||||||
|
which will also run <code>fnamchk(1)</code>, as part of its algorithm.</p>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
The use of <code>mkiocccentry -W ...</code> is <strong>highly discouraged</strong> as this may
|
The use of <code>mkiocccentry -W ...</code> is <strong>highly discouraged</strong> as this may
|
||||||
ignore warnings about a problem that may cause your submission to be
|
ignore warnings about a problem that may cause your submission to be
|
||||||
<strong>REJECTED!</strong>.
|
<strong>REJECTED!</strong>
|
||||||
</p>
|
</p>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
The same can be said of <code>mkiocccentry -Y ...</code> , and to a lesser extent
|
The same can be said of <code>mkiocccentry -Y ...</code> , and to a lesser extent
|
||||||
@@ -1539,12 +1558,12 @@ they are found directly under the top level directory (<code>topdir</code>):
|
|||||||
</p>
|
</p>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
<ul>
|
<ul>
|
||||||
<li>README.md</li>
|
<li><code>README.md</code></li>
|
||||||
<li>index.html</li>
|
<li><code>index.html</code></li>
|
||||||
<li>prog</li>
|
<li><code>prog</code></li>
|
||||||
<li>prog.alt</li>
|
<li><code>prog.alt</code></li>
|
||||||
<li>prog.alt.o</li>
|
<li><code>prog.alt.o</code></li>
|
||||||
<li>prog.orig.c</li>
|
<li><code>prog.orig.c</code></li>
|
||||||
<li>filenames matching the <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code> file glob</li>
|
<li>filenames matching the <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code> file glob</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
@@ -1589,6 +1608,10 @@ comments is <strong>NOT</strong> allowed). However, with the exception of the
|
|||||||
<code>Makefile</code>, the <code>mkiocccentry(1)</code> tool will <strong>ONLY</strong> check file size.
|
<code>Makefile</code>, the <code>mkiocccentry(1)</code> tool will <strong>ONLY</strong> check file size.
|
||||||
</p>
|
</p>
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
|
On the other hand, <code>chksubmit(1)</code> will check that <code>.auth.json</code> and
|
||||||
|
<code>.info.json</code> are valid.
|
||||||
|
</p>
|
||||||
|
<p class="leftbar">
|
||||||
If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exists and is an empty
|
If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exists and is an empty
|
||||||
file, the <code>mkiocccentry(1)</code> tool will abort with a <strong>fatal error</strong>.
|
file, the <code>mkiocccentry(1)</code> tool will abort with a <strong>fatal error</strong>.
|
||||||
</p>
|
</p>
|
||||||
@@ -1649,16 +1672,6 @@ whether pigs have wings is likely to remain a debatable point to most.</p>
|
|||||||
world’s time standard. If your code prints time with seconds, we
|
world’s time standard. If your code prints time with seconds, we
|
||||||
prefer that your code be capable of printing the time of day during a
|
prefer that your code be capable of printing the time of day during a
|
||||||
leap-second where the value in seconds after the minute mark is <strong>60</strong>.</p>
|
leap-second where the value in seconds after the minute mark is <strong>60</strong>.</p>
|
||||||
<p>Other windows, on the other hand, might be OK: especially where “<strong>X
|
|
||||||
marks the spot</strong>”. Yet on the third hand, windows are best when they
|
|
||||||
are “unseen” (i.e., not dirty). :-)</p>
|
|
||||||
<p>The <a href="../judges.html">Judges</a>, as a group, have a history giving wide
|
|
||||||
degree of latitude to reasonable submissions. And recently they have
|
|
||||||
had as much longitudinal variation as it is possible to have on
|
|
||||||
<a href="https://science.nasa.gov/earth/">Earth</a>. :-) Other windows, on the
|
|
||||||
other hand, might be OK: especially where “<strong>X marks the spot</strong>”. Yet
|
|
||||||
on the third hand, windows are best when they are “unseen” (i.e., not
|
|
||||||
dirty). :-)</p>
|
|
||||||
<p>The <a href="../judges.html">Judges</a>, as a group, have a history giving wide
|
<p>The <a href="../judges.html">Judges</a>, as a group, have a history giving wide
|
||||||
degree of latitude to reasonable submissions. And recently they have
|
degree of latitude to reasonable submissions. And recently they have
|
||||||
had as much longitudinal variation as it is possible to have on
|
had as much longitudinal variation as it is possible to have on
|
||||||
|
|||||||
+191
-166
@@ -26,6 +26,32 @@ Because the **IOCCC29** was a substantial rewrite, only **important
|
|||||||
changes** from **IOCCC28** have been marked.
|
changes** from **IOCCC28** have been marked.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div id="guidelines">
|
||||||
|
# Guidelines
|
||||||
|
</div>
|
||||||
|
|
||||||
|
These [Guidelines](guidelines.html) are **hints** and **suggestions**,
|
||||||
|
**NOT** [Rules](rules.html).
|
||||||
|
|
||||||
|
While submissions that violate the [Guidelines](guidelines.html) are
|
||||||
|
allowed, submissions that remain within the
|
||||||
|
[Guidelines](guidelines.html) are preferred.
|
||||||
|
|
||||||
|
You are encouraged to review the following [FAQs](../faq.html):
|
||||||
|
|
||||||
|
* [How to enter the IOCCC](../quick-start.html#enter)
|
||||||
|
|
||||||
|
* [Obtaining and compiling the most recent mkiocccentry
|
||||||
|
toolkit](../faq.html#mkiocccentry)
|
||||||
|
|
||||||
|
* [How to upload your submission](./submit.html)
|
||||||
|
|
||||||
|
While the contest is **[open](../faq.html#open)**, you may modify your
|
||||||
|
previously uploaded submission by rebuilding your submission with the
|
||||||
|
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry), and
|
||||||
|
then re-uploading it to **the same slot number** on the [submit
|
||||||
|
server](https://submit.ioccc.org).
|
||||||
|
|
||||||
Be sure to read the [Rules](rules.html).
|
Be sure to read the [Rules](rules.html).
|
||||||
|
|
||||||
|
|
||||||
@@ -212,10 +238,10 @@ such as:
|
|||||||
* Etc.
|
* Etc.
|
||||||
|
|
||||||
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
|
authors who skillfully employed various techniques (often their own
|
||||||
code. If you do make use of such tools or services, then we
|
tools) to develop their code. If you do make use of such tools or
|
||||||
**ENCOURAGE you to describe how you used such tools** in your
|
services, then we **ENCOURAGE you to describe how you used such tools**
|
||||||
`remarks.md` file.
|
in your `remarks.md` file.
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
In short: you created it, you own it, its an original work **OR** you have
|
In short: you created it, you own it, its an original work **OR** you have
|
||||||
@@ -237,7 +263,9 @@ Jump to: [top](#)
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
Do **NOT** register more than one account just to try and get around
|
Do **NOT** register more than one account just to try and get around
|
||||||
the limit on the number of submission slots.
|
the limit on the number of submission slots, because if you do and we
|
||||||
|
discover that you did so your submissions will be rejected for
|
||||||
|
violating the rules.
|
||||||
|
|
||||||
|
|
||||||
Jump to: [top](#)
|
Jump to: [top](#)
|
||||||
@@ -569,28 +597,6 @@ Jump to: [top](#)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
These [Guidelines](guidelines.html) are **hints** and **suggestions**,
|
|
||||||
**NOT** [Rules](rules.html).
|
|
||||||
|
|
||||||
While submissions that violate the [Guidelines](guidelines.html) are
|
|
||||||
allowed, submissions that remain within the
|
|
||||||
[Guidelines](guidelines.html) are preferred.
|
|
||||||
|
|
||||||
You are encouraged to review the following [FAQs](../faq.html):
|
|
||||||
|
|
||||||
* [How to enter the IOCCC](../quick-start.html#enter)
|
|
||||||
|
|
||||||
* [Obtaining and compiling the most recent mkiocccentry
|
|
||||||
toolkit](../faq.html#mkiocccentry)
|
|
||||||
|
|
||||||
* [How to upload your submission](./submit.html)
|
|
||||||
|
|
||||||
While the contest is **[open](../faq.html#open)**, you may modify your
|
|
||||||
previously uploaded submission by rebuilding your submission with the
|
|
||||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry), and
|
|
||||||
then re-uploading it to **the same slot number** on the [submit
|
|
||||||
server](https://submit.ioccc.org).
|
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
The **official locale** of the **IOCCC** is **C**.
|
The **official locale** of the **IOCCC** is **C**.
|
||||||
</p>
|
</p>
|
||||||
@@ -612,6 +618,7 @@ apply a number of tests to a submission:
|
|||||||
* examine the algorithm
|
* examine the algorithm
|
||||||
* compile it (with flags to enable all warnings)
|
* compile it (with flags to enable all warnings)
|
||||||
* execute it
|
* execute it
|
||||||
|
* ...and various other things only we know about :-)
|
||||||
|
|
||||||
You should consider how your submission looks in each of the above
|
You should consider how your submission looks in each of the above
|
||||||
tests. You should ask yourself if your submission remains obscure
|
tests. You should ask yourself if your submission remains obscure
|
||||||
@@ -652,7 +659,7 @@ Of course, a correctly working submission might be better.
|
|||||||
We tend to look down on a [prime
|
We tend to look down on a [prime
|
||||||
number](https://en.wikipedia.org/wiki/Prime_number) printer that claims
|
number](https://en.wikipedia.org/wiki/Prime_number) printer that claims
|
||||||
that 16 is a prime number. Clever people will note that 16 might be
|
that 16 is a prime number. Clever people will note that 16 might be
|
||||||
prime under certain conditions. ;-) Wise people, when submitting
|
prime under certain conditions. :-) Wise people, when submitting
|
||||||
something clever will **fully explain such cleverness** in their
|
something clever will **fully explain such cleverness** in their
|
||||||
submission's `remarks.md` file.
|
submission's `remarks.md` file.
|
||||||
|
|
||||||
@@ -667,6 +674,54 @@ an appropriate level of obfuscation.
|
|||||||
A clean looking program with misleading comments and variable names
|
A clean looking program with misleading comments and variable names
|
||||||
might be a **VERY GOOD START** to a great submission!
|
might be a **VERY GOOD START** to a great submission!
|
||||||
|
|
||||||
|
Try to avoid submissions that play music that some people believe is
|
||||||
|
copyrighted music.
|
||||||
|
|
||||||
|
Did we remember to indicate that programs that blatantly use some
|
||||||
|
complex state machine to do something simple, are boring? We think we
|
||||||
|
did. :-)
|
||||||
|
|
||||||
|
Given two versions of the same program, one that is a compact blob of
|
||||||
|
code, and the other that is formatted more like a typical C program, we
|
||||||
|
tend to favor the second version. Of course, a third version of the
|
||||||
|
same program that is formatted in an interesting and/or obfuscated way,
|
||||||
|
would definitely win over the first two!
|
||||||
|
|
||||||
|
Remember, you can submit more than one submission. See the
|
||||||
|
[Rules](rules.html) for details (in particular, [Rule 8 - Submitting
|
||||||
|
requirements](rules.html#rule8-submitting-requirements)).
|
||||||
|
|
||||||
|
Please note that the C source below, besides lacking in obfuscation, is
|
||||||
|
**NOT** the smallest C source file that when compiled and run, dumps
|
||||||
|
core:
|
||||||
|
|
||||||
|
``` <!---c-->
|
||||||
|
main;
|
||||||
|
```
|
||||||
|
|
||||||
|
Unless you specify `-fwritable-strings` (see `COTHER` in the example
|
||||||
|
Makefile, described in the
|
||||||
|
FAQ on "[What are the detailed recommendations for a submission
|
||||||
|
Makefile](../faq.html#makefile_details)"), do not
|
||||||
|
assume this sort of code will work:
|
||||||
|
|
||||||
|
``` <!---c-->
|
||||||
|
char *T = "So many primes, so little time!";
|
||||||
|
...
|
||||||
|
T[14] = ';'; /* modifying a string requires: -fwritable-strings */
|
||||||
|
```
|
||||||
|
|
||||||
|
Even so, one should probably not assume that this is universally
|
||||||
|
accepted.
|
||||||
|
|
||||||
|
Initialized char arrays are OK to write over. For instance, this is
|
||||||
|
OK:
|
||||||
|
|
||||||
|
``` <!---c-->
|
||||||
|
char b[] = "Is this OK";
|
||||||
|
b[9] = 'k'; /* modifying an initialized char array is OK */
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Jump to: [top](#)
|
Jump to: [top](#)
|
||||||
|
|
||||||
@@ -742,6 +797,37 @@ rule as well.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
We tend to **DISLIKE** programs that:
|
||||||
|
|
||||||
|
* are very hardware specific
|
||||||
|
* are very OS version specific (`index(3)`/`strchr(3)` differences are
|
||||||
|
OK, but sockets/streams specific code is likely not to be)
|
||||||
|
* dump core or have compiler warnings (it is OK only if
|
||||||
|
you warn us in your `remarks.md` file)
|
||||||
|
* won't compile or run in a [Single UNIX
|
||||||
|
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||||
|
(UNIX-like) environment
|
||||||
|
* depend on a utility or application not normally found
|
||||||
|
in systems that conform to the [Single UNIX
|
||||||
|
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||||
|
* abuse the build file to get around the size limit
|
||||||
|
* obfuscate by use of ANSI trigraphs
|
||||||
|
* obfuscate by use of digraphs
|
||||||
|
* <p class="leftbar">obfuscate by use of `goto`s</p>
|
||||||
|
* are larger than they need to be
|
||||||
|
* have more lines than they need to have
|
||||||
|
* are "blob-ier" (just a pile of unformatted C code) than they need to be
|
||||||
|
* are rather similar to **[previous winners](../years.html)** :-(
|
||||||
|
* are **identical** to **[previous losers](https://en.wikipedia.org/wiki/Null_device)** :-)
|
||||||
|
* that mandate the exclusive use of a specific Integrated Development Environment (IDE)
|
||||||
|
|
||||||
|
In order to encourage submission portability, we **DISLIKE**
|
||||||
|
submissions that fail to build unless one is using an IDE. For example,
|
||||||
|
do not mandate that one must use Microsoft Visual Studio to compile
|
||||||
|
your submission.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Jump to: [top](#)
|
Jump to: [top](#)
|
||||||
|
|
||||||
|
|
||||||
@@ -779,8 +865,8 @@ and **NOT** like this:
|
|||||||
|
|
||||||
We really **DISLIKE** submissions that make blatant use of `#include`
|
We really **DISLIKE** submissions that make blatant use of `#include`
|
||||||
of large data files to get around the source code size limit. This does
|
of large data files to get around the source code size limit. This does
|
||||||
not mean `#include` of standard header files, just data files you
|
not mean `#include` of standard header files, just files you provide,
|
||||||
provide.
|
or system files such as `/usr/share/dict/words`.
|
||||||
|
|
||||||
On 28 January 2007, the Judges rescinded the requirement that the `#`
|
On 28 January 2007, the Judges rescinded the requirement that the `#`
|
||||||
in a C preprocessor directive must be the 1st non-whitespace byte.
|
in a C preprocessor directive must be the 1st non-whitespace byte.
|
||||||
@@ -871,12 +957,14 @@ file.
|
|||||||
|
|
||||||
<div id="gotos">
|
<div id="gotos">
|
||||||
<div id="goto">
|
<div id="goto">
|
||||||
|
### On `goto`s
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
Using a mass of `goto`s to obfuscate your code has become 'old' and is
|
Using a mass of `goto`s to obfuscate your code has become _old_ and is
|
||||||
unlikely to make it through the final rounds, if it even gets that far.
|
unlikely to make it through the final rounds, if it even gets that far.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="about-stdib">
|
<div id="about-stdib">
|
||||||
@@ -900,24 +988,23 @@ a useful purpose: they are often the only program that people attempt
|
|||||||
to completely understand. For this reason, we look for programs that
|
to completely understand. For this reason, we look for programs that
|
||||||
are compact, and are instructional.
|
are compact, and are instructional.
|
||||||
|
|
||||||
|
Programs that claim to be the smallest C source that does something, really
|
||||||
|
better be the smallest such program or they risk being rejected because
|
||||||
|
they do not work as documented.
|
||||||
|
|
||||||
We suggest that you avoid trying for the '**smallest self-replicating**'
|
We suggest that you avoid trying for the '**smallest self-replicating**'
|
||||||
source. The smallest, a [zero byte entry](../1994/smr/index.html), won in
|
source. The smallest, a [zero byte entry](../1994/smr/index.html), won in
|
||||||
[1994](../years.html#1994).
|
[1994](../years.html#1994).
|
||||||
|
|
||||||
|
|
||||||
<div id="one-liner">
|
<div id="one-liner">
|
||||||
### What a one-liner means
|
## What a one-liner means
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
One line programs should be short one line programs: say around **80**
|
One line programs should be short one line programs: say around **80**
|
||||||
to **132** bytes long. Going well beyond **132** bytes is a bit too
|
to **132** bytes long. Going well beyond **132** bytes is a bit too
|
||||||
long to be called a one-liner in our vague opinion.
|
long to be called a one-liner in our vague opinion.
|
||||||
Programs that claim to be the smallest C source that does something, really
|
|
||||||
better be the smallest such program or they risk being rejected because
|
|
||||||
they do not work as documented.
|
|
||||||
|
|
||||||
<div id="blobs">
|
<div id="blobs">
|
||||||
### About blobs of code
|
## About blobs of code
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
We want to get away from source that is simply a compact blob of
|
We want to get away from source that is simply a compact blob of
|
||||||
@@ -927,6 +1014,10 @@ Unless you are cramped for space, or unless you are entering the
|
|||||||
'**Best one liner**' category, we suggest that you format your program
|
'**Best one liner**' category, we suggest that you format your program
|
||||||
in a more creative way than simply forming excessively long lines.
|
in a more creative way than simply forming excessively long lines.
|
||||||
|
|
||||||
|
<div id="size">
|
||||||
|
## About size restrictions
|
||||||
|
</div>
|
||||||
|
|
||||||
The `Makefile` should not be used to try and get around the size limit.
|
The `Makefile` should not be used to try and get around the size limit.
|
||||||
It is one thing to make use of a several `-D`s on the compile line to
|
It is one thing to make use of a several `-D`s on the compile line to
|
||||||
help out, but it is quite another to use many bytes of `-D`s in order
|
help out, but it is quite another to use many bytes of `-D`s in order
|
||||||
@@ -944,34 +1035,6 @@ Your source code, post-pre-processing, should not exceed the size of
|
|||||||
### About environment
|
### About environment
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
We tend to **DISLIKE** programs that:
|
|
||||||
|
|
||||||
* are very hardware specific
|
|
||||||
* are very OS version specific (`index(3)`/`strchr(3)` differences are
|
|
||||||
OK, but sockets/streams specific code is likely not to be)
|
|
||||||
* dump core or have compiler warnings (it is OK only if
|
|
||||||
you warn us in your `remarks.md` file)
|
|
||||||
* won't compile or run in a [Single UNIX
|
|
||||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
|
||||||
(UNIX-like) environment
|
|
||||||
* depend on a utility or application not normally found
|
|
||||||
in systems that conform to the [Single UNIX
|
|
||||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
|
||||||
* abuse the build file to get around the size limit
|
|
||||||
* obfuscate by use of ANSI trigraphs
|
|
||||||
* obfuscate by use of digraphs
|
|
||||||
* are larger than they need to be
|
|
||||||
* have more lines than they need to have
|
|
||||||
* are "blob-ier" (just a pile of unformatted C code) than they need to be
|
|
||||||
* are rather similar to **[previous winners](../years.html)** :-(
|
|
||||||
* are **identical** to **[previous losers](https://en.wikipedia.org/wiki/Null_device)** :-)
|
|
||||||
* that mandate the exclusive use of a specific Integrated Development Environment (IDE)
|
|
||||||
|
|
||||||
In order to encourage submission portability, we **DISLIKE**
|
|
||||||
submissions that fail to build unless one is using an IDE. For example,
|
|
||||||
do not mandate that one must use Microsoft Visual Studio to compile
|
|
||||||
your submission.
|
|
||||||
|
|
||||||
The program must compile and link cleanly in a [Single UNIX
|
The program must compile and link cleanly in a [Single UNIX
|
||||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||||
(UNIX-like) environment. Therefore do not assume the system has a
|
(UNIX-like) environment. Therefore do not assume the system has a
|
||||||
@@ -981,6 +1044,10 @@ Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
|||||||
#include <windows.h> /* we DISLIKE this */
|
#include <windows.h> /* we DISLIKE this */
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Other windows, on the other hand, might be OK: especially where "**X
|
||||||
|
marks the spot**". Yet on the third hand, windows are best when they
|
||||||
|
are "unseen" (i.e., not dirty). :-)
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
You should try to restrict commands used in the build file to commands
|
You should try to restrict commands used in the build file to commands
|
||||||
found in [Single UNIX
|
found in [Single UNIX
|
||||||
@@ -997,54 +1064,6 @@ program is reasonably portable.
|
|||||||
We prefer programs that are portable across a wide variety of UNIX-like
|
We prefer programs that are portable across a wide variety of UNIX-like
|
||||||
operating systems (e.g., Linux, GNU Hurd, BSD, UNIX, macOS, etc.).
|
operating systems (e.g., Linux, GNU Hurd, BSD, UNIX, macOS, etc.).
|
||||||
|
|
||||||
Try to avoid submissions that play music that some people believe is
|
|
||||||
copyrighted music.
|
|
||||||
|
|
||||||
Did we remember to indicate that programs that blatantly use some
|
|
||||||
complex state machine to do something simple, are boring? We think we
|
|
||||||
did. :-)
|
|
||||||
|
|
||||||
Given two versions of the same program, one that is a compact blob of
|
|
||||||
code, and the other that is formatted more like a typical C program, we
|
|
||||||
tend to favor the second version. Of course, a third version of the
|
|
||||||
same program that is formatted in an interesting and/or obfuscated way,
|
|
||||||
would definitely win over the first two!
|
|
||||||
|
|
||||||
Remember, you can submit more than one submission. See the
|
|
||||||
[Rules](rules.html) for details (in particular, [Rule 8 - Submitting
|
|
||||||
requirements](rules.html#rule8-submitting-requirements)).
|
|
||||||
|
|
||||||
Please note that the C source below, besides lacking in obfuscation, is
|
|
||||||
**NOT** the smallest C source file that when compiled and run, dumps
|
|
||||||
core:
|
|
||||||
|
|
||||||
``` <!---c-->
|
|
||||||
main;
|
|
||||||
```
|
|
||||||
|
|
||||||
Unless you specify `-fwritable-strings` (see `COTHER` in the example
|
|
||||||
Makefile, described in the
|
|
||||||
FAQ on "[What are the detailed recommendations for a submission
|
|
||||||
Makefile](../faq.html#makefile_details)"), do not
|
|
||||||
assume this sort of code will work:
|
|
||||||
|
|
||||||
``` <!---c-->
|
|
||||||
char *T = "So many primes, so little time!";
|
|
||||||
...
|
|
||||||
T[14] = ';'; /* modifying a string requires: -fwritable-strings */
|
|
||||||
```
|
|
||||||
|
|
||||||
Even so, one should probably not assume that this is universally
|
|
||||||
accepted.
|
|
||||||
|
|
||||||
Initialized char arrays are OK to write over. For instance, this is
|
|
||||||
OK:
|
|
||||||
|
|
||||||
``` <!---c-->
|
|
||||||
char b[] = "Is this OK";
|
|
||||||
b[9] = 'k'; /* modifying an initialized char array is OK */
|
|
||||||
```
|
|
||||||
|
|
||||||
We prefer code that can run on either a 64-bit or 32-bit processor.
|
We prefer code that can run on either a 64-bit or 32-bit processor.
|
||||||
However, it is **UNWISE **to assume it will run on an some Intel-like
|
However, it is **UNWISE **to assume it will run on an some Intel-like
|
||||||
x86 architecture**.
|
x86 architecture**.
|
||||||
@@ -1070,25 +1089,29 @@ architectures. For instance, more recent versions of `macOS` do **NOT**
|
|||||||
support 32-bit, and more than zero Judges use it!
|
support 32-bit, and more than zero Judges use it!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="about-x">
|
<div id="about-x">
|
||||||
### About X
|
### About X
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
X client submissions should be as portable as possible. Submissions
|
X client submissions should be as portable as possible. Submissions
|
||||||
that adapt to a wide collection of environments will be favored. For
|
that adapt to a wide collection of environments will be favored.
|
||||||
example, don't depend on a particular type or size of display. Don't
|
|
||||||
assume the use of a particular browser. Instead assume a generic
|
For example, don't depend on a particular type or size of display.
|
||||||
|
|
||||||
|
Don't assume the use of a particular browser. Instead assume a generic
|
||||||
browser that forms to a widely used [W3C
|
browser that forms to a widely used [W3C
|
||||||
standard](https://www.w3.org/standards/). Don't assume a particular
|
standard](https://www.w3.org/standards/).
|
||||||
sound sub-system or video driver is installed in the OS. Instead, make
|
|
||||||
use of a well known and widely available open source program (one that
|
Don't assume a particular sound sub-system or video driver is installed
|
||||||
actually works) to display audio/visual data.
|
in the OS. Instead, make use of a well known and widely available open
|
||||||
|
source program (one that actually works) to display audio/visual data.
|
||||||
|
|
||||||
X client submissions should avoid using X related libraries and
|
X client submissions should avoid using X related libraries and
|
||||||
software that are not in wide spread use.
|
software that are not in wide spread use.
|
||||||
|
|
||||||
As of Red Hat RHEL9.0, the X.org server is deprecated. See the FAQ on
|
As of Red Hat RHEL9.0, the X.org server is deprecated. See the FAQ on
|
||||||
"[Xorg deprecation"](../faq.html#Xorg_deprecated)" for more details.
|
"[Xorg deprecation](../faq.html#Xorg_deprecated)" for more details.
|
||||||
This does not mean that a submission using this will necessarily be
|
This does not mean that a submission using this will necessarily be
|
||||||
rejected, but it would be better if it can support Wayland in some way
|
rejected, but it would be better if it can support Wayland in some way
|
||||||
or another.
|
or another.
|
||||||
@@ -1099,8 +1122,10 @@ Use an open source toolkit that is widely and freely available instead.
|
|||||||
|
|
||||||
X client submissions should try to not to depend on particular items in
|
X client submissions should try to not to depend on particular items in
|
||||||
`.Xdefaults`. If you must do so, be sure to note the required lines in
|
`.Xdefaults`. If you must do so, be sure to note the required lines in
|
||||||
the your `remarks.md` file. They should also not depend on any
|
the your `remarks.md` file.
|
||||||
particular window manager.
|
|
||||||
|
X client submissions should also not depend on any particular window
|
||||||
|
manager.
|
||||||
|
|
||||||
|
|
||||||
<div id="about-curses">
|
<div id="about-curses">
|
||||||
@@ -1136,7 +1161,7 @@ If you do use ASCII tab characters in your non-markdown files, be aware
|
|||||||
that some people may use a tab stop that is different than the common 8
|
that some people may use a tab stop that is different than the common 8
|
||||||
character tab stop.
|
character tab stop.
|
||||||
|
|
||||||
**PLEASE** observe our [Markdown Guidelines](../markdown.html) when
|
**PLEASE** observe our [markdown guidelines](../markdown.html) when
|
||||||
forming your submission's `remarks.md` file. And if your submission
|
forming your submission's `remarks.md` file. And if your submission
|
||||||
contains additional markdown files, please follow those same Guidelines
|
contains additional markdown files, please follow those same Guidelines
|
||||||
for those files.
|
for those files.
|
||||||
@@ -1168,17 +1193,18 @@ submission has some very subtle obfuscations that we might otherwise
|
|||||||
overlook. **<<-- Hint!**
|
overlook. **<<-- Hint!**
|
||||||
|
|
||||||
Anyone can format their code into a dense blob. A really clever author
|
Anyone can format their code into a dense blob. A really clever author
|
||||||
will try format their submission using a "normal" formatting style such
|
will try formatting their submission using a "normal" formatting style
|
||||||
that at first glance (if you squint and don't look at the details) the
|
such that at first glance (if you squint and don't look at the details)
|
||||||
code might pass for non-obfuscated C. Deceptive comments, and
|
the code might pass for non-obfuscated C. Deceptive comments, and
|
||||||
misleading formatting, in some cases, may be a plus. On the other
|
misleading formatting, in some cases, may be a plus. On the other
|
||||||
hand, a misleading code style requires more source bytes.
|
hand, a misleading code style requires more source bytes.
|
||||||
|
|
||||||
If you do elect to use misleading formatting and comments, we suggest
|
If you do elect to use misleading formatting and comments, we suggest
|
||||||
you remark on this point in your `remarks.md` where you talk about why
|
you remark on this point in your `remarks.md` where you talk about why
|
||||||
you think your submission is obfuscated. On the other hand, if you are
|
you think your submission is obfuscated.
|
||||||
pushing up against the size limits, you may be forced into creating a
|
|
||||||
dense blob. Such are the trade-offs that obfuscators face!
|
If you are pushing up against the size limits, you may be forced into
|
||||||
|
creating a dense blob. Such are the trade-offs that obfuscators face!
|
||||||
|
|
||||||
We **LIKE** reading `remarks.md` files, especially if they contain
|
We **LIKE** reading `remarks.md` files, especially if they contain
|
||||||
useful, informative, and even humorous content about your submission.
|
useful, informative, and even humorous content about your submission.
|
||||||
@@ -1187,8 +1213,6 @@ Yes, this is a **hint**. :-)
|
|||||||
We **RECOMMEND** you put a reasonable amount effort into the content of
|
We **RECOMMEND** you put a reasonable amount effort into the content of
|
||||||
the `remarks.md` file: it is a required file for a reason. :-)
|
the `remarks.md` file: it is a required file for a reason. :-)
|
||||||
|
|
||||||
Try to be even more creative!
|
|
||||||
|
|
||||||
Jump to: [top](#)
|
Jump to: [top](#)
|
||||||
|
|
||||||
|
|
||||||
@@ -1221,6 +1245,8 @@ Some types of programs can't excel (anti-tm) in some areas. Your
|
|||||||
program doesn't have to excel in all areas, but doing well in several
|
program doesn't have to excel in all areas, but doing well in several
|
||||||
areas really does help.
|
areas really does help.
|
||||||
|
|
||||||
|
Try to be even more creative!
|
||||||
|
|
||||||
If there are limitations in your submission, you are highly encouraged
|
If there are limitations in your submission, you are highly encouraged
|
||||||
to note such limitations in your `remarks.md` file. For example if
|
to note such limitations in your `remarks.md` file. For example if
|
||||||
your submission factors values up to a certain size, you might want to
|
your submission factors values up to a certain size, you might want to
|
||||||
@@ -1305,11 +1331,11 @@ The `mkiocccentry(1)` tool runs a number of checks by way of these
|
|||||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||||
tools:
|
tools:
|
||||||
|
|
||||||
* iocccsize(1)
|
* `iocccsize(1)`
|
||||||
* txzchk(1)
|
* `txzchk(1)`
|
||||||
* fnamchk(1)
|
* `fnamchk(1)`
|
||||||
* chksubmit(1)
|
* `chksubmit(1)`
|
||||||
* chkentry(1)
|
* `chkentry(1)`
|
||||||
|
|
||||||
Do **NOT** use `txzchk(1)` or `fnamchk(1)` command line options that
|
Do **NOT** use `txzchk(1)` or `fnamchk(1)` command line options that
|
||||||
are labelled "**for TESTING purposes**" in their respective man pages.
|
are labelled "**for TESTING purposes**" in their respective man pages.
|
||||||
@@ -1341,7 +1367,7 @@ having to install them first.
|
|||||||
|
|
||||||
So that you do not have to repeatedly answer all the `mkiocccentry(1)`
|
So that you do not have to repeatedly answer all the `mkiocccentry(1)`
|
||||||
questions, use `mkiocccentry -a answers ...` to create a file
|
questions, use `mkiocccentry -a answers ...` to create a file
|
||||||
containing the answers you first give, so later enter `mkiocccentry -i
|
containing the answers you first give, and later enter `mkiocccentry -i
|
||||||
answers ...` to reuse those same answers.
|
answers ...` to reuse those same answers.
|
||||||
|
|
||||||
The `mkiocccentry -A answers ...` does the same thing except that the
|
The `mkiocccentry -A answers ...` does the same thing except that the
|
||||||
@@ -1350,19 +1376,21 @@ The `mkiocccentry -A answers ...` does the same thing except that the
|
|||||||
The `mkiocccentry -i answers ...` will still be required to confirm
|
The `mkiocccentry -i answers ...` will still be required to confirm
|
||||||
"_Yes/No_" questions.
|
"_Yes/No_" questions.
|
||||||
|
|
||||||
Use `mkiocccentry -Y -i answers ..` to force a yes answers with **great
|
Use `mkiocccentry -Y -i answers ...` to force a yes answers with **great
|
||||||
caution** because it might force a yes answer to something you do
|
caution** because it might force a yes answer to something you do
|
||||||
**NOT** want, such as a change in your code that violates a detected
|
**NOT** want, such as a change in your code that violates a detected
|
||||||
rule.
|
rule.
|
||||||
|
|
||||||
The `mkiocccentry -i answers ..` will still be required to confirm
|
The `mkiocccentry -i answers ...` will still be required to confirm
|
||||||
"_Yes/No_" questions. While `mkiocccentry -Y -i answers ..` will force
|
"_Yes/No_" questions. While `mkiocccentry -Y -i answers ...` will force
|
||||||
yes answers, use with **great caution**, because it might force a yes
|
yes answers, use with **great caution**, because it might force a yes
|
||||||
answer to something you do **NOT** want.
|
answer to something you do **NOT** want.
|
||||||
|
|
||||||
To help with not having to repeatedly enter a UUID, put your UUID into
|
To help with not having to repeatedly enter a UUID, put your UUID into
|
||||||
a file and use `mkiocccentry -u uuidfile ...`, or use `mkiocccentry -U
|
a file and use `mkiocccentry -u uuidfile ...`, or use `mkiocccentry -U
|
||||||
UUID ...` to give the `UUID` on the command line.
|
UUID ...` to give the `UUID` on the command line. If you also use `-a
|
||||||
|
answers` or `-A answers` the UUID will be recorded, assuming it is a
|
||||||
|
valid UUID.
|
||||||
|
|
||||||
If you wish to **test** that your submission passes the
|
If you wish to **test** that your submission passes the
|
||||||
`mkiocccentry(1)` tests without having to type in answers each time,
|
`mkiocccentry(1)` tests without having to type in answers each time,
|
||||||
@@ -1401,13 +1429,17 @@ detects a number of issues (such as [Rule 2 - Size
|
|||||||
restrictions](rules.html#rule2-size)) that you may ignore, however
|
restrictions](rules.html#rule2-size)) that you may ignore, however
|
||||||
ignoring such issues **comes with a SIGNIFICANT level of risk!**
|
ignoring such issues **comes with a SIGNIFICANT level of risk!**
|
||||||
|
|
||||||
Once the tarball is packaged it will run `txzchk(1)`, which will also
|
Once the submission directory has been constructed the
|
||||||
run `fnamchk(1)`, as part of its algorithm.
|
`mkiocccentry(1)` tool will run `chksubmit(1)` to verify everything is
|
||||||
|
well, **before** forming the tarball.
|
||||||
|
|
||||||
|
Once the tarball is formed `mkiocccentry(1)` will run `txzchk(1)`,
|
||||||
|
which will also run `fnamchk(1)`, as part of its algorithm.
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
The use of `mkiocccentry -W ...` is **highly discouraged** as this may
|
The use of `mkiocccentry -W ...` is **highly discouraged** as this may
|
||||||
ignore warnings about a problem that may cause your submission to be
|
ignore warnings about a problem that may cause your submission to be
|
||||||
**REJECTED!**.
|
**REJECTED!**
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
@@ -1450,12 +1482,12 @@ they are found directly under the top level directory (`topdir`):
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
* README.md
|
* `README.md`
|
||||||
* index.html
|
* `index.html`
|
||||||
* prog
|
* `prog`
|
||||||
* prog.alt
|
* `prog.alt`
|
||||||
* prog.alt.o
|
* `prog.alt.o`
|
||||||
* prog.orig.c
|
* `prog.orig.c`
|
||||||
* filenames matching the `[0-9][0-9][0-9][0-9]_*.tar.bz2` file glob
|
* filenames matching the `[0-9][0-9][0-9][0-9]_*.tar.bz2` file glob
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -1507,6 +1539,11 @@ comments is **NOT** allowed). However, with the exception of the
|
|||||||
`Makefile`, the `mkiocccentry(1)` tool will **ONLY** check file size.
|
`Makefile`, the `mkiocccentry(1)` tool will **ONLY** check file size.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p class="leftbar">
|
||||||
|
On the other hand, `chksubmit(1)` will check that `.auth.json` and
|
||||||
|
`.info.json` are valid.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p class="leftbar">
|
<p class="leftbar">
|
||||||
If the optional file `try.alt.sh`, or `try.sh` exists and is an empty
|
If the optional file `try.alt.sh`, or `try.sh` exists and is an empty
|
||||||
file, the `mkiocccentry(1)` tool will abort with a **fatal error**.
|
file, the `mkiocccentry(1)` tool will abort with a **fatal error**.
|
||||||
@@ -1589,18 +1626,6 @@ world's time standard. If your code prints time with seconds, we
|
|||||||
prefer that your code be capable of printing the time of day during a
|
prefer that your code be capable of printing the time of day during a
|
||||||
leap-second where the value in seconds after the minute mark is **60**.
|
leap-second where the value in seconds after the minute mark is **60**.
|
||||||
|
|
||||||
Other windows, on the other hand, might be OK: especially where "**X
|
|
||||||
marks the spot**". Yet on the third hand, windows are best when they
|
|
||||||
are "unseen" (i.e., not dirty). :-)
|
|
||||||
|
|
||||||
The [Judges](../judges.html), as a group, have a history giving wide
|
|
||||||
degree of latitude to reasonable submissions. And recently they have
|
|
||||||
had as much longitudinal variation as it is possible to have on
|
|
||||||
[Earth](https://science.nasa.gov/earth/). :-) Other windows, on the
|
|
||||||
other hand, might be OK: especially where "**X marks the spot**". Yet
|
|
||||||
on the third hand, windows are best when they are "unseen" (i.e., not
|
|
||||||
dirty). :-)
|
|
||||||
|
|
||||||
The [Judges](../judges.html), as a group, have a history giving wide
|
The [Judges](../judges.html), as a group, have a history giving wide
|
||||||
degree of latitude to reasonable submissions. And recently they have
|
degree of latitude to reasonable submissions. And recently they have
|
||||||
had as much longitudinal variation as it is possible to have on
|
had as much longitudinal variation as it is possible to have on
|
||||||
|
|||||||
Reference in new issue
Block a user