Merge pull request #2419 from xexyl/fmt-typo-next
Finish format/typo checks in next/
This commit is contained in:
6 files changed
+419
-364
No files matched your search
@@ -1,22 +1,22 @@
|
|||||||
<!-- START: this line starts content from: inc/guidelines.closed.hdr -->
|
|
||||||
|
|
||||||
# WARNING: These guidelines are OUT OF DATE
|
# WARNING: These guidelines are OUT OF DATE
|
||||||
|
|
||||||
They are a **very tentative proposal** for the next IOCCC
|
These guidelines are a **VERY TENTATIVE proposal** for the next IOCCC
|
||||||
that is **VERY LIKELY** to be updated before the next IOCCC.
|
and are **VERY LIKELY** to be updated before the next IOCCC.
|
||||||
They are are provided as a **very tentative** hint at what
|
They are are provided as a **VERY TENTATIVE** hint at **what
|
||||||
might be used in a future IOCCC.
|
MIGHT** be used in the next IOCCC.
|
||||||
|
|
||||||
Please regard these guidelines as a historic archive.
|
Please regard these guidelines as a historical archive.
|
||||||
|
|
||||||
|
|
||||||
# The IOCCC is closed
|
# The IOCCC is closed
|
||||||
|
|
||||||
The IOCCC is **NOT** accepting new submissions at this time. See the
|
The IOCCC is **NOT** accepting new submissions at this time. See the
|
||||||
[IOCCC winning entries page](../years.html) for the entries that have won the IOCCC.
|
[IOCCC winning entries page](../years.html) for the entries that have won the
|
||||||
|
IOCCC in the past.
|
||||||
|
|
||||||
Watch both [the IOCCC status page](../status.html) and the
|
Watch both [the IOCCC status page](../status.html) and the
|
||||||
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about future IOCCC openings.
|
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about
|
||||||
|
future IOCCC openings.
|
||||||
|
|
||||||
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
||||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
+11
-8
@@ -2,21 +2,24 @@
|
|||||||
|
|
||||||
# WARNING: These rules are OUT OF DATE
|
# WARNING: These rules are OUT OF DATE
|
||||||
|
|
||||||
They are a **very tentative proposal** for the next IOCCC
|
These rules are a **VERY TENTATIVE proposal** for the next IOCCC
|
||||||
that is **VERY LIKELY** to be updated before the next IOCCC.
|
and are **VERY LIKELY** to be updated before the next IOCCC.
|
||||||
They are are provided as a **very tentative** hint at what
|
They are are provided as a **very tentative** hint at **what
|
||||||
might be used in a future IOCCC.
|
MIGHT** be used in the next IOCCC.
|
||||||
|
|
||||||
Please regard these rules as a historic archive.
|
Please regard these rules as a historical archive.
|
||||||
|
|
||||||
|
|
||||||
# The IOCCC is closed
|
# The IOCCC is closed
|
||||||
|
|
||||||
The IOCCC is **NOT** accepting new submissions at this time. See the
|
The IOCCC is **NOT** accepting new submissions at this time. See the [IOCCC
|
||||||
[IOCCC winning entries page](../years.html) for the entries that have won the IOCCC.
|
winning entries page](../years.html) for the entries that have won the IOCCC in
|
||||||
|
the past.
|
||||||
|
|
||||||
Watch both [the IOCCC status page](../status.html) and the
|
Watch both [the IOCCC status page](../status.html) and the
|
||||||
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about future IOCCC openings.
|
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about
|
||||||
|
future IOCCC openings.
|
||||||
|
|
||||||
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
||||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
|
|
||||||
+144
-126
@@ -382,22 +382,23 @@
|
|||||||
<!-- 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: next/guidelines.md -->
|
<!-- BEFORE: 1st line of markdown file: next/guidelines.md -->
|
||||||
<!-- START: this line starts content from: inc/guidelines.closed.hdr -->
|
|
||||||
<h1 id="warning-these-guidelines-are-out-of-date">WARNING: These guidelines are OUT OF DATE</h1>
|
<h1 id="warning-these-guidelines-are-out-of-date">WARNING: These guidelines are OUT OF DATE</h1>
|
||||||
<p>These guidelines are a <strong>very tentative proposal</strong> for the next IOCCC
|
<p>These guidelines are a <strong>VERY TENTATIVE proposal</strong> for the next IOCCC
|
||||||
that is <strong>VERY LIKELY</strong> to be updated before the next IOCCC.
|
and are <strong>VERY LIKELY</strong> to be updated before the next IOCCC.
|
||||||
They are are provided as a <strong>very tentative</strong> hint at what
|
They are are provided as a <strong>VERY TENTATIVE</strong> hint at <strong>what
|
||||||
might be used in a future IOCCC.</p>
|
MIGHT</strong> be used in the next IOCCC.</p>
|
||||||
<p>Please regard these guidelines as a historic archive.</p>
|
<p>Please regard these guidelines as a historical archive.</p>
|
||||||
<h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
|
<h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
|
||||||
<p>The IOCCC is <strong>NOT</strong> accepting new submissions at this time. See the
|
<p>The IOCCC is <strong>NOT</strong> accepting new submissions at this time. See the
|
||||||
<a href="../years.html">IOCCC winning entries page</a> for the entries that have won the IOCCC.</p>
|
<a href="../years.html">IOCCC winning entries page</a> for the entries that have won the
|
||||||
|
IOCCC in the past.</p>
|
||||||
<p>Watch both <a href="../status.html">the IOCCC status page</a> and the
|
<p>Watch both <a href="../status.html">the IOCCC status page</a> and the
|
||||||
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about future IOCCC openings.</p>
|
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about
|
||||||
|
future IOCCC openings.</p>
|
||||||
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
||||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
<h1 id="th-international-obfuscated-c-code-contest-official-guidelines">28th International Obfuscated C Code Contest Official Guidelines</h1>
|
<h1 id="th-international-obfuscated-c-code-contest-official-guidelines">28th International Obfuscated C Code Contest Official Guidelines</h1>
|
||||||
<p>Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.</p>
|
<p>Copyright © 2024 Leonid A. Broukhis and Landon Curt Noll.</p>
|
||||||
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
||||||
granted provided this this copyright and notice are included in its entirety
|
granted provided this this copyright and notice are included in its entirety
|
||||||
and remains unaltered. All other uses must receive prior permission in
|
and remains unaltered. All other uses must receive prior permission in
|
||||||
@@ -415,10 +416,10 @@ submit entries to the <a href="https://www.ioccc.org">International Obfuscated C
|
|||||||
(IOCCC)</a>.</p>
|
(IOCCC)</a>.</p>
|
||||||
<p>These are not the IOCCC rules, though it does contain comments about
|
<p>These are not the IOCCC rules, though it does contain comments about
|
||||||
them. The guidelines should be viewed as <em>hints</em> and <em>suggestions</em>.
|
them. The guidelines should be viewed as <em>hints</em> and <em>suggestions</em>.
|
||||||
Entries that violate the guidelines but remain within the rules are
|
Entries that violate the guidelines but remain within the rules <em>are
|
||||||
allowed. Even so, you are safer if you remain within the guidelines.</p>
|
allowed</em>. Even so, you are safer if you remain within the guidelines.</p>
|
||||||
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
|
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
|
||||||
The rules are typically sent out with these guidelines.</p>
|
The rules are typically published along with these guidelines.</p>
|
||||||
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</h1>
|
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</h1>
|
||||||
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>YYYY-MMM-DD HH:MM:SS UTC</strong>.
|
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2024-MMM-DD HH:MM:SS UTC</strong> to <strong>YYYY-MMM-DD HH:MM:SS UTC</strong>.
|
||||||
** XXX - This date and time is TDB - XXX **.</p>
|
** XXX - This date and time is TDB - XXX **.</p>
|
||||||
@@ -427,30 +428,31 @@ for be a <strong>fun</strong>ctional UTC time. :-)</p>
|
|||||||
<p>Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
<p>Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
||||||
(contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
(contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||||
toolkit</a>)
|
toolkit</a>)
|
||||||
tool should be considered provisional <strong>BETA</strong> versions and may be
|
tool should be considered provisional <strong>BETA</strong> versions and <strong>may be
|
||||||
adjusted <strong>AT ANY TIME</strong>.</p>
|
adjusted <em>AT ANY TIME</em></strong>.</p>
|
||||||
<p>The IOCCC submission URL is <a href="https://submit.ioccc.org/" class="uri">https://submit.ioccc.org/</a>.</p>
|
<p>The IOCCC submission URL is <a href="https://submit.ioccc.org/" class="uri">https://submit.ioccc.org/</a>.</p>
|
||||||
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2024-MMM-DD HH:MM:SS UTC</strong>.
|
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2024-MMM-DD HH:MM:SS UTC</strong>.
|
||||||
** XXX - This date and time is TDB - XXX **.</p>
|
<strong>XXX - This date and time is TDB - XXX </strong>.</p>
|
||||||
<p>Please wait to submit your entries until after that time.</p>
|
<p>Please wait to submit your entries until after that time.</p>
|
||||||
<p>The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available
|
<p>The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry)
|
||||||
on the official IOCCC website on or slightly before start of this IOCCC.
|
tool will be available on the official IOCCC website on or slightly before start
|
||||||
Please check the IOCCC FAQ <a href="../faq.html#submit">How to submit</a>.
|
of this IOCCC. Please check the IOCCC <a href="../faq.html#submit">FAQ about how to submit</a>
|
||||||
on or after the start of this IOCCC to be sure you are using the correct
|
to see how to submit entries, on or after the start of this IOCCC, to be sure
|
||||||
versions of these items before using the IOCCC entry submission URL.</p>
|
you are using the correct versions of these items before using the IOCCC entry
|
||||||
|
submission URL.</p>
|
||||||
<h1 id="hints-and-suggestions">HINTS AND SUGGESTIONS:</h1>
|
<h1 id="hints-and-suggestions">HINTS AND SUGGESTIONS:</h1>
|
||||||
<p>You are encouraged to examine the winners of previous contests. See
|
<p>You are encouraged to examine the winners of previous contests. See
|
||||||
<strong>FOR MORE INFORMATION</strong> for details on how to get previous winners.</p>
|
<strong>FOR MORE INFORMATION</strong> for details on how to get previous winners.</p>
|
||||||
<p>Keep in mind that rules change from year to year, so some winning entries
|
<p>Keep in mind that rules change from year to year, so some winning entries
|
||||||
may not be valid entries this year. What was unique and novel one year
|
might not be valid entries this year. What <em>was</em> unique and novel one year
|
||||||
might be ‘old’ the next year.</p>
|
<em>might be ‘old’ the next year</em>.</p>
|
||||||
<p>An entry is usually examined in a number of ways. We typically apply
|
<p>An entry is usually examined in a number of ways. We typically apply
|
||||||
a number of tests to an entry:</p>
|
a number of tests to an entry:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>look at the original source</li>
|
<li>look at the original source</li>
|
||||||
<li>convert ANSI trigraphs to ASCII</li>
|
<li>convert ANSI trigraphs to ASCII</li>
|
||||||
<li>C pre-process the source ignoring ‘#include’ lines</li>
|
<li>C pre-process the source ignoring <code>#include</code> lines</li>
|
||||||
<li>C pre-process the source ignoring ‘#define’ and ‘#include’ lines</li>
|
<li>C pre-process the source ignoring <code>#define</code> <em>and</em> <code>#include</code> lines</li>
|
||||||
<li>run it through a C beautifier</li>
|
<li>run it through a C beautifier</li>
|
||||||
<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>
|
||||||
@@ -461,45 +463,48 @@ You should ask yourself if your entry remains obscure after it has been
|
|||||||
‘<em>cleaned up</em>’ by the C pre-processor and a C beautifier.</p>
|
‘<em>cleaned up</em>’ by the C pre-processor and a C beautifier.</p>
|
||||||
<p>Your entry need not pass all of the above tests. In certain
|
<p>Your entry need not pass all of the above tests. In certain
|
||||||
cases, a test is not important. Entries that compete for the
|
cases, a test is not important. Entries that compete for the
|
||||||
‘strangest/most creative source layout’ need not do as well as
|
‘<em>strangest/most creative source layout</em>’ need not do as well as
|
||||||
others in terms of their algorithm. On the other hand, given
|
others in terms of their algorithm. On the other hand, given
|
||||||
two such entries, we are more inclined to pick the entry that
|
two such entries, we are more inclined to pick the entry that
|
||||||
does something interesting when you run it.</p>
|
does something interesting when you run it.</p>
|
||||||
<p>We try to avoid limiting creativity in our rules. As such, we leave
|
<p>We try to avoid limiting creativity in our rules. As such, we leave
|
||||||
the contest open for creative rule interpretation. As in real life
|
the contest open for creative rule interpretation. As in <a href="https://en.wikipedia.org/wiki/Real_life">real
|
||||||
|
life</a>
|
||||||
programming, interpreting a requirements document or a customer request
|
programming, interpreting a requirements document or a customer request
|
||||||
is important. For this reason, we often award ‘worst abuse of the
|
is important. For this reason, we often award ‘<em>Best abuse of the
|
||||||
rules’ to an entry that illustrates this point in an ironic way.</p>
|
rules</em>’ or ‘<em>Worst abuse of the rules</em>’ to an entry that illustrates this point
|
||||||
|
in an ironic way.</p>
|
||||||
<p>We do realize that there are holes in the rules, and invite entries
|
<p>We do realize that there are holes in the rules, and invite entries
|
||||||
to attempt to exploit them. We will award ‘worst abuse of the rules’
|
to attempt to exploit them. We will award ‘<em>Worst abuse of the rules</em>’ or
|
||||||
and then plug the hole next year.</p>
|
‘<em>Best abuse of the rules</em>’ and then plug the hole next year.</p>
|
||||||
<p><strong><code>|</code></strong> Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)</p>
|
<p><strong><code>|</code></strong> Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)</p>
|
||||||
<p><strong><code>|</code></strong> There may be less than 2^7+1 reasons why these guidelines seem obfuscated.</p>
|
<p><strong><code>|</code></strong> There may be less than 2^7+1 reasons why these guidelines seem obfuscated.</p>
|
||||||
<p>Check out your program and be sure that it works. We sometimes make
|
<p>Check out your program and be sure that it works. We sometimes make
|
||||||
the effort to debug an entry that has a slight problem, particularly
|
the effort to debug an entry that has a slight problem, particularly
|
||||||
in or near the final round. On the other hand, we have seen some
|
in or near the final round. On the other hand, we have seen some
|
||||||
of the best entries fall down because they didn’t work.</p>
|
of the best entries fall down because they didn’t work.</p>
|
||||||
<p>We tend to look down on a prime number printer that claims that
|
<p>We tend to look down on a <a href="https://en.wikipedia.org/wiki/Prime_number">prime
|
||||||
|
number</a> printer that claims that
|
||||||
16 is a prime number. If you do have a bug, you are better off
|
16 is a prime number. If you do have a bug, you are better off
|
||||||
documenting it. Noting “this entry sometimes prints the 4th power
|
documenting it. Noting “<em>this entry sometimes prints the 4th power
|
||||||
of a prime by mistake” would save the above entry. And sometimes,
|
of a prime by mistake</em>” would save the above entry. And sometimes,
|
||||||
a strange bug/feature can even help the entry! Of course, a correctly
|
a strange bug/feature can even help the entry! Of course, a correctly
|
||||||
working entry is best. Clever people will note that 16 might be prime
|
working entry is best. Clever people will note that 16 might be prime
|
||||||
under certain conditions. Wise people, when submitting something clever
|
under certain conditions. Wise people, when submitting something clever
|
||||||
will fully explain such cleverness in their entry’s remarks file.</p>
|
will fully explain such cleverness in their entry’s remarks file.</p>
|
||||||
<p>People who are considering to just use some complex mathematical
|
<p>People who are considering to just use some complex mathematical
|
||||||
function or state machine to spell out something such as “hello,
|
function or state machine to spell out something such as “<em>hello,
|
||||||
world!” really really, and we do mean really, do need to be more creative.</p>
|
world!</em>” really really, and we do mean really, do need to be more creative.</p>
|
||||||
<p>Ultra-obfuscated programs are, in some cases, easier to
|
<p>Ultra-obfuscated programs are, in some cases, easier to
|
||||||
deobfuscate than subtly-obfuscated programs. Consider using
|
deobfuscate than subtly-obfuscated programs. Consider using
|
||||||
misleading or subtle tricks layered on top of or under an
|
misleading or subtle tricks layered on top of or under an
|
||||||
appropriate level of obfuscation. A clean looking program with
|
appropriate level of obfuscation. A clean looking program with
|
||||||
misleading comments and variable names might be a good start.</p>
|
misleading comments and variable names might be a good start.</p>
|
||||||
<p>When programs use VTxxx/ANSI sequences, they should NOT limited to a
|
<p>When programs use VTxxx/ANSI sequences, they should NOT be limited to a
|
||||||
specific terminal brand. Those programs that work in a standard xterm
|
specific terminal brand. Those programs that work in a standard xterm
|
||||||
are considered more portable.</p>
|
are considered more portable.</p>
|
||||||
<p><strong><code>|</code></strong> Rule 2 (the size rule) refers to the use of the IOCCC size tool called <code>iocccsize</code>.</p>
|
<p><strong><code>|</code></strong> Rule 2 (the size rule) refers to the use of the IOCCC size tool called <code>iocccsize</code>.</p>
|
||||||
<p><strong><code>|</code></strong> See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> for how to compile and <code>iocccsize</code>.</p>
|
<p><strong><code>|</code></strong> See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> for how to compile <code>iocccsize.c</code>.</p>
|
||||||
<p><strong><code>|</code></strong> To further clarify rule 2, we subdivided it into two parts, 2a and 2b.</p>
|
<p><strong><code>|</code></strong> To further clarify rule 2, we subdivided it into two parts, 2a and 2b.</p>
|
||||||
<p><strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size rule 2a AND your entry
|
<p><strong><code>|</code></strong> Your entry must satisfy BOTH the maximum size rule 2a AND your entry
|
||||||
must satisfy the IOCCC size tool rule 2b.</p>
|
must satisfy the IOCCC size tool rule 2b.</p>
|
||||||
@@ -520,32 +525,33 @@ ASCII formfeed, and ASCII carriage return.</p>
|
|||||||
<p>In cases where the above summary and the algorithm implemented by
|
<p>In cases where the above summary and the algorithm implemented by
|
||||||
the IOCCC size tool source code conflict, the algorithm implemented
|
the IOCCC size tool source code conflict, the algorithm implemented
|
||||||
by the IOCCC size tool source code is preferred by the judges.</p>
|
by the IOCCC size tool source code is preferred by the judges.</p>
|
||||||
<p><strong><code>|</code></strong> There are at least 2 other reasons for selecting 2503 as the 2nd limit
|
<p><strong><code>|</code></strong> There are at least 2 other reasons for selecting 2503 as the 2nd limit</p>
|
||||||
<strong><code>|</code></strong> besides the fact that 2053 is a prime. These reasons
|
<p><strong><code>|</code></strong> besides the fact that 2503 is a prime. These reasons</p>
|
||||||
<strong><code>|</code></strong> may be searched for and discovered if you are <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>. :-)
|
<p><strong><code>|</code></strong> may be searched for and discovered if you are <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>. :-)</p>
|
||||||
<strong><code>|</code></strong> Moreover, 2053 was the number of the kernel disk pack of one of the
|
<p><strong><code>|</code></strong> Moreover, 2053 was the number of the kernel disk pack of one of the</p>
|
||||||
<strong><code>|</code></strong> judge’s BESM-6, and 2503 is a decimal anagram of 2053.</p>
|
<p><strong><code>|</code></strong> judge’s BESM-6, and 2503 is a decimal anagram of 2053.</p>
|
||||||
<p>Take note that this secondary limit imposed by the IOCCC size tool
|
<p>Take note that this secondary limit imposed by the IOCCC size tool
|
||||||
obviates some of the need to #define C reserved words in an effort
|
obviates some of the need to <code>#define</code> C reserved words in an effort
|
||||||
to get around the size limits of rule 2.</p>
|
to get around the size limits of rule 2.</p>
|
||||||
<p>Yes Virginia, <strong>that is a hint</strong>!</p>
|
<p>Yes Virginia, <strong>that is a hint</strong>!</p>
|
||||||
<p>We applaud programs that do not issue warnings when compiled.
|
<p>We applaud programs that do not issue warnings when compiled.
|
||||||
To avoid warnings, you might be tempted to add various -Wno-foobar
|
To avoid warnings, you might be tempted to add various <code>-Wno-foobar</code>
|
||||||
flags. Unfortunately such flags are NOT portable. Moreover,
|
flags. Unfortunately such flags are NOT portable. Moreover,
|
||||||
such flags are not consistent between different C compilers.
|
such flags are not consistent between different C compilers.
|
||||||
Therefore we recommend that you consider one of several approaches:</p>
|
Therefore we recommend that you consider one of several approaches:</p>
|
||||||
<ol type="a">
|
<ol type="a">
|
||||||
<li>Write code that does not generate compiler warnings</li>
|
<li>Write code that does not generate compiler warnings (but see <a href="../faq.html#faq3_11">the FAQ about
|
||||||
|
clang -Weverything</a>)</li>
|
||||||
<li>Do not use flags that disable compiler warnings</li>
|
<li>Do not use flags that disable compiler warnings</li>
|
||||||
<li>Provide instructions (such as in your Makefile) that
|
<li>Provide instructions (such as in your Makefile) that
|
||||||
uses appropriate disable compiler warnings flags for
|
use the appropriate disable compiler warnings flags for
|
||||||
both clang and gcc</li>
|
both clang and gcc</li>
|
||||||
<li>Do something creative</li>
|
<li>Do something creative</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
|
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
|
||||||
<p>Doing masses of #defines to obscure the source has become ‘old’. We
|
<p>Doing masses of <code>#defines</code> to obscure the source has become ‘old’. We
|
||||||
tend to ‘see thru’ masses of #defines due to our pre-processor tests
|
tend to ‘see thru’ masses of <code>#defines</code> due to our pre-processor tests
|
||||||
that we apply. Simply abusing #defines or -Dfoo=bar won’t go as far
|
that we apply. Simply abusing <code>#defines</code> or <code>-Dfoo=bar</code> won’t go as far
|
||||||
as a program that is more well rounded in confusion.</p>
|
as a program that is more well rounded in confusion.</p>
|
||||||
<p>Many C compilers dislike the following code, and so do we:</p>
|
<p>Many C compilers dislike the following code, and so do we:</p>
|
||||||
<pre><code> #define d define
|
<pre><code> #define d define
|
||||||
@@ -569,15 +575,15 @@ to compile compile your code using:</p>
|
|||||||
<p>For compilers, such as clang, that have the <code>-Weverything</code> option, try
|
<p>For compilers, such as clang, that have the <code>-Weverything</code> option, try
|
||||||
to make your code compile warning free using:</p>
|
to make your code compile warning free using:</p>
|
||||||
<pre><code> -Wall -Wextra -Weverything -pedantic</code></pre>
|
<pre><code> -Wall -Wextra -Weverything -pedantic</code></pre>
|
||||||
<p>.. though see <a href="../faq.html#faq3_11">Why do Makefiles use -Weverything with
|
<p>.. though, again, see <a href="../faq.html#faq3_11">the FAQ about clang -Weverything</a> in
|
||||||
clang?</a> in the <a href="../faq.html">FAQ</a>.</p>
|
the <a href="../faq.html">FAQ</a>.</p>
|
||||||
<p>If you must turn off various warnings on the compile line such as:</p>
|
<p>If you must turn off various warnings on the compile line such as:</p>
|
||||||
<pre><code> ... -Wno-empty-body -Wno-return-type ...</code></pre>
|
<pre><code> ... -Wno-empty-body -Wno-return-type ...</code></pre>
|
||||||
<p>be sure to clearly state so in your remarks AS WELL AS in
|
<p>be sure to clearly state so in your remarks <strong>AS WELL AS</strong> in
|
||||||
your “how to build” / Makefile.</p>
|
your “how to build” / Makefile.</p>
|
||||||
<p>All other things being equal, a program that must turn off fewer
|
<p>All other things being equal, a program that must turn off fewer
|
||||||
warnings will be considered better, for certain values of better.</p>
|
warnings will be considered better, for certain values of better.</p>
|
||||||
<p>Unless you clearly state otherwise in your remarks AS WELL AS in
|
<p>Unless you clearly state otherwise in your remarks <strong>AS WELL AS</strong> in
|
||||||
your “how to build” / Makefile we will compile using:</p>
|
your “how to build” / Makefile we will compile using:</p>
|
||||||
<pre><code> -O3 -std=c11</code></pre>
|
<pre><code> -O3 -std=c11</code></pre>
|
||||||
<p>Anyone care to submit an entry that makes gratuitous use of all
|
<p>Anyone care to submit an entry that makes gratuitous use of all
|
||||||
@@ -596,10 +602,10 @@ flags that would make the program less portable.</p>
|
|||||||
<p>One side effect of the above is that you cannot assume the use
|
<p>One side effect of the above is that you cannot assume the use
|
||||||
of nested functions such as:</p>
|
of nested functions such as:</p>
|
||||||
<pre><code> main() {
|
<pre><code> main() {
|
||||||
| void please_dont_submit_this() {
|
void please_dont_submit_this() {
|
||||||
| printf("The machine that goes BING!!\n");
|
printf("The machine that goes BING!!\n");
|
||||||
}
|
}
|
||||||
| please_dont_submit_this();
|
please_dont_submit_this();
|
||||||
}</code></pre>
|
}</code></pre>
|
||||||
<p>This is because such nested functions often requires one to compile with
|
<p>This is because such nested functions often requires one to compile with
|
||||||
a flag such as <code>-fnested-functions</code> that is not found on some compilers.</p>
|
a flag such as <code>-fnested-functions</code> that is not found on some compilers.</p>
|
||||||
@@ -625,7 +631,7 @@ not portable and must not be used:</p>
|
|||||||
<p>Avoid using <code>varargs.h</code>. Use <code>stdarg.h</code> instead.</p>
|
<p>Avoid using <code>varargs.h</code>. Use <code>stdarg.h</code> instead.</p>
|
||||||
<p>On 28 January 2007, the Judges rescinded the requirement that the
|
<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 octet.</p>
|
<code>#</code> in a C preprocessor directive must be the 1st non-whitespace octet.</p>
|
||||||
<p>The <code>exit(3)</code> function returns void. Some broken systems have <code>exit(3)</code>
|
<p>The <code>exit(3)</code> function returns <code>void</code>. Some broken systems have <code>exit(3)</code>
|
||||||
return <code>int</code>, your entry should assume that <code>exit(3)</code> returns a <code>void</code>.</p>
|
return <code>int</code>, your entry should assume that <code>exit(3)</code> returns a <code>void</code>.</p>
|
||||||
<p><strong><code>|</code></strong> This guideline has a change mark at the very start of this line.</p>
|
<p><strong><code>|</code></strong> This guideline has a change mark at the very start of this line.</p>
|
||||||
<p>Small programs are best when they are short, obscure and concise.
|
<p>Small programs are best when they are short, obscure and concise.
|
||||||
@@ -633,8 +639,10 @@ While such programs are not as complex as other winners, they do
|
|||||||
serve a useful purpose. They are often the only program that people
|
serve a useful purpose. They are often the only program that people
|
||||||
attempt to completely understand. For this reason, we look for
|
attempt to completely understand. For this reason, we look for
|
||||||
programs that are compact, and are instructional.</p>
|
programs that are compact, and are instructional.</p>
|
||||||
<p>While those who are used to temperatures found on dwarf planet,
|
<p>While those who are used to temperatures found on <a href="https://science.nasa.gov/dwarf-planets/">dwarf
|
||||||
(yes Virginia, dwarf planets are planets) such as Pluto might be able to
|
planet</a>,
|
||||||
|
(<strong>yes Virginia, dwarf planets are planets</strong>) such as
|
||||||
|
<a href="https://science.nasa.gov/dwarf-planets/pluto/">Pluto</a> might be able to
|
||||||
explain to the Walrus why our seas are boiling hot, the question of
|
explain to the Walrus why our seas are boiling hot, the question of
|
||||||
whether pigs have wings is likely to remain a debatable point to most.</p>
|
whether pigs have wings is likely to remain a debatable point to most.</p>
|
||||||
<p>One line programs should be short one line programs: say around 80 to 120
|
<p>One line programs should be short one line programs: say around 80 to 120
|
||||||
@@ -666,21 +674,24 @@ mandate that one must use Microsoft Visual Studio to compile
|
|||||||
your entry. Nevertheless some of the better IDEs have command-line
|
your entry. Nevertheless some of the better IDEs have command-line
|
||||||
interfaces to their compilers, once one learns how to invoke a shell.</p>
|
interfaces to their compilers, once one learns how to invoke a shell.</p>
|
||||||
<p>The program must compile and link cleanly in a POSIX-like environment.
|
<p>The program must compile and link cleanly in a POSIX-like environment.
|
||||||
Therefore do not assume the system has a windows.h include file:</p>
|
Therefore do not assume the system has a
|
||||||
|
<a href="https://en.wikipedia.org/wiki/Windows.h">windows.h</a> include file:</p>
|
||||||
<pre><code> #include <windows.h> /* we dislike this include */</code></pre>
|
<pre><code> #include <windows.h> /* we dislike this include */</code></pre>
|
||||||
<p>Unless you are cramped for space, or unless you are entering the
|
<p>Unless you are cramped for space, or unless you are entering the
|
||||||
‘best one liner’ category, we suggest that you format your program
|
‘<em>Best one liner</em>’ 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>
|
||||||
<p>At least one judge prefers to maintain the use of the leap-second
|
<p>At least one judge prefers to maintain the use of the
|
||||||
|
<a href="https://en.wikipedia.org/wiki/Leap_second">leap-second</a>
|
||||||
as part of the world’s time standard. If your code prints time
|
as part of the world’s time standard. If your code prints time
|
||||||
with seconds, we prefer that your code be capable of printing the
|
with seconds, we prefer that your code be capable of printing the
|
||||||
time of day during a leap-second where the value in seconds
|
time of day during a leap-second where the value in seconds
|
||||||
after the minute mark is 60.</p>
|
after the minute mark is 60.</p>
|
||||||
<p>The “how to build” make process should not be used to try and get
|
<p>The “<em>how to build</em>” make process should not be used to try and get
|
||||||
around the size limit. It is one thing to make use of a several -D’s
|
around the size limit. It is one thing to make use of a several <code>-D</code>s
|
||||||
on the compile line to help out, but it is quite another to use many
|
on the compile line to help out, but it is quite another to use many
|
||||||
bytes of -D’s in order to try and squeeze the source under the size limit.</p>
|
bytes of <code>-D</code>s in order to try and squeeze the source under the size limit.</p>
|
||||||
<p>Your source code, post-pre-processing, should not exceed the size of Windows. :-)</p>
|
<p>Your source code, post-pre-processing, should not exceed the size of
|
||||||
|
<a href="https://en.wikipedia.org/wiki/Microsoft_Windows">Windows</a>. :-)</p>
|
||||||
<p>The judges, as a group, have a history giving wide degree of latitude
|
<p>The judges, as a group, have a history giving wide degree of latitude
|
||||||
to reasonable entries. And recently they have had as much longitudinal
|
to reasonable entries. And recently they have had as much longitudinal
|
||||||
variation as it is possible to have on Earth. :-)</p>
|
variation as it is possible to have on Earth. :-)</p>
|
||||||
@@ -711,7 +722,7 @@ For example, one could use the build instructions:</p>
|
|||||||
<p>and then include special notes in the program “remarks” for
|
<p>and then include special notes in the program “remarks” for
|
||||||
alternate / human intervention based building.</p>
|
alternate / human intervention based building.</p>
|
||||||
<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
|
||||||
octets. Really try to be more creative than blob coding. <em>HINT!</em></p>
|
octets. Really try to be more creative than blob coding. <strong>HINT!</strong></p>
|
||||||
<p>Please do not use things like <code>gzip(1)</code> to get around the size limit.
|
<p>Please do not use things like <code>gzip(1)</code> to get around the size limit.
|
||||||
Please try to be much more creative.</p>
|
Please try to be much more creative.</p>
|
||||||
<p>We really dislike entries that make blatant use of including
|
<p>We really dislike entries that make blatant use of including
|
||||||
@@ -760,12 +771,12 @@ software that is not in wide spread use.</p>
|
|||||||
<p>This is the only guideline that contains the word fizzbin.
|
<p>This is the only guideline that contains the word fizzbin.
|
||||||
<strong><code>|</code></strong> However, do you know how to play <a href="https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin">fizzbin</a>?
|
<strong><code>|</code></strong> However, do you know how to play <a href="https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin">fizzbin</a>?
|
||||||
You do?!? (Except on Tuesday)</p>
|
You do?!? (Except on Tuesday)</p>
|
||||||
<p>We don’t like entries that use proprietary toolkits such as the M<em>tif,
|
<p>We don’t like entries that use proprietary toolkits such as the <code>M*tif</code>,
|
||||||
Xv</em>ew, or OpenL*ok toolkits, since not everyone has them. Use of an
|
<code>Xv*ew</code>, or <code>OpenL*ok</code> toolkits, since not everyone has them. Use an
|
||||||
open source toolkit that is widely and freely available instead.</p>
|
open source toolkit that is widely and freely available instead.</p>
|
||||||
<p><strong>NOTE</strong>: The previous guideline in this spot has been replaced by this guideline:</p>
|
<p><strong>NOTE</strong>: The previous guideline in this spot has been replaced by this guideline:</p>
|
||||||
<p>X client entries should not to depend on particular items on
|
<p>X client entries should not to depend on particular items on
|
||||||
.Xdefaults. If you must do so, be sure to note the required lines
|
<code>.Xdefaults</code>. If you must do so, be sure to note the required lines
|
||||||
in the program “remarks”. They should also not depend on any
|
in the program “remarks”. They should also not depend on any
|
||||||
particular window manager.</p>
|
particular window manager.</p>
|
||||||
<p>Try to avoid entries that play silent sound segments or play the
|
<p>Try to avoid entries that play silent sound segments or play the
|
||||||
@@ -792,7 +803,7 @@ parliament should you have one.</p>
|
|||||||
<li>do something at least quasi-interesting</li>
|
<li>do something at least quasi-interesting</li>
|
||||||
<li>are portable</li>
|
<li>are portable</li>
|
||||||
<li>are unique or novel in their obfuscation style</li>
|
<li>are unique or novel in their obfuscation style</li>
|
||||||
<li>MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION <== HINT!!</li>
|
<li>MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION <strong><== HINT!!</strong></li>
|
||||||
<li>make us laugh and/or throw up :-) (humor really helps!)</li>
|
<li>make us laugh and/or throw up :-) (humor really helps!)</li>
|
||||||
<li>make us want to eat good chocolate.</li>
|
<li>make us want to eat good chocolate.</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -820,7 +831,8 @@ or Linux curses.</p>
|
|||||||
<p>Rule 13 states any C source that fails to compile because of unescaped
|
<p>Rule 13 states any C source that fails to compile because of unescaped
|
||||||
octets with the high bit set (octet value >= 128) will be rejected.
|
octets with the high bit set (octet value >= 128) will be rejected.
|
||||||
Instead of unescaped octets, you should use or escapes:</p>
|
Instead of unescaped octets, you should use or escapes:</p>
|
||||||
<pre><code> /* 123456789 123456789 123456789 123456 */
|
<pre><code>
|
||||||
|
/* 123456789 123456789 123456789 123456 */
|
||||||
char *foo = "This string is 36 octets in length \263";
|
char *foo = "This string is 36 octets in length \263";
|
||||||
/* This octet requires 4 octets of source ^^^^ */
|
/* This octet requires 4 octets of source ^^^^ */
|
||||||
if (strlen(foo) == 36) printf("foo is 36 octets plus a final NUL\n");
|
if (strlen(foo) == 36) printf("foo is 36 octets plus a final NUL\n");
|
||||||
@@ -833,13 +845,13 @@ otherwise overlook. <strong><<– Hint!</strong></p>
|
|||||||
author will try format their entry using a “normal” formatting style
|
author will try format their entry using a “normal” formatting style
|
||||||
such that at first glance (if you squint and don’t look at the details)
|
such that at first glance (if you squint and don’t look at the details)
|
||||||
the code might pass for non-obfuscated C. Deceptive comments,
|
the code might pass for non-obfuscated C. Deceptive comments,
|
||||||
and mis-leading formatting, in some cases, may be a plus. On the
|
and misleading formatting, in some cases, may be a plus. On the
|
||||||
other hand, a misleading code style requires more source bytes.</p>
|
other hand, a misleading code style requires more source bytes.</p>
|
||||||
<p>If you do elect to use misleading formatting and comments, we
|
<p>If you do elect to use misleading formatting and comments, we
|
||||||
suggest you remark on this point in your remarks where you talk
|
suggest you remark on this point in your remarks where you talk
|
||||||
about why you think your entry is obfuscated. On the other hand,
|
about why you think your entry is obfuscated. On the other hand,
|
||||||
if you are pushing up against the size limits, you may be forced
|
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!</p>
|
into creating a dense blob. Such are the trade-offs that obfuscators face!</p>
|
||||||
<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 unwise to assume it will run on an i386 or x86 architecture.</p>
|
However, it is unwise to assume it will run on an i386 or x86 architecture.</p>
|
||||||
<p>We believe that Mark Twain’s remark:</p>
|
<p>We believe that Mark Twain’s remark:</p>
|
||||||
@@ -848,7 +860,7 @@ However, it is unwise to assume it will run on an i386 or x86 architecture.</p>
|
|||||||
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">IOCCC size tool source</a>
|
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">IOCCC size tool source</a>
|
||||||
is not an original work,
|
is not an original work,
|
||||||
unless you are Anthony C Howe, in which case it is original!
|
unless you are Anthony C Howe, in which case it is original!
|
||||||
Submitting source that uses the content iocccsize.c, unless you are
|
Submitting source that uses the content of iocccsize.c, unless you are
|
||||||
Anthony C Howe, might run the risk of violating rule 7.</p>
|
Anthony C Howe, might run the risk of violating rule 7.</p>
|
||||||
<p>Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
|
<p>Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
|
||||||
However if you do, you might wish to make your tool do something more
|
However if you do, you might wish to make your tool do something more
|
||||||
@@ -897,46 +909,47 @@ and state:</p>
|
|||||||
is given enough time and memory. If the value is not a proper integer, the
|
is given enough time and memory. If the value is not a proper integer, the
|
||||||
program will insult a fish named Eric, even if such a fish does not exist.</code></pre>
|
program will insult a fish named Eric, even if such a fish does not exist.</code></pre>
|
||||||
<h1 id="abusing-the-rules">ABUSING THE RULES:</h1>
|
<h1 id="abusing-the-rules">ABUSING THE RULES:</h1>
|
||||||
<p>Legal abuse of the rules is somewhat encouraged. Legal rule abuse may
|
<p>Legal abuse of the <a href="rules.html">rules</a> is somewhat encouraged. Legal rule abuse
|
||||||
involve, but is not limited to, doing things that are technically
|
may involve, but is not limited to, doing things that are technically allowed by
|
||||||
allowed by the rules and yet do not fit the spirit of what we intended
|
the <a href="rules.html">rules</a> and yet do not fit the spirit of what we intended to be
|
||||||
to be submitted.</p>
|
submitted.</p>
|
||||||
<p>Legal rule abuse is encouraged to help promote creativity. Rule abuse
|
<p>Legal rule abuse is encouraged to help promote creativity. Rule abuse
|
||||||
entries, regardless of if they receive an award, result in changes to
|
entries, regardless of if they receive an award, result in changes to
|
||||||
the next year’s rules and guidelines.</p>
|
the next year’s <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>.</p>
|
||||||
<p>Legal abuse of the rules is NOT an invitation to violate the rules.
|
<p>Legal abuse of the <a href="rules.html">rules</a> is NOT an invitation to violate the
|
||||||
An entry that violates the rules in the opinion of the judges, WILL be
|
<a href="rules.html">rules</a>. An entry that violates the <a href="rules.html">rules</a> in the
|
||||||
disqualified. RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK! If you
|
opinion of the judges, <strong>WILL</strong> be
|
||||||
|
disqualified. <strong><em>RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!</em></strong> If you
|
||||||
have an entry that might otherwise be interesting, you might want to
|
have an entry that might otherwise be interesting, you might want to
|
||||||
submit two versions; one that does not abuse the rules and one that
|
submit two versions; one that does not abuse the <a href="rules.html">rules</a> and one that
|
||||||
does.</p>
|
does.</p>
|
||||||
<p>If you intend to abuse the rules, indicate so in the program
|
<p>If you intend to abuse the <a href="rules.html">rules</a>, indicate so in the program
|
||||||
“remarks”. You must try to justify why you consider your rule abuse
|
“remarks”. You must try to justify why you consider your rule abuse to be
|
||||||
to be allowed under the rules. That is, you must plead your case as
|
allowed under the <a href="rules.html">rules</a>. That is, you must plead your case as to
|
||||||
to why your entry is valid. Humor and/or creativity help plead a
|
why your entry is valid. Humor and/or creativity help plead a case.</p>
|
||||||
case.</p>
|
|
||||||
<p>Abusing the web submission procedure tends to annoy us more
|
<p>Abusing the web submission procedure tends to annoy us more
|
||||||
than amuse us. Spend your creative energy on content of your
|
than amuse us. Spend your creative energy on content of your
|
||||||
entry rather than on the submission process itself.</p>
|
entry rather than on the submission process itself.</p>
|
||||||
<p>We are often asked why the contest rules and guidelines seem too
|
<p>We are often asked why the contest <a href="rules.html">rules</a> and
|
||||||
|
<a href="guidelines.html">guidelines</a> seem too
|
||||||
strange or contain mistakes, flaws or grammatical errors. One reason
|
strange or contain mistakes, flaws or grammatical errors. One reason
|
||||||
is that we sometimes make genuine mistakes. But in many cases such
|
is that we sometimes make genuine mistakes. But in many cases such
|
||||||
problems, flaws or areas of confusion are deliberate. Changes to
|
problems, flaws or areas of confusion are deliberate. Changes to
|
||||||
rules and guidelines in response to rule abuses, are done in a minimal
|
<a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a> in response to rule abuses, are done in a minimal
|
||||||
fashion. Often we will deliberately leave behind holes (or introduce
|
fashion. Often we will deliberately leave behind holes (or introduce
|
||||||
new ones) so that future rule abuse may continue. A cleaver author
|
new ones) so that future rule abuse may continue. A cleaver author
|
||||||
should be able to read them and “drive a truck through the holes” in
|
should be able to read them and “drive a truck through the holes” in
|
||||||
the rules and guidelines.</p>
|
the <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>.</p>
|
||||||
<p>At the risk of stating the obvious, this contest is a parody of the
|
<p>At the risk of stating the obvious, this contest is a parody of the software
|
||||||
software development process. The rules and guidelines are only a
|
development process. The <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>
|
||||||
small part of the overall contest. Even so, one may think the contest
|
are only a small part of the overall contest. Even so, one may think the
|
||||||
rules and guideline process as a parody of the sometimes tragic
|
contest <a href="rules.html">rules</a> and <a href="guidelines.html">guideline</a> process as a parody
|
||||||
mismatch between what a customer (or marketing) wants and what
|
of the sometimes tragic mismatch between what a customer (or marketing) wants
|
||||||
engineering delivers. Real programmers must face obfuscated
|
and what engineering delivers. Real programmers must face obfuscated and
|
||||||
and sometimes conflicting specifications and requirements from marketing,
|
sometimes conflicting specifications and requirements from marketing, sales,
|
||||||
sales, product management an even from customers themselves on a
|
product management an even from customers themselves on a all too regular basis.
|
||||||
all too regular basis. This is one of the reasons why the rules and
|
This is one of the reasons why the <a href="rules.html">rules</a> and
|
||||||
guidelines are written in obfuscated form.</p>
|
<a href="guidelines.html">guidelines</a> are written in obfuscated form.</p>
|
||||||
<h1 id="judging-process">JUDGING PROCESS:</h1>
|
<h1 id="judging-process">JUDGING PROCESS:</h1>
|
||||||
<p>Entries are judged by Leonid A. Broukhis and Landon Curt Noll.</p>
|
<p>Entries are judged by Leonid A. Broukhis and Landon Curt Noll.</p>
|
||||||
<p>Each entry submitted is given a random id number and subdirectory. The
|
<p>Each entry submitted is given a random id number and subdirectory. The
|
||||||
@@ -949,30 +962,29 @@ the judging process is complete, and then only from entries that have
|
|||||||
won an award. Because we do not read this information for entries that
|
won an award. Because we do not read this information for entries that
|
||||||
do not win, we do not know who did not win.</p>
|
do not win, we do not know who did not win.</p>
|
||||||
<p>The above process helps keep us biased for/against any one particular
|
<p>The above process helps keep us biased for/against any one particular
|
||||||
individual. Therefore you MUST refrain from putting any information
|
individual. Therefore you <strong>MUST</strong> refrain from putting any information
|
||||||
that reveals your identity in your entry.</p>
|
that reveals your identity in your entry.</p>
|
||||||
<p>Now some people point out that coding style might reveal the information
|
<p>Now some people point out that coding style might reveal the information
|
||||||
about the others. However we consider this to be simply circumstantial
|
about the others. However we consider this to be simply circumstantial
|
||||||
and outside the scope of the above paragraph.</p>
|
and outside the scope of the above paragraph.</p>
|
||||||
<p>Some people, in the past, have attempted to obfuscate their identity by
|
<p>Some people, in the past, have attempted to obfuscate their identity by
|
||||||
including comments of famous Internet personalities such as Peter Honeyman
|
including comments of famous Internet personalities such as <a href="http://www.citi.umich.edu/u/honey">Peter
|
||||||
(<a href="http://www.citi.umich.edu/u/honey/" class="uri">http://www.citi.umich.edu/u/honey/</a>). The judges are on to this
|
Honeyman</a>. The judges are on to this trick
|
||||||
trick and therefore consider any obfuscated source or data file
|
and therefore consider any obfuscated source or data file claiming to be from
|
||||||
claiming to be from Honeyman to not be form Honeyman. This of course
|
Honeyman to not be form Honeyman. This of course creates an interesting paradox
|
||||||
creates an interesting paradox known as the “obfuscated Peter Honeyman
|
known as the “obfuscated Peter Honeyman paradox”. Should Peter Honeyman
|
||||||
paradox”. Should Peter Honeyman actually submit an obfuscated entry,
|
actually submit an obfuscated entry, he alone is excluded from the above, as we
|
||||||
he alone is excluded from the above, as we will likely believe
|
will likely believe it just another attempt at confusion. This guideline is
|
||||||
it just another attempt at confusion. This guideline is known
|
known as the “Peter Honeyman is exempt” guideline.</p>
|
||||||
as the “Peter Honeyman is exempt” guideline.</p>
|
|
||||||
<p>BTW: None of the entries claiming to be from Peter Honeyman have ever
|
<p>BTW: None of the entries claiming to be from Peter Honeyman have ever
|
||||||
won an award. So it is theoretically possible that Peter Honeyman
|
won an award. So it is theoretically possible that Peter Honeyman
|
||||||
did submit an entry in the past. In the past, Peter had denied
|
did submit an entry in the past. In the past, Peter had denied
|
||||||
submitting anything to the IOCCC. Perhaps those entries were
|
submitting anything to the IOCCC. Perhaps those entries were
|
||||||
submitted by one of his students?</p>
|
submitted by one of his students?</p>
|
||||||
<p>Hopefully we are <strong>VERY CLEAR</strong> on this point! The rules now strongly state:
|
<p>Hopefully we are <strong>VERY CLEAR</strong> on this point! The rules now strongly state:
|
||||||
PLEASE DO NOT put a name of an author, in an obvious way, into your
|
<strong>PLEASE <em>DO NOT</em> put a name of an author</strong>, in an obvious way, into your
|
||||||
source code, remarks, data files, etc. The above “Peter Honeyman is
|
source code, remarks, data files, etc. The above “Peter Honeyman is
|
||||||
exempt” not withstanding.</p>
|
exempt” notwithstanding.</p>
|
||||||
<p>We seemed to have digressed again … :-) Returning to the judging process:</p>
|
<p>We seemed to have digressed again … :-) Returning to the judging process:</p>
|
||||||
<p>We prefer to be kept in the dark as much as you are until the final
|
<p>We prefer to be kept in the dark as much as you are until the final
|
||||||
awards are given. We enjoy the surprise of finding out in the end,
|
awards are given. We enjoy the surprise of finding out in the end,
|
||||||
@@ -983,7 +995,8 @@ attempts to send non-winners into oblivion. We remove all non-winning
|
|||||||
files, and shred all related paper. By tradition, we do not even
|
files, and shred all related paper. By tradition, we do not even
|
||||||
reveal the number of entries that we received.</p>
|
reveal the number of entries that we received.</p>
|
||||||
<p>During the judging process, a process that spans multiple sessions
|
<p>During the judging process, a process that spans multiple sessions
|
||||||
over a few weeks, post general updates from our <span class="citation" data-cites="IOCCC">@IOCCC</span> twitter account.</p>
|
over a few weeks, post general updates from our <a href="https://fosstodon.org/@ioccc">Mastodon
|
||||||
|
account</a>.</p>
|
||||||
<p>Once we have selected the winners, for each category we will tweet:</p>
|
<p>Once we have selected the winners, for each category we will tweet:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>category name</li>
|
<li>category name</li>
|
||||||
@@ -998,11 +1011,9 @@ entry. They are given the chance to correct mistakes and typos. We
|
|||||||
often accept their suggestions/comments about our remarks as well.
|
often accept their suggestions/comments about our remarks as well.
|
||||||
This is done prior to posting the winners to the wide world.</p>
|
This is done prior to posting the winners to the wide world.</p>
|
||||||
<h2 id="an-important-update-to-how-winners-are-announced">An important update to how winners are announced</h2>
|
<h2 id="an-important-update-to-how-winners-are-announced">An important update to how winners are announced</h2>
|
||||||
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced
|
<p>The IOCCC no longer uses twitter. IOCCC entries will be announced by a git
|
||||||
by a git commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries
|
commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries repo</a> that, in
|
||||||
repo</a>.</p>
|
turn, updates the <a href="https://www.ioccc.org/index.html">official IOCCC website</a>.</p>
|
||||||
<p>that, in turn, updates the <a href="https://www.ioccc.org/index.html">official IOCCC
|
|
||||||
website</a>.</p>
|
|
||||||
<p>In addition a note is posted to the IOCCC Mastodon account
|
<p>In addition a note is posted to the IOCCC Mastodon account
|
||||||
(<a href="https://fosstodon.org/@ioccc" class="uri">https://fosstodon.org/@ioccc</a>).</p>
|
(<a href="https://fosstodon.org/@ioccc" class="uri">https://fosstodon.org/@ioccc</a>).</p>
|
||||||
<h2 id="back-to-the-judging-process">Back to the Judging process</h2>
|
<h2 id="back-to-the-judging-process">Back to the Judging process</h2>
|
||||||
@@ -1081,10 +1092,11 @@ an entry simply far exceeds any of the other entries. More often, the
|
|||||||
name related to the submitter(s) names. This is no longer done.
|
name related to the submitter(s) names. This is no longer done.
|
||||||
Winning source is called prog.c A compiled binary is called prog.</p>
|
Winning source is called prog.c A compiled binary is called prog.</p>
|
||||||
<h1 id="announcement-of-winners">ANNOUNCEMENT OF WINNERS:</h1>
|
<h1 id="announcement-of-winners">ANNOUNCEMENT OF WINNERS:</h1>
|
||||||
<p>The judges will tweet initial announcement of who won, the name
|
<p>The judges will toot initial announcement of who won, the name
|
||||||
of their award, and a very brief description of the winning entry
|
of their award, and a very brief description of the winning entry
|
||||||
from the <span class="citation" data-cites="IOCCC">@IOCCC</span> twitter handle. Non-twitter users should visit:</p>
|
from the <a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> Mastodon account</a>. You should
|
||||||
<pre><code> https://twitter.com/ioccc</code></pre>
|
follow us on Mastodon and refresh the page (even if you do follow us) as unless
|
||||||
|
you are mentioned you will not get a notification.</p>
|
||||||
<h2 id="how-the-new-ioccc-winners-will-be-announced">How the new IOCCC winners will be announced</h2>
|
<h2 id="how-the-new-ioccc-winners-will-be-announced">How the new IOCCC winners will be announced</h2>
|
||||||
<p><strong><code>|</code></strong> The <a href="../status.html">Current status of the IOCCC</a> will change from <strong>judging</strong> to <strong>closed</strong> .</p>
|
<p><strong><code>|</code></strong> The <a href="../status.html">Current status of the IOCCC</a> will change from <strong>judging</strong> to <strong>closed</strong> .</p>
|
||||||
<p><strong><code>|</code></strong> The <strong>contest_status</strong> in the <a href="../status.json">status.json</a> file will change from <strong>judging</strong> to <strong>closed</strong> as well.</p>
|
<p><strong><code>|</code></strong> The <strong>contest_status</strong> in the <a href="../status.json">status.json</a> file will change from <strong>judging</strong> to <strong>closed</strong> as well.</p>
|
||||||
@@ -1110,10 +1122,16 @@ and on T-Shirts. More than one winner has been turned in a tattoo!</p>
|
|||||||
<p>Last, but not least, winners receive international fame and flames! :-)</p>
|
<p>Last, but not least, winners receive international fame and flames! :-)</p>
|
||||||
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
||||||
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
|
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
|
||||||
<p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as rules and the guidelines may (and often do) change from year to year.</p>
|
<p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as
|
||||||
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
|
<a href="rules.html">rules</a> and the <a href="guidelines.html">guidelines</a> may (and often do) change from year to year.</p>
|
||||||
|
<p><strong><code>|</code></strong> You should be sure you have the current <a href="rules.html">rules</a> and
|
||||||
|
<a href="guidelines.html">guidelines</a> prior to submitting entries.</p>
|
||||||
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
|
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
|
||||||
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our <a href="../faq.html#try_mastodon">FAQ</a> for more information.</p>
|
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow
|
||||||
|
the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our
|
||||||
|
<a href="../faq.html#try_mastodon">FAQ</a> for more information. Please be aware that
|
||||||
|
unless you are mentioned you most likely will <strong>NOT</strong> get a notification from
|
||||||
|
the app so you should make sure to check the page.</p>
|
||||||
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
|
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
|
||||||
<p>Leonid A. Broukhis<br>
|
<p>Leonid A. Broukhis<br>
|
||||||
chongo (Landon Curt Noll) /\cc/\</p>
|
chongo (Landon Curt Noll) /\cc/\</p>
|
||||||
|
|||||||
+151
-134
@@ -1,28 +1,28 @@
|
|||||||
<!-- START: this line starts content from: inc/guidelines.closed.hdr -->
|
|
||||||
|
|
||||||
# WARNING: These guidelines are OUT OF DATE
|
# WARNING: These guidelines are OUT OF DATE
|
||||||
|
|
||||||
These guidelines are a **very tentative proposal** for the next IOCCC
|
These guidelines are a **VERY TENTATIVE proposal** for the next IOCCC
|
||||||
that is **VERY LIKELY** to be updated before the next IOCCC.
|
and are **VERY LIKELY** to be updated before the next IOCCC.
|
||||||
They are are provided as a **very tentative** hint at what
|
They are are provided as a **VERY TENTATIVE** hint at **what
|
||||||
might be used in a future IOCCC.
|
MIGHT** be used in the next IOCCC.
|
||||||
|
|
||||||
Please regard these guidelines as a historic archive.
|
Please regard these guidelines as a historical archive.
|
||||||
|
|
||||||
|
|
||||||
# The IOCCC is closed
|
# The IOCCC is closed
|
||||||
|
|
||||||
The IOCCC is **NOT** accepting new submissions at this time. See the
|
The IOCCC is **NOT** accepting new submissions at this time. See the
|
||||||
[IOCCC winning entries page](../years.html) for the entries that have won the IOCCC.
|
[IOCCC winning entries page](../years.html) for the entries that have won the
|
||||||
|
IOCCC in the past.
|
||||||
|
|
||||||
Watch both [the IOCCC status page](../status.html) and the
|
Watch both [the IOCCC status page](../status.html) and the
|
||||||
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about future IOCCC openings.
|
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about
|
||||||
|
future IOCCC openings.
|
||||||
|
|
||||||
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
||||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
# 28th International Obfuscated C Code Contest Official Guidelines
|
# 28th International Obfuscated C Code Contest Official Guidelines
|
||||||
|
|
||||||
Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.
|
Copyright © 2024 Leonid A. Broukhis and Landon Curt Noll.
|
||||||
|
|
||||||
All Rights Reserved. Permission for personal, education or non-profit use is
|
All Rights Reserved. Permission for personal, education or non-profit use is
|
||||||
granted provided this this copyright and notice are included in its entirety
|
granted provided this this copyright and notice are included in its entirety
|
||||||
@@ -53,11 +53,11 @@ submit entries to the [International Obfuscated C Code Contest
|
|||||||
|
|
||||||
These are not the IOCCC rules, though it does contain comments about
|
These are not the IOCCC rules, though it does contain comments about
|
||||||
them. The guidelines should be viewed as _hints_ and _suggestions_.
|
them. The guidelines should be viewed as _hints_ and _suggestions_.
|
||||||
Entries that violate the guidelines but remain within the rules are
|
Entries that violate the guidelines but remain within the rules _are
|
||||||
allowed. Even so, you are safer if you remain within the guidelines.
|
allowed_. Even so, you are safer if you remain within the guidelines.
|
||||||
|
|
||||||
You should read the current [IOCCC rules](rules.html), prior to submitting entries.
|
You should read the current [IOCCC rules](rules.html), prior to submitting entries.
|
||||||
The rules are typically sent out with these guidelines.
|
The rules are typically published along with these guidelines.
|
||||||
|
|
||||||
|
|
||||||
# WHAT'S NEW THIS IOCCC
|
# WHAT'S NEW THIS IOCCC
|
||||||
@@ -71,21 +71,22 @@ for be a **fun**ctional UTC time. :-)
|
|||||||
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
||||||
(contained in the [mkiocccentry
|
(contained in the [mkiocccentry
|
||||||
toolkit](https://github.com/ioccc-src/mkiocccentry))
|
toolkit](https://github.com/ioccc-src/mkiocccentry))
|
||||||
tool should be considered provisional **BETA** versions and may be
|
tool should be considered provisional **BETA** versions and **may be
|
||||||
adjusted **AT ANY TIME**.
|
adjusted _AT ANY TIME_**.
|
||||||
|
|
||||||
The IOCCC submission URL is <https://submit.ioccc.org/>.
|
The IOCCC submission URL is <https://submit.ioccc.org/>.
|
||||||
|
|
||||||
**`|`** The submit URL should be active on or slightly before **2024-MMM-DD HH:MM:SS UTC**.
|
**`|`** The submit URL should be active on or slightly before **2024-MMM-DD HH:MM:SS UTC**.
|
||||||
** XXX - This date and time is TDB - XXX **.
|
**XXX - This date and time is TDB - XXX **.
|
||||||
|
|
||||||
Please wait to submit your entries until after that time.
|
Please wait to submit your entries until after that time.
|
||||||
|
|
||||||
The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available
|
The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry)
|
||||||
on the official IOCCC website on or slightly before start of this IOCCC.
|
tool will be available on the official IOCCC website on or slightly before start
|
||||||
Please check the IOCCC FAQ [How to submit](../faq.html#submit).
|
of this IOCCC. Please check the IOCCC [FAQ about how to submit](../faq.html#submit)
|
||||||
on or after the start of this IOCCC to be sure you are using the correct
|
to see how to submit entries, on or after the start of this IOCCC, to be sure
|
||||||
versions of these items before using the IOCCC entry submission URL.
|
you are using the correct versions of these items before using the IOCCC entry
|
||||||
|
submission URL.
|
||||||
|
|
||||||
|
|
||||||
# HINTS AND SUGGESTIONS:
|
# HINTS AND SUGGESTIONS:
|
||||||
@@ -94,16 +95,16 @@ You are encouraged to examine the winners of previous contests. See
|
|||||||
**FOR MORE INFORMATION** for details on how to get previous winners.
|
**FOR MORE INFORMATION** for details on how to get previous winners.
|
||||||
|
|
||||||
Keep in mind that rules change from year to year, so some winning entries
|
Keep in mind that rules change from year to year, so some winning entries
|
||||||
may not be valid entries this year. What was unique and novel one year
|
might not be valid entries this year. What _was_ unique and novel one year
|
||||||
might be 'old' the next year.
|
_might be 'old' the next year_.
|
||||||
|
|
||||||
An entry is usually examined in a number of ways. We typically apply
|
An entry is usually examined in a number of ways. We typically apply
|
||||||
a number of tests to an entry:
|
a number of tests to an entry:
|
||||||
|
|
||||||
* look at the original source
|
* look at the original source
|
||||||
* convert ANSI trigraphs to ASCII
|
* convert ANSI trigraphs to ASCII
|
||||||
* C pre-process the source ignoring '#include' lines
|
* C pre-process the source ignoring `#include` lines
|
||||||
* C pre-process the source ignoring '#define' and '#include' lines
|
* C pre-process the source ignoring `#define` _and_ `#include` lines
|
||||||
* run it through a C beautifier
|
* run it through a C beautifier
|
||||||
* examine the algorithm
|
* examine the algorithm
|
||||||
* compile it (with flags to enable all warnings)
|
* compile it (with flags to enable all warnings)
|
||||||
@@ -115,20 +116,22 @@ You should ask yourself if your entry remains obscure after it has been
|
|||||||
|
|
||||||
Your entry need not pass all of the above tests. In certain
|
Your entry need not pass all of the above tests. In certain
|
||||||
cases, a test is not important. Entries that compete for the
|
cases, a test is not important. Entries that compete for the
|
||||||
'strangest/most creative source layout' need not do as well as
|
'_strangest/most creative source layout_' need not do as well as
|
||||||
others in terms of their algorithm. On the other hand, given
|
others in terms of their algorithm. On the other hand, given
|
||||||
two such entries, we are more inclined to pick the entry that
|
two such entries, we are more inclined to pick the entry that
|
||||||
does something interesting when you run it.
|
does something interesting when you run it.
|
||||||
|
|
||||||
We try to avoid limiting creativity in our rules. As such, we leave
|
We try to avoid limiting creativity in our rules. As such, we leave
|
||||||
the contest open for creative rule interpretation. As in real life
|
the contest open for creative rule interpretation. As in [real
|
||||||
|
life](https://en.wikipedia.org/wiki/Real_life)
|
||||||
programming, interpreting a requirements document or a customer request
|
programming, interpreting a requirements document or a customer request
|
||||||
is important. For this reason, we often award 'worst abuse of the
|
is important. For this reason, we often award '_Best abuse of the
|
||||||
rules' to an entry that illustrates this point in an ironic way.
|
rules_' or '_Worst abuse of the rules_' to an entry that illustrates this point
|
||||||
|
in an ironic way.
|
||||||
|
|
||||||
We do realize that there are holes in the rules, and invite entries
|
We do realize that there are holes in the rules, and invite entries
|
||||||
to attempt to exploit them. We will award 'worst abuse of the rules'
|
to attempt to exploit them. We will award '_Worst abuse of the rules_' or
|
||||||
and then plug the hole next year.
|
'_Best abuse of the rules_' and then plug the hole next year.
|
||||||
|
|
||||||
**`|`** Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)
|
**`|`** Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)
|
||||||
|
|
||||||
@@ -139,18 +142,19 @@ the effort to debug an entry that has a slight problem, particularly
|
|||||||
in or near the final round. On the other hand, we have seen some
|
in or near the final round. On the other hand, we have seen some
|
||||||
of the best entries fall down because they didn't work.
|
of the best entries fall down because they didn't work.
|
||||||
|
|
||||||
We tend to look down on a prime number printer that claims that
|
We tend to look down on a [prime
|
||||||
|
number](https://en.wikipedia.org/wiki/Prime_number) printer that claims that
|
||||||
16 is a prime number. If you do have a bug, you are better off
|
16 is a prime number. If you do have a bug, you are better off
|
||||||
documenting it. Noting "this entry sometimes prints the 4th power
|
documenting it. Noting "_this entry sometimes prints the 4th power
|
||||||
of a prime by mistake" would save the above entry. And sometimes,
|
of a prime by mistake_" would save the above entry. And sometimes,
|
||||||
a strange bug/feature can even help the entry! Of course, a correctly
|
a strange bug/feature can even help the entry! Of course, a correctly
|
||||||
working entry is best. Clever people will note that 16 might be prime
|
working entry is best. Clever people will note that 16 might be prime
|
||||||
under certain conditions. Wise people, when submitting something clever
|
under certain conditions. Wise people, when submitting something clever
|
||||||
will fully explain such cleverness in their entry's remarks file.
|
will fully explain such cleverness in their entry's remarks file.
|
||||||
|
|
||||||
People who are considering to just use some complex mathematical
|
People who are considering to just use some complex mathematical
|
||||||
function or state machine to spell out something such as "hello,
|
function or state machine to spell out something such as "_hello,
|
||||||
world!" really really, and we do mean really, do need to be more creative.
|
world!_" really really, and we do mean really, do need to be more creative.
|
||||||
|
|
||||||
Ultra-obfuscated programs are, in some cases, easier to
|
Ultra-obfuscated programs are, in some cases, easier to
|
||||||
deobfuscate than subtly-obfuscated programs. Consider using
|
deobfuscate than subtly-obfuscated programs. Consider using
|
||||||
@@ -158,13 +162,13 @@ misleading or subtle tricks layered on top of or under an
|
|||||||
appropriate level of obfuscation. A clean looking program with
|
appropriate level of obfuscation. A clean looking program with
|
||||||
misleading comments and variable names might be a good start.
|
misleading comments and variable names might be a good start.
|
||||||
|
|
||||||
When programs use VTxxx/ANSI sequences, they should NOT limited to a
|
When programs use VTxxx/ANSI sequences, they should NOT be limited to a
|
||||||
specific terminal brand. Those programs that work in a standard xterm
|
specific terminal brand. Those programs that work in a standard xterm
|
||||||
are considered more portable.
|
are considered more portable.
|
||||||
|
|
||||||
**`|`** Rule 2 (the size rule) refers to the use of the IOCCC size tool called `iocccsize`.
|
**`|`** Rule 2 (the size rule) refers to the use of the IOCCC size tool called `iocccsize`.
|
||||||
|
|
||||||
**`|`** See the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) for how to compile and `iocccsize`.
|
**`|`** See the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) for how to compile `iocccsize.c`.
|
||||||
|
|
||||||
**`|`** To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
|
**`|`** To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
|
||||||
|
|
||||||
@@ -200,48 +204,53 @@ the IOCCC size tool source code conflict, the algorithm implemented
|
|||||||
by the IOCCC size tool source code is preferred by the judges.
|
by the IOCCC size tool source code is preferred by the judges.
|
||||||
|
|
||||||
**`|`** There are at least 2 other reasons for selecting 2503 as the 2nd limit
|
**`|`** There are at least 2 other reasons for selecting 2503 as the 2nd limit
|
||||||
**`|`** besides the fact that 2053 is a prime. These reasons
|
|
||||||
|
**`|`** besides the fact that 2503 is a prime. These reasons
|
||||||
|
|
||||||
**`|`** may be searched for and discovered if you are ["Curios!" about 2503](https://t5k.org/curios/page.php/2503.html). :-)
|
**`|`** may be searched for and discovered if you are ["Curios!" about 2503](https://t5k.org/curios/page.php/2503.html). :-)
|
||||||
|
|
||||||
**`|`** Moreover, 2053 was the number of the kernel disk pack of one of the
|
**`|`** Moreover, 2053 was the number of the kernel disk pack of one of the
|
||||||
|
|
||||||
**`|`** judge's BESM-6, and 2503 is a decimal anagram of 2053.
|
**`|`** judge's BESM-6, and 2503 is a decimal anagram of 2053.
|
||||||
|
|
||||||
Take note that this secondary limit imposed by the IOCCC size tool
|
Take note that this secondary limit imposed by the IOCCC size tool
|
||||||
obviates some of the need to #define C reserved words in an effort
|
obviates some of the need to `#define` C reserved words in an effort
|
||||||
to get around the size limits of rule 2.
|
to get around the size limits of rule 2.
|
||||||
|
|
||||||
Yes Virginia, **that is a hint**!
|
Yes Virginia, **that is a hint**!
|
||||||
|
|
||||||
We applaud programs that do not issue warnings when compiled.
|
We applaud programs that do not issue warnings when compiled.
|
||||||
To avoid warnings, you might be tempted to add various -Wno-foobar
|
To avoid warnings, you might be tempted to add various `-Wno-foobar`
|
||||||
flags. Unfortunately such flags are NOT portable. Moreover,
|
flags. Unfortunately such flags are NOT portable. Moreover,
|
||||||
such flags are not consistent between different C compilers.
|
such flags are not consistent between different C compilers.
|
||||||
Therefore we recommend that you consider one of several approaches:
|
Therefore we recommend that you consider one of several approaches:
|
||||||
|
|
||||||
a) Write code that does not generate compiler warnings
|
a) Write code that does not generate compiler warnings (but see [the FAQ about
|
||||||
|
clang -Weverything](../faq.html#faq3_11))
|
||||||
b) Do not use flags that disable compiler warnings
|
b) Do not use flags that disable compiler warnings
|
||||||
c) Provide instructions (such as in your Makefile) that
|
c) Provide instructions (such as in your Makefile) that
|
||||||
uses appropriate disable compiler warnings flags for
|
use the appropriate disable compiler warnings flags for
|
||||||
both clang and gcc
|
both clang and gcc
|
||||||
d) Do something creative
|
d) Do something creative
|
||||||
|
|
||||||
|
|
||||||
# OUR LIKES AND DISLIKES:
|
# OUR LIKES AND DISLIKES:
|
||||||
|
|
||||||
Doing masses of #defines to obscure the source has become 'old'. We
|
Doing masses of `#defines` to obscure the source has become 'old'. We
|
||||||
tend to 'see thru' masses of #defines due to our pre-processor tests
|
tend to 'see thru' masses of `#defines` due to our pre-processor tests
|
||||||
that we apply. Simply abusing #defines or -Dfoo=bar won't go as far
|
that we apply. Simply abusing `#defines` or `-Dfoo=bar` won't go as far
|
||||||
as a program that is more well rounded in confusion.
|
as a program that is more well rounded in confusion.
|
||||||
|
|
||||||
Many C compilers dislike the following code, and so do we:
|
Many C compilers dislike the following code, and so do we:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
#define d define
|
#define d define
|
||||||
#d foo /* <-- don't expect this to turn into #define foo */
|
#d foo /* <-- don't expect this to turn into #define foo */
|
||||||
```
|
```
|
||||||
|
|
||||||
When declaring local or global variables, you should declare the type:
|
When declaring local or global variables, you should declare the type:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
int this_is_fine;
|
int this_is_fine;
|
||||||
this_is_not; /* <-- Try to avoid implicit type declarations */
|
this_is_not; /* <-- Try to avoid implicit type declarations */
|
||||||
```
|
```
|
||||||
@@ -273,8 +282,8 @@ to make your code compile warning free using:
|
|||||||
-Wall -Wextra -Weverything -pedantic
|
-Wall -Wextra -Weverything -pedantic
|
||||||
```
|
```
|
||||||
|
|
||||||
.. though see [Why do Makefiles use -Weverything with
|
.. though, again, see [the FAQ about clang -Weverything](../faq.html#faq3_11) in
|
||||||
clang?](../faq.html#faq3_11) in the [FAQ](../faq.html).
|
the [FAQ](../faq.html).
|
||||||
|
|
||||||
|
|
||||||
If you must turn off various warnings on the compile line such as:
|
If you must turn off various warnings on the compile line such as:
|
||||||
@@ -283,13 +292,13 @@ If you must turn off various warnings on the compile line such as:
|
|||||||
... -Wno-empty-body -Wno-return-type ...
|
... -Wno-empty-body -Wno-return-type ...
|
||||||
```
|
```
|
||||||
|
|
||||||
be sure to clearly state so in your remarks AS WELL AS in
|
be sure to clearly state so in your remarks **AS WELL AS** in
|
||||||
your "how to build" / Makefile.
|
your "how to build" / Makefile.
|
||||||
|
|
||||||
All other things being equal, a program that must turn off fewer
|
All other things being equal, a program that must turn off fewer
|
||||||
warnings will be considered better, for certain values of better.
|
warnings will be considered better, for certain values of better.
|
||||||
|
|
||||||
Unless you clearly state otherwise in your remarks AS WELL AS in
|
Unless you clearly state otherwise in your remarks **AS WELL AS** in
|
||||||
your "how to build" / Makefile we will compile using:
|
your "how to build" / Makefile we will compile using:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -318,12 +327,12 @@ flags that would make the program less portable.
|
|||||||
One side effect of the above is that you cannot assume the use
|
One side effect of the above is that you cannot assume the use
|
||||||
of nested functions such as:
|
of nested functions such as:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
main() {
|
main() {
|
||||||
| void please_dont_submit_this() {
|
void please_dont_submit_this() {
|
||||||
| printf("The machine that goes BING!!\n");
|
printf("The machine that goes BING!!\n");
|
||||||
}
|
}
|
||||||
| please_dont_submit_this();
|
please_dont_submit_this();
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -357,7 +366,7 @@ Avoid using `varargs.h`. Use `stdarg.h` instead.
|
|||||||
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 octet.
|
`#` in a C preprocessor directive must be the 1st non-whitespace octet.
|
||||||
|
|
||||||
The `exit(3)` function returns void. Some broken systems have `exit(3)`
|
The `exit(3)` function returns `void`. Some broken systems have `exit(3)`
|
||||||
return `int`, your entry should assume that `exit(3)` returns a `void`.
|
return `int`, your entry should assume that `exit(3)` returns a `void`.
|
||||||
|
|
||||||
**`|`** This guideline has a change mark at the very start of this line.
|
**`|`** This guideline has a change mark at the very start of this line.
|
||||||
@@ -368,8 +377,10 @@ serve a useful purpose. They are often the only program that people
|
|||||||
attempt to completely understand. For this reason, we look for
|
attempt to completely understand. For this reason, we look for
|
||||||
programs that are compact, and are instructional.
|
programs that are compact, and are instructional.
|
||||||
|
|
||||||
While those who are used to temperatures found on dwarf planet,
|
While those who are used to temperatures found on [dwarf
|
||||||
(yes Virginia, dwarf planets are planets) such as Pluto might be able to
|
planet](https://science.nasa.gov/dwarf-planets/),
|
||||||
|
(**yes Virginia, dwarf planets are planets**) such as
|
||||||
|
[Pluto](https://science.nasa.gov/dwarf-planets/pluto/) might be able to
|
||||||
explain to the Walrus why our seas are boiling hot, the question of
|
explain to the Walrus why our seas are boiling hot, the question of
|
||||||
whether pigs have wings is likely to remain a debatable point to most.
|
whether pigs have wings is likely to remain a debatable point to most.
|
||||||
|
|
||||||
@@ -404,28 +415,31 @@ your entry. Nevertheless some of the better IDEs have command-line
|
|||||||
interfaces to their compilers, once one learns how to invoke a shell.
|
interfaces to their compilers, once one learns how to invoke a shell.
|
||||||
|
|
||||||
The program must compile and link cleanly in a POSIX-like environment.
|
The program must compile and link cleanly in a POSIX-like environment.
|
||||||
Therefore do not assume the system has a windows.h include file:
|
Therefore do not assume the system has a
|
||||||
|
[windows.h](https://en.wikipedia.org/wiki/Windows.h) include file:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
#include <windows.h> /* we dislike this include */
|
#include <windows.h> /* we dislike this include */
|
||||||
```
|
```
|
||||||
|
|
||||||
Unless you are cramped for space, or unless you are entering the
|
Unless you are cramped for space, or unless you are entering the
|
||||||
'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.
|
||||||
|
|
||||||
At least one judge prefers to maintain the use of the leap-second
|
At least one judge prefers to maintain the use of the
|
||||||
|
[leap-second](https://en.wikipedia.org/wiki/Leap_second)
|
||||||
as part of the world's time standard. If your code prints time
|
as part of the world's time standard. If your code prints time
|
||||||
with seconds, we prefer that your code be capable of printing the
|
with seconds, we prefer that your code be capable of printing the
|
||||||
time of day during a leap-second where the value in seconds
|
time of day during a leap-second where the value in seconds
|
||||||
after the minute mark is 60.
|
after the minute mark is 60.
|
||||||
|
|
||||||
The "how to build" make process should not be used to try and get
|
The "_how to build_" make process should not be used to try and get
|
||||||
around the size limit. It is one thing to make use of a several -D's
|
around the size limit. It is one thing to make use of a several `-D`s
|
||||||
on the compile line to help out, but it is quite another to use many
|
on the compile line to help out, but it is quite another to use many
|
||||||
bytes of -D's in order to try and squeeze the source under the size limit.
|
bytes of `-D`s in order to try and squeeze the source under the size limit.
|
||||||
|
|
||||||
Your source code, post-pre-processing, should not exceed the size of Windows. :-)
|
Your source code, post-pre-processing, should not exceed the size of
|
||||||
|
[Windows](https://en.wikipedia.org/wiki/Microsoft_Windows). :-)
|
||||||
|
|
||||||
The judges, as a group, have a history giving wide degree of latitude
|
The judges, as a group, have a history giving wide degree of latitude
|
||||||
to reasonable entries. And recently they have had as much longitudinal
|
to reasonable entries. And recently they have had as much longitudinal
|
||||||
@@ -471,7 +485,7 @@ and then include special notes in the program "remarks" for
|
|||||||
alternate / human intervention based building.
|
alternate / human intervention based building.
|
||||||
|
|
||||||
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
|
||||||
octets. Really try to be more creative than blob coding. *HINT!*
|
octets. Really try to be more creative than blob coding. **HINT!**
|
||||||
|
|
||||||
Please do not use things like `gzip(1)` to get around the size limit.
|
Please do not use things like `gzip(1)` to get around the size limit.
|
||||||
Please try to be much more creative.
|
Please try to be much more creative.
|
||||||
@@ -507,13 +521,13 @@ they do not work as documented.
|
|||||||
Please note that the C source below, besides lacking in obfuscation,
|
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:
|
is NOT the smallest C source file that when compiled and run, dumps core:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
main;
|
main;
|
||||||
```
|
```
|
||||||
|
|
||||||
We do not like writable strings. That is, we don't want stuff like:
|
We do not like writable strings. That is, we don't want stuff like:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
char *T = "So many primes, so little time!";
|
char *T = "So many primes, so little time!";
|
||||||
...
|
...
|
||||||
T[14] = ';';
|
T[14] = ';';
|
||||||
@@ -522,7 +536,7 @@ We do not like writable strings. That is, we don't want stuff like:
|
|||||||
Please don't make use of this feature, even if your system allows it.
|
Please don't make use of this feature, even if your system allows it.
|
||||||
However, initialized char arrays are OK to write over. This is OK:
|
However, initialized char arrays are OK to write over. This is OK:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
char b[] = "Is this OK";
|
char b[] = "Is this OK";
|
||||||
b[9] = 'K';
|
b[9] = 'K';
|
||||||
```
|
```
|
||||||
@@ -545,14 +559,14 @@ This is the only guideline that contains the word fizzbin.
|
|||||||
**`|`** However, do you know how to play [fizzbin](https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin)?
|
**`|`** However, do you know how to play [fizzbin](https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin)?
|
||||||
You do?!? (Except on Tuesday)
|
You do?!? (Except on Tuesday)
|
||||||
|
|
||||||
We don't like entries that use proprietary toolkits such as the M*tif,
|
We don't like entries that use proprietary toolkits such as the `M*tif`,
|
||||||
Xv*ew, or OpenL*ok toolkits, since not everyone has them. Use of an
|
`Xv*ew`, or `OpenL*ok` toolkits, since not everyone has them. Use an
|
||||||
open source toolkit that is widely and freely available instead.
|
open source toolkit that is widely and freely available instead.
|
||||||
|
|
||||||
**NOTE**: The previous guideline in this spot has been replaced by this guideline:
|
**NOTE**: The previous guideline in this spot has been replaced by this guideline:
|
||||||
|
|
||||||
X client entries should not to depend on particular items on
|
X client entries should not to depend on particular items on
|
||||||
.Xdefaults. If you must do so, be sure to note the required lines
|
`.Xdefaults`. If you must do so, be sure to note the required lines
|
||||||
in the program "remarks". They should also not depend on any
|
in the program "remarks". They should also not depend on any
|
||||||
particular window manager.
|
particular window manager.
|
||||||
|
|
||||||
@@ -586,7 +600,7 @@ We like programs that:
|
|||||||
* do something at least quasi-interesting
|
* do something at least quasi-interesting
|
||||||
* are portable
|
* are portable
|
||||||
* are unique or novel in their obfuscation style
|
* are unique or novel in their obfuscation style
|
||||||
* MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION <== HINT!!
|
* MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION **<== HINT!!**
|
||||||
* make us laugh and/or throw up :-) (humor really helps!)
|
* make us laugh and/or throw up :-) (humor really helps!)
|
||||||
* make us want to eat good chocolate.
|
* make us want to eat good chocolate.
|
||||||
|
|
||||||
@@ -621,7 +635,8 @@ Rule 13 states any C source that fails to compile because of unescaped
|
|||||||
octets with the high bit set (octet value >= 128) will be rejected.
|
octets with the high bit set (octet value >= 128) will be rejected.
|
||||||
Instead of unescaped octets, you should use \octal or \hex escapes:
|
Instead of unescaped octets, you should use \octal or \hex escapes:
|
||||||
|
|
||||||
```
|
``` <!---c-->
|
||||||
|
|
||||||
/* 123456789 123456789 123456789 123456 */
|
/* 123456789 123456789 123456789 123456 */
|
||||||
char *foo = "This string is 36 octets in length \263";
|
char *foo = "This string is 36 octets in length \263";
|
||||||
/* This octet requires 4 octets of source ^^^^ */
|
/* This octet requires 4 octets of source ^^^^ */
|
||||||
@@ -638,14 +653,14 @@ Anyone can format their code into a dense blob. A really clever
|
|||||||
author will try format their entry using a "normal" formatting style
|
author will try format their entry using a "normal" formatting style
|
||||||
such that at first glance (if you squint and don't look at the details)
|
such that at first glance (if you squint and don't look at the details)
|
||||||
the code might pass for non-obfuscated C. Deceptive comments,
|
the code might pass for non-obfuscated C. Deceptive comments,
|
||||||
and mis-leading formatting, in some cases, may be a plus. On the
|
and misleading formatting, in some cases, may be a plus. On the
|
||||||
other hand, a misleading code style requires more source bytes.
|
other hand, a misleading code style requires more source bytes.
|
||||||
|
|
||||||
If you do elect to use misleading formatting and comments, we
|
If you do elect to use misleading formatting and comments, we
|
||||||
suggest you remark on this point in your remarks where you talk
|
suggest you remark on this point in your remarks where you talk
|
||||||
about why you think your entry is obfuscated. On the other hand,
|
about why you think your entry is obfuscated. On the other hand,
|
||||||
if you are pushing up against the size limits, you may be forced
|
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!
|
into creating a dense blob. Such are the trade-offs that obfuscators face!
|
||||||
|
|
||||||
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 i386 or x86 architecture.
|
However, it is unwise to assume it will run on an i386 or x86 architecture.
|
||||||
@@ -661,7 +676,7 @@ is a good guideline for those writing code for the IOCCC.
|
|||||||
**`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
|
**`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
|
||||||
is not an original work,
|
is not an original work,
|
||||||
unless you are Anthony C Howe, in which case it is original!
|
unless you are Anthony C Howe, in which case it is original!
|
||||||
Submitting source that uses the content iocccsize.c, unless you are
|
Submitting source that uses the content of iocccsize.c, unless you are
|
||||||
Anthony C Howe, might run the risk of violating rule 7.
|
Anthony C Howe, might run the risk of violating rule 7.
|
||||||
|
|
||||||
Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
|
Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
|
||||||
@@ -753,52 +768,53 @@ and state:
|
|||||||
|
|
||||||
# ABUSING THE RULES:
|
# ABUSING THE RULES:
|
||||||
|
|
||||||
Legal abuse of the rules is somewhat encouraged. Legal rule abuse may
|
Legal abuse of the [rules](rules.html) is somewhat encouraged. Legal rule abuse
|
||||||
involve, but is not limited to, doing things that are technically
|
may involve, but is not limited to, doing things that are technically allowed by
|
||||||
allowed by the rules and yet do not fit the spirit of what we intended
|
the [rules](rules.html) and yet do not fit the spirit of what we intended to be
|
||||||
to be submitted.
|
submitted.
|
||||||
|
|
||||||
Legal rule abuse is encouraged to help promote creativity. Rule abuse
|
Legal rule abuse is encouraged to help promote creativity. Rule abuse
|
||||||
entries, regardless of if they receive an award, result in changes to
|
entries, regardless of if they receive an award, result in changes to
|
||||||
the next year's rules and guidelines.
|
the next year's [rules](rules.html) and [guidelines](guidelines.html).
|
||||||
|
|
||||||
Legal abuse of the rules is NOT an invitation to violate the rules.
|
Legal abuse of the [rules](rules.html) is NOT an invitation to violate the
|
||||||
An entry that violates the rules in the opinion of the judges, WILL be
|
[rules](rules.html). An entry that violates the [rules](rules.html) in the
|
||||||
disqualified. RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK! If you
|
opinion of the judges, **WILL** be
|
||||||
|
disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you
|
||||||
have an entry that might otherwise be interesting, you might want to
|
have an entry that might otherwise be interesting, you might want to
|
||||||
submit two versions; one that does not abuse the rules and one that
|
submit two versions; one that does not abuse the [rules](rules.html) and one that
|
||||||
does.
|
does.
|
||||||
|
|
||||||
If you intend to abuse the rules, indicate so in the program
|
If you intend to abuse the [rules](rules.html), indicate so in the program
|
||||||
"remarks". You must try to justify why you consider your rule abuse
|
"remarks". You must try to justify why you consider your rule abuse to be
|
||||||
to be allowed under the rules. That is, you must plead your case as
|
allowed under the [rules](rules.html). That is, you must plead your case as to
|
||||||
to why your entry is valid. Humor and/or creativity help plead a
|
why your entry is valid. Humor and/or creativity help plead a case.
|
||||||
case.
|
|
||||||
|
|
||||||
Abusing the web submission procedure tends to annoy us more
|
Abusing the web submission procedure tends to annoy us more
|
||||||
than amuse us. Spend your creative energy on content of your
|
than amuse us. Spend your creative energy on content of your
|
||||||
entry rather than on the submission process itself.
|
entry rather than on the submission process itself.
|
||||||
|
|
||||||
We are often asked why the contest rules and guidelines seem too
|
We are often asked why the contest [rules](rules.html) and
|
||||||
|
[guidelines](guidelines.html) seem too
|
||||||
strange or contain mistakes, flaws or grammatical errors. One reason
|
strange or contain mistakes, flaws or grammatical errors. One reason
|
||||||
is that we sometimes make genuine mistakes. But in many cases such
|
is that we sometimes make genuine mistakes. But in many cases such
|
||||||
problems, flaws or areas of confusion are deliberate. Changes to
|
problems, flaws or areas of confusion are deliberate. Changes to
|
||||||
rules and guidelines in response to rule abuses, are done in a minimal
|
[rules](rules.html) and [guidelines](guidelines.html) in response to rule abuses, are done in a minimal
|
||||||
fashion. Often we will deliberately leave behind holes (or introduce
|
fashion. Often we will deliberately leave behind holes (or introduce
|
||||||
new ones) so that future rule abuse may continue. A cleaver author
|
new ones) so that future rule abuse may continue. A cleaver author
|
||||||
should be able to read them and "drive a truck through the holes" in
|
should be able to read them and "drive a truck through the holes" in
|
||||||
the rules and guidelines.
|
the [rules](rules.html) and [guidelines](guidelines.html).
|
||||||
|
|
||||||
At the risk of stating the obvious, this contest is a parody of the
|
At the risk of stating the obvious, this contest is a parody of the software
|
||||||
software development process. The rules and guidelines are only a
|
development process. The [rules](rules.html) and [guidelines](guidelines.html)
|
||||||
small part of the overall contest. Even so, one may think the contest
|
are only a small part of the overall contest. Even so, one may think the
|
||||||
rules and guideline process as a parody of the sometimes tragic
|
contest [rules](rules.html) and [guideline](guidelines.html) process as a parody
|
||||||
mismatch between what a customer (or marketing) wants and what
|
of the sometimes tragic mismatch between what a customer (or marketing) wants
|
||||||
engineering delivers. Real programmers must face obfuscated
|
and what engineering delivers. Real programmers must face obfuscated and
|
||||||
and sometimes conflicting specifications and requirements from marketing,
|
sometimes conflicting specifications and requirements from marketing, sales,
|
||||||
sales, product management an even from customers themselves on a
|
product management an even from customers themselves on a all too regular basis.
|
||||||
all too regular basis. This is one of the reasons why the rules and
|
This is one of the reasons why the [rules](rules.html) and
|
||||||
guidelines are written in obfuscated form.
|
[guidelines](guidelines.html) are written in obfuscated form.
|
||||||
|
|
||||||
|
|
||||||
# JUDGING PROCESS:
|
# JUDGING PROCESS:
|
||||||
@@ -817,7 +833,7 @@ won an award. Because we do not read this information for entries that
|
|||||||
do not win, we do not know who did not win.
|
do not win, we do not know who did not win.
|
||||||
|
|
||||||
The above process helps keep us biased for/against any one particular
|
The above process helps keep us biased for/against any one particular
|
||||||
individual. Therefore you MUST refrain from putting any information
|
individual. Therefore you **MUST** refrain from putting any information
|
||||||
that reveals your identity in your entry.
|
that reveals your identity in your entry.
|
||||||
|
|
||||||
Now some people point out that coding style might reveal the information
|
Now some people point out that coding style might reveal the information
|
||||||
@@ -825,15 +841,14 @@ about the others. However we consider this to be simply circumstantial
|
|||||||
and outside the scope of the above paragraph.
|
and outside the scope of the above paragraph.
|
||||||
|
|
||||||
Some people, in the past, have attempted to obfuscate their identity by
|
Some people, in the past, have attempted to obfuscate their identity by
|
||||||
including comments of famous Internet personalities such as Peter Honeyman
|
including comments of famous Internet personalities such as [Peter
|
||||||
(<http://www.citi.umich.edu/u/honey/>). The judges are on to this
|
Honeyman](http://www.citi.umich.edu/u/honey). The judges are on to this trick
|
||||||
trick and therefore consider any obfuscated source or data file
|
and therefore consider any obfuscated source or data file claiming to be from
|
||||||
claiming to be from Honeyman to not be form Honeyman. This of course
|
Honeyman to not be form Honeyman. This of course creates an interesting paradox
|
||||||
creates an interesting paradox known as the "obfuscated Peter Honeyman
|
known as the "obfuscated Peter Honeyman paradox". Should Peter Honeyman
|
||||||
paradox". Should Peter Honeyman actually submit an obfuscated entry,
|
actually submit an obfuscated entry, he alone is excluded from the above, as we
|
||||||
he alone is excluded from the above, as we will likely believe
|
will likely believe it just another attempt at confusion. This guideline is
|
||||||
it just another attempt at confusion. This guideline is known
|
known as the "Peter Honeyman is exempt" guideline.
|
||||||
as the "Peter Honeyman is exempt" guideline.
|
|
||||||
|
|
||||||
BTW: None of the entries claiming to be from Peter Honeyman have ever
|
BTW: None of the entries claiming to be from Peter Honeyman have ever
|
||||||
won an award. So it is theoretically possible that Peter Honeyman
|
won an award. So it is theoretically possible that Peter Honeyman
|
||||||
@@ -842,9 +857,9 @@ submitting anything to the IOCCC. Perhaps those entries were
|
|||||||
submitted by one of his students?
|
submitted by one of his students?
|
||||||
|
|
||||||
Hopefully we are **VERY CLEAR** on this point! The rules now strongly state:
|
Hopefully we are **VERY CLEAR** on this point! The rules now strongly state:
|
||||||
PLEASE DO NOT put a name of an author, in an obvious way, into your
|
**PLEASE _DO NOT_ put a name of an author**, in an obvious way, into your
|
||||||
source code, remarks, data files, etc. The above "Peter Honeyman is
|
source code, remarks, data files, etc. The above "Peter Honeyman is
|
||||||
exempt" not withstanding.
|
exempt" notwithstanding.
|
||||||
|
|
||||||
We seemed to have digressed again ... :-) Returning to the judging process:
|
We seemed to have digressed again ... :-) Returning to the judging process:
|
||||||
|
|
||||||
@@ -859,7 +874,8 @@ files, and shred all related paper. By tradition, we do not even
|
|||||||
reveal the number of entries that we received.
|
reveal the number of entries that we received.
|
||||||
|
|
||||||
During the judging process, a process that spans multiple sessions
|
During the judging process, a process that spans multiple sessions
|
||||||
over a few weeks, post general updates from our @IOCCC twitter account.
|
over a few weeks, post general updates from our [Mastodon
|
||||||
|
account](https://fosstodon.org/@ioccc).
|
||||||
|
|
||||||
Once we have selected the winners, for each category we will tweet:
|
Once we have selected the winners, for each category we will tweet:
|
||||||
|
|
||||||
@@ -878,12 +894,9 @@ This is done prior to posting the winners to the wide world.
|
|||||||
|
|
||||||
## An important update to how winners are announced
|
## An important update to how winners are announced
|
||||||
|
|
||||||
The IOCCC no longer uses twitter. IOCCC entries will be announced
|
The IOCCC no longer uses twitter. IOCCC entries will be announced by a git
|
||||||
by a git commit to the [IOCCC entries
|
commit to the [IOCCC entries repo](https://github.com/ioccc-src/winner) that, in
|
||||||
repo](https://github.com/ioccc-src/winner).
|
turn, updates the [official IOCCC website](https://www.ioccc.org/index.html).
|
||||||
|
|
||||||
that, in turn, updates the [official IOCCC
|
|
||||||
website](https://www.ioccc.org/index.html).
|
|
||||||
|
|
||||||
In addition a note is posted to the IOCCC Mastodon account
|
In addition a note is posted to the IOCCC Mastodon account
|
||||||
(<https://fosstodon.org/@ioccc>).
|
(<https://fosstodon.org/@ioccc>).
|
||||||
@@ -980,13 +993,11 @@ Winning source is called prog.c A compiled binary is called prog.
|
|||||||
|
|
||||||
# ANNOUNCEMENT OF WINNERS:
|
# ANNOUNCEMENT OF WINNERS:
|
||||||
|
|
||||||
The judges will tweet initial announcement of who won, the name
|
The judges will toot initial announcement of who won, the name
|
||||||
of their award, and a very brief description of the winning entry
|
of their award, and a very brief description of the winning entry
|
||||||
from the @IOCCC twitter handle. Non-twitter users should visit:
|
from the [@IOCCC Mastodon account](https://fosstodon.org/@ioccc). You should
|
||||||
|
follow us on Mastodon and refresh the page (even if you do follow us) as unless
|
||||||
```
|
you are mentioned you will not get a notification.
|
||||||
https://twitter.com/ioccc
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## How the new IOCCC winners will be announced
|
## How the new IOCCC winners will be announced
|
||||||
@@ -1043,13 +1054,19 @@ Last, but not least, winners receive international fame and flames! :-)
|
|||||||
|
|
||||||
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
||||||
|
|
||||||
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as rules and the guidelines may (and often do) change from year to year.
|
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as
|
||||||
|
[rules](rules.html) and the [guidelines](guidelines.html) may (and often do) change from year to year.
|
||||||
|
|
||||||
**`|`** You should be sure you have the current rules and guidelines prior to submitting entries.
|
**`|`** You should be sure you have the current [rules](rules.html) and
|
||||||
|
[guidelines](guidelines.html) prior to submitting entries.
|
||||||
|
|
||||||
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
|
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
|
||||||
|
|
||||||
**`|`** For the updates and breaking IOCCC news, you are encouraged to follow the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our [FAQ](../faq.html#try_mastodon) for more information.
|
**`|`** For the updates and breaking IOCCC news, you are encouraged to follow
|
||||||
|
the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our
|
||||||
|
[FAQ](../faq.html#try_mastodon) for more information. Please be aware that
|
||||||
|
unless you are mentioned you most likely will **NOT** get a notification from
|
||||||
|
the app so you should make sure to check the page.
|
||||||
|
|
||||||
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
|
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
|
||||||
|
|
||||||
|
|||||||
+52
-43
@@ -384,20 +384,22 @@
|
|||||||
<!-- BEFORE: 1st line of markdown file: next/rules.md -->
|
<!-- BEFORE: 1st line of markdown file: next/rules.md -->
|
||||||
<!-- START: this line starts content from: inc/rules.closed.hdr -->
|
<!-- START: this line starts content from: inc/rules.closed.hdr -->
|
||||||
<h1 id="warning-these-rules-are-out-of-date">WARNING: These rules are OUT OF DATE</h1>
|
<h1 id="warning-these-rules-are-out-of-date">WARNING: These rules are OUT OF DATE</h1>
|
||||||
<p>These rules are a <strong>very tentative proposal</strong> for the next IOCCC
|
<p>These rules are a <strong>VERY TENTATIVE proposal</strong> for the next IOCCC
|
||||||
that is <strong>VERY LIKELY</strong> to be updated before the next IOCCC.
|
and are <strong>VERY LIKELY</strong> to be updated before the next IOCCC.
|
||||||
They are are provided as a <strong>very tentative</strong> hint at what
|
They are are provided as a <strong>very tentative</strong> hint at <strong>what
|
||||||
might be used in a future IOCCC.</p>
|
MIGHT</strong> be used in the next IOCCC.</p>
|
||||||
<p>Please regard these rules as a historic archive.</p>
|
<p>Please regard these rules as a historical archive.</p>
|
||||||
<h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
|
<h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
|
||||||
<p>The IOCCC is <strong>NOT</strong> accepting new submissions at this time. See the
|
<p>The IOCCC is <strong>NOT</strong> accepting new submissions at this time. See the <a href="../years.html">IOCCC
|
||||||
<a href="../years.html">IOCCC winning entries page</a> for the entries that have won the IOCCC.</p>
|
winning entries page</a> for the entries that have won the IOCCC in
|
||||||
|
the past.</p>
|
||||||
<p>Watch both <a href="../status.html">the IOCCC status page</a> and the
|
<p>Watch both <a href="../status.html">the IOCCC status page</a> and the
|
||||||
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about future IOCCC openings.</p>
|
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about
|
||||||
|
future IOCCC openings.</p>
|
||||||
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
||||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
<h1 id="th-international-obfuscated-c-code-contest-official-rules">28th International Obfuscated C Code Contest Official Rules</h1>
|
<h1 id="th-international-obfuscated-c-code-contest-official-rules">28th International Obfuscated C Code Contest Official Rules</h1>
|
||||||
<p><strong><code>|</code></strong> Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.</p>
|
<p><strong><code>|</code></strong> Copyright © 2024 Leonid A. Broukhis and Landon Curt Noll.</p>
|
||||||
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
||||||
granted provided this this copyright and notice are included in its entirety
|
granted provided this this copyright and notice are included in its entirety
|
||||||
and remains unaltered. All other uses must receive prior permission in
|
and remains unaltered. All other uses must receive prior permission in
|
||||||
@@ -408,7 +410,7 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
|
|||||||
<h3 id="change-marks">Change marks</h3>
|
<h3 id="change-marks">Change marks</h3>
|
||||||
<p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p>
|
<p><strong><code>|</code></strong> <strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong></p>
|
||||||
<p>Most lines (we sometimes make mistakes) that were modified since the previous
|
<p>Most lines (we sometimes make mistakes) that were modified since the previous
|
||||||
IOCCC start the <strong><code>|</code></strong> symbol.</p>
|
IOCCC start with the <strong><code>|</code></strong> symbol.</p>
|
||||||
<h1 id="obfuscate-defined">Obfuscate defined:</h1>
|
<h1 id="obfuscate-defined">Obfuscate defined:</h1>
|
||||||
<p>tr.v. -cated, -cating, -cates.
|
<p>tr.v. -cated, -cating, -cates.
|
||||||
<BR><BR>
|
<BR><BR>
|
||||||
@@ -421,7 +423,7 @@ IOCCC start the <strong><code>|</code></strong> symbol.</p>
|
|||||||
<h1 id="goals-of-the-contest">Goals of the Contest</h1>
|
<h1 id="goals-of-the-contest">Goals of the Contest</h1>
|
||||||
<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 <a href="rules.html">rules</a>.</li>
|
||||||
<li>To show the importance of programming style, in an ironic way.</li>
|
<li>To show the importance of programming style, in an ironic way.</li>
|
||||||
<li>To stress C compilers with unusual code.</li>
|
<li>To stress C compilers with unusual code.</li>
|
||||||
<li>To illustrate some of the subtleties of the C language.</li>
|
<li>To illustrate some of the subtleties of the C language.</li>
|
||||||
@@ -429,23 +431,22 @@ IOCCC start the <strong><code>|</code></strong> symbol.</p>
|
|||||||
</ul>
|
</ul>
|
||||||
<h1 id="important-ioccc-dates">Important IOCCC dates</h1>
|
<h1 id="important-ioccc-dates">Important IOCCC dates</h1>
|
||||||
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2019-Dec-26 06:01:41 UTC</strong> to <strong>2020-Mar-15 06:26:49 UTC</strong>.</p>
|
<p><strong><code>|</code></strong> This IOCCC runs from <strong>2019-Dec-26 06:01:41 UTC</strong> to <strong>2020-Mar-15 06:26:49 UTC</strong>.</p>
|
||||||
<p>Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
<p>Until the start of this IOCCC, these <a href="rules.html">rules</a>,
|
||||||
(contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
<a href="guidelines.html">guidelines</a> and iocccsize.c (contained in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||||
toolkit</a> and invoked by the
|
toolkit</a> and invoked by the
|
||||||
<code>mkiocccentry</code> tool)
|
<code>mkiocccentry(1)</code> tool) should be considered provisional <strong>BETA</strong> versions and
|
||||||
should be considered provisional <strong>BETA</strong> versions and may be
|
<strong>may be adjusted <em>AT ANY TIME</em></strong>.</p>
|
||||||
adjusted <strong>AT ANY TIME</strong>.</p>
|
|
||||||
<p>When the IOCCC is open, the submission URL is:
|
<p>When the IOCCC is open, the submission URL is:
|
||||||
<a href="https://submit.ioccc.org/">https://submit.ioccc.org/</a>, at all other
|
<a href="https://submit.ioccc.org/">https://submit.ioccc.org/</a>, at all other
|
||||||
times that link is likely to be unresponsive.</p>
|
times that link is likely to be unresponsive.</p>
|
||||||
<p>Please check the <a href="../faq.html#submit">How to enter link</a> link
|
<p>Please check the <a href="../faq.html#submit">How to enter FAQ</a>
|
||||||
for <strong>important information</strong> on how to submit to the IOCCC.</p>
|
for <strong>important information</strong> on how to submit to the IOCCC.</p>
|
||||||
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2020-Jan-15 12:21:37 UTC</strong>.
|
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2020-Jan-15 12:21:37 UTC</strong>.
|
||||||
Please wait to submit your entries until after that time.</p>
|
Please wait to submit your entries until after that time.</p>
|
||||||
<p>The official rules, guidelines will be available on the <a href="../index.html">official IOCCC
|
<p>The official <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a> will be
|
||||||
website</a> on or slightly before start of this IOCCC. The
|
available on the <a href="../index.html">official IOCCC website</a> on or slightly before
|
||||||
<code>mkiocccentry</code> toolkit may be obtained at any time at the
|
the start of this IOCCC. The <code>mkiocccentry</code> toolkit may be obtained at any time
|
||||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit repo</a>.</p>
|
at the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit repo</a>.</p>
|
||||||
<p>Please recheck on or after the start of this IOCCC to be sure you
|
<p>Please recheck on or after the start of this IOCCC to be sure you
|
||||||
are using the correct versions of these items before using the IOCCC
|
are using the correct versions of these items before using the IOCCC
|
||||||
entry submission URL.</p>
|
entry submission URL.</p>
|
||||||
@@ -461,15 +462,15 @@ entry submission URL.</p>
|
|||||||
<p>The size of your program source <strong>MUST BE <= 4096 bytes</strong>in length.</p>
|
<p>The size of your program source <strong>MUST BE <= 4096 bytes</strong>in length.</p>
|
||||||
<h2 id="rule-2b">Rule 2b</h2>
|
<h2 id="rule-2b">Rule 2b</h2>
|
||||||
<p><strong><code>|</code></strong> When your program source is fed as input to the current IOCCC size
|
<p><strong><code>|</code></strong> When your program source is fed as input to the current IOCCC size
|
||||||
tool, and the IOCCC size tool -i command line option is used, the
|
tool, and the IOCCC size tool <code>-i</code> command line option is used, the
|
||||||
value printed <strong>shall not exceed 2503</strong>.</p>
|
value printed <strong>shall not exceed 2503</strong>.</p>
|
||||||
<p><strong><code>|</code></strong> The source to the current IOCCC size tool is found in the
|
<p><strong><code>|</code></strong> The source to the current IOCCC size tool is found in the
|
||||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry tool repo</a>. If you use
|
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry tool repo</a>. If you use
|
||||||
the <code>mkiocccentry</code> tool (which we <strong>STRONGLY recommend you do</strong>) will invoke
|
the <code>mkiocccentry</code> tool (which we <strong>STRONGLY recommend you do</strong>) it will invoke
|
||||||
this tool before packaging your entry for submission.</p>
|
this tool before packaging your entry for submission.</p>
|
||||||
<h2 id="rule-3">Rule 3</h2>
|
<h2 id="rule-3">Rule 3</h2>
|
||||||
<p>Submissions should be performed using the instructions outlined at:
|
<p>Submissions should be performed using the instructions outlined at:
|
||||||
the <a href="../faq.html#submit">How to enter link</a> link.</p>
|
the <a href="../faq.html#submit">How to enter FAQ</a>.</p>
|
||||||
<p>To submit to an open IOCCC, you must use the <a href="https://submit.ioccc.org/">IOCCC submit server</a>.</p>
|
<p>To submit to an open IOCCC, you must use the <a href="https://submit.ioccc.org/">IOCCC submit server</a>.</p>
|
||||||
<p>When the IOCCC is not open, that link will likely be unresponsive.</p>
|
<p>When the IOCCC is not open, that link will likely be unresponsive.</p>
|
||||||
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2020-Jan-15 12:21:37 UTC</strong>.
|
<p><strong><code>|</code></strong> The submit URL should be active on or slightly before <strong>2020-Jan-15 12:21:37 UTC</strong>.
|
||||||
@@ -487,8 +488,8 @@ files you submit.</p>
|
|||||||
<p>If you entry wishes to modify such content, it <strong>MUST</strong> first copy the
|
<p>If you entry wishes to modify such content, it <strong>MUST</strong> first copy the
|
||||||
file to a new filename and then modify that copy.</p>
|
file to a new filename and then modify that copy.</p>
|
||||||
<h2 id="rule-6">Rule 6</h2>
|
<h2 id="rule-6">Rule 6</h2>
|
||||||
<p><strong><code>|</code></strong> I am not a rule, I am a <code>free(void \*human)</code>!</p>
|
<p><strong><code>|</code></strong> I am not a rule, I am a <code>free(void *human)</code>!</p>
|
||||||
<pre><code>| while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }</code></pre>
|
<pre><code> while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }</code></pre>
|
||||||
<h2 id="rule-7">Rule 7</h2>
|
<h2 id="rule-7">Rule 7</h2>
|
||||||
<p>The obfuscated C program must be an original work that you own.</p>
|
<p>The obfuscated C program must be an original work that you own.</p>
|
||||||
<p>You (the author(s)) must own the contents of your submission OR
|
<p>You (the author(s)) must own the contents of your submission OR
|
||||||
@@ -497,16 +498,16 @@ under the following license:</p>
|
|||||||
<p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p>
|
<p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p>
|
||||||
<p>See also Rule 18.</p>
|
<p>See also Rule 18.</p>
|
||||||
<p>If you submit any content that is owned by others, you <strong>MUST</strong>
|
<p>If you submit any content that is owned by others, you <strong>MUST</strong>
|
||||||
detail that ownership (i.e., who owns what) and document the
|
detail that ownership (i.e., who owns what) <strong>AND document the
|
||||||
permission you obtained.</p>
|
permission you obtained</strong>.</p>
|
||||||
<p>Please note that the IOCCC size tool is <strong>NOT</strong> an original work.</p>
|
<p>Please note that the IOCCC size tool is <strong>NOT</strong> an original work.</p>
|
||||||
<h2 id="rule-8">Rule 8</h2>
|
<h2 id="rule-8">Rule 8</h2>
|
||||||
<p><strong><code>|</code></strong> Entries must be received prior to the end of this IOCCC which is
|
<p><strong><code>|</code></strong> Entries must be received prior to the end of this IOCCC which is
|
||||||
<strong>2024-MMM-DD HH:MM:SS UTC</strong>. ** XXX - This date and time is TDB - XXX **.</p>
|
<strong>2024-MMM-DD HH:MM:SS UTC</strong>. <strong>XXX - This date and time is TDB - XXX </strong>.</p>
|
||||||
<p>A confirmation of submission will be sent to the submitting email address
|
<p>A confirmation of submission will be sent to the submitting email address
|
||||||
before the close of the contest.</p>
|
before the close of the contest.</p>
|
||||||
<h2 id="rule-9">Rule 9</h2>
|
<h2 id="rule-9">Rule 9</h2>
|
||||||
<p><strong><code>|</code></strong> Each person may submit up to and including 8.000000 entries per contest.</p>
|
<p><strong><code>|</code></strong> Each person may submit up to and including 10.000000 entries per contest.</p>
|
||||||
<p>Each entry must be submitted separately.</p>
|
<p>Each entry must be submitted separately.</p>
|
||||||
<h2 id="rule-10">Rule 10</h2>
|
<h2 id="rule-10">Rule 10</h2>
|
||||||
<p>Entries requiring human interaction to be initially compiled are not permitted.</p>
|
<p>Entries requiring human interaction to be initially compiled are not permitted.</p>
|
||||||
@@ -514,8 +515,8 @@ before the close of the contest.</p>
|
|||||||
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>, super-user,
|
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>, super-user,
|
||||||
special owner, special group, etc.) are still highly discouraged. We
|
special owner, special group, etc.) are still highly discouraged. We
|
||||||
do not guarantee these functions will behave as you expect on our test
|
do not guarantee these functions will behave as you expect on our test
|
||||||
platforms. If your program needs special permissions <strong>please</strong> document
|
platforms. If your program needs special permissions <strong>please document
|
||||||
them in the remarks file.</p>
|
them</strong> in the remarks file.</p>
|
||||||
<h2 id="rule-12">Rule 12</h2>
|
<h2 id="rule-12">Rule 12</h2>
|
||||||
<p>Legal abuse of the rules is somewhat encouraged. An entry that, in
|
<p>Legal abuse of the rules is somewhat encouraged. An entry that, in
|
||||||
the opinion of the judges, violates the rules will be disqualified.
|
the opinion of the judges, violates the rules will be disqualified.
|
||||||
@@ -547,7 +548,7 @@ competition.</p>
|
|||||||
<p>See also <a href="../faq.html#submit">How may I submit to the IOCCC?</a> in the
|
<p>See also <a href="../faq.html#submit">How may I submit to the IOCCC?</a> in the
|
||||||
<a href="../faq.html">FAQ</a>.</p>
|
<a href="../faq.html">FAQ</a>.</p>
|
||||||
<h2 id="rule-16">Rule 16</h2>
|
<h2 id="rule-16">Rule 16</h2>
|
||||||
<p>You are <strong>STRONGLY</strong> encouraged to submit a previously unpublished and
|
<p>You are <strong>STRONGLY</strong> encouraged to submit a previously unpublished <em>AND</em>
|
||||||
original entry. Submissions that are similar to previous entries are
|
original entry. Submissions that are similar to previous entries are
|
||||||
discouraged. As we judge anonymously, submissions that have already
|
discouraged. As we judge anonymously, submissions that have already
|
||||||
been published may be disqualified.</p>
|
been published may be disqualified.</p>
|
||||||
@@ -557,12 +558,14 @@ hints, comments, build and info files <strong>MUST</strong> be less than or equa
|
|||||||
to 28314624 octets (27651K) in size.</p>
|
to 28314624 octets (27651K) in size.</p>
|
||||||
<p><strong><code>|</code></strong> When your submission is formed into a bzip2 compressed tarball file,
|
<p><strong><code>|</code></strong> When your submission is formed into a bzip2 compressed tarball file,
|
||||||
that file must than or equal 3999971 octets in size.</p>
|
that file must than or equal 3999971 octets in size.</p>
|
||||||
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> (see <code>mkiocccentry(1)</code> and <code>txzchk(1)</code>) will help you verify that your submission conforms to this rule.</p>
|
<p><strong><code>|</code></strong> The <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||||
|
(see <code>mkiocccentry(1)</code> and <code>txzchk(1)</code>) will help you verify that your
|
||||||
|
submission conforms to this rule.</p>
|
||||||
<h2 id="rule-18">Rule 18</h2>
|
<h2 id="rule-18">Rule 18</h2>
|
||||||
<p>The entirety of your entry must be submitted under the following license:</p>
|
<p>The entirety of your entry must be submitted under the following license:</p>
|
||||||
<p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p>
|
<p><strong><code>|</code></strong> <strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p>
|
||||||
<p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
|
<p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
|
||||||
you <strong>MUST</strong> have permission from the owner(s) to submit their content.</p>
|
you <strong>MUST HAVE PERMISSION</strong> from the owner(s) to submit their content.</p>
|
||||||
<p>You must not submit anything that cannot be submitted under that license.</p>
|
<p>You must not submit anything that cannot be submitted under that license.</p>
|
||||||
<h2 id="rule-19">Rule 19</h2>
|
<h2 id="rule-19">Rule 19</h2>
|
||||||
<p>The remarks file must be written in markdown format. See
|
<p>The remarks file must be written in markdown format. See
|
||||||
@@ -570,9 +573,9 @@ the Daring Fireball <a href="http://daringfireball.net/projects/markdown/basics"
|
|||||||
for more information.</p>
|
for more information.</p>
|
||||||
<p><strong><code>|</code></strong> We currently use <a href="https://pandoc.org">pandoc</a> to convert markdown to HTML.</p>
|
<p><strong><code>|</code></strong> We currently use <a href="https://pandoc.org">pandoc</a> to convert markdown to HTML.</p>
|
||||||
<h2 id="rule-20">Rule 20</h2>
|
<h2 id="rule-20">Rule 20</h2>
|
||||||
<p>The how to build instructions must be in Makefile format. See <a href="../faq.html#make_compatibility">What kind of
|
<p>The how to build instructions must be in Makefile format. See <a href="../faq.html#make_compatibility">the FAQ about
|
||||||
make(1) compatibility does the IOCCC support and will it support other
|
make(1) compatibility the IOCCC
|
||||||
kinds?</a> for more details on what we support.</p>
|
supports</a> for more details.</p>
|
||||||
<p>The target of the Makefile must be called <code>prog</code>. The original
|
<p>The target of the Makefile must be called <code>prog</code>. The original
|
||||||
C source file must be called <code>prog.c</code>.</p>
|
C source file must be called <code>prog.c</code>.</p>
|
||||||
<p>To invoke the C compiler, use <code>${CC}</code>.
|
<p>To invoke the C compiler, use <code>${CC}</code>.
|
||||||
@@ -593,7 +596,7 @@ detect if required rules exist in your Makefile.</p>
|
|||||||
<p>Your entry must not create or modify files above the current directory
|
<p>Your entry must not create or modify files above the current directory
|
||||||
with the exception of the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your entry
|
with the exception of the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your entry
|
||||||
<strong>MAY</strong> create subdirectories below the current directory, or in <code>/tmp</code>,
|
<strong>MAY</strong> create subdirectories below the current directory, or in <code>/tmp</code>,
|
||||||
or in <code>/var/tmp</code> provided that “<strong>.</strong>” is <strong>NOT</strong> the first octet in any
|
or in <code>/var/tmp</code> provided that <code>.</code> is <strong>NOT</strong> the first octet in any
|
||||||
directory name or filename you submit.</p>
|
directory name or filename you submit.</p>
|
||||||
<h2 id="rule-22">Rule 22</h2>
|
<h2 id="rule-22">Rule 22</h2>
|
||||||
<p>Catch 22:</p>
|
<p>Catch 22:</p>
|
||||||
@@ -605,7 +608,7 @@ NOT know who is submitting entries to the IOCCC.</p>
|
|||||||
within your code, data, remarks or program output (unless you are
|
within your code, data, remarks or program output (unless you are
|
||||||
<em>Peter Honeyman</em> or pretending to be <em>Peter Honeyman</em>) will be grounds
|
<em>Peter Honeyman</em> or pretending to be <em>Peter Honeyman</em>) will be grounds
|
||||||
for disqualification of your entry.</p>
|
for disqualification of your entry.</p>
|
||||||
<p>Yes, Virginia, <strong>we REALLY mean it</strong>!</p>
|
<p>Yes, Virginia, <strong>WE REALLY MEAN IT!</strong></p>
|
||||||
<h2 id="rule-23">Rule 23</h2>
|
<h2 id="rule-23">Rule 23</h2>
|
||||||
<p>This prime rule number is reserved for future use.</p>
|
<p>This prime rule number is reserved for future use.</p>
|
||||||
<h2 id="rule-24">Rule 24</h2>
|
<h2 id="rule-24">Rule 24</h2>
|
||||||
@@ -618,10 +621,16 @@ for disqualification of your entry.</p>
|
|||||||
<p><strong><code>|</code></strong> Rule 27 is reserved for something cubic. :-)</p>
|
<p><strong><code>|</code></strong> Rule 27 is reserved for something cubic. :-)</p>
|
||||||
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
||||||
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
|
<p><strong><code>|</code></strong> For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
|
||||||
<p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as rules and the guidelines may (and often do) change from year to year.</p>
|
<p><strong><code>|</code></strong> Be sure to review the <a href="index.html">IOCCC Rules and Guidelines</a> as
|
||||||
<p><strong><code>|</code></strong> You should be sure you have the current rules and guidelines prior to submitting entries.</p>
|
<a href="rules.html">rules</a> and the <a href="guidelines.html">guidelines</a> may (and often do) change from year to year.</p>
|
||||||
|
<p><strong><code>|</code></strong> You should be sure you have the current <a href="rules.html">rules</a> and
|
||||||
|
<a href="guidelines.html">guidelines</a> prior to submitting entries.</p>
|
||||||
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
|
<p><strong><code>|</code></strong> See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
|
||||||
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our <a href="../faq.html#try_mastodon">FAQ</a> for more information.</p>
|
<p><strong><code>|</code></strong> For the updates and breaking IOCCC news, you are encouraged to follow
|
||||||
|
the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our
|
||||||
|
<a href="../faq.html#try_mastodon">FAQ</a> for more information. Please do note that unless
|
||||||
|
you are mentioned by us you will <strong>NOT</strong> get a notification from the app so you
|
||||||
|
should refresh the page even if you do follow us.</p>
|
||||||
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
|
<p><strong><code>|</code></strong> Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner web site</a> in general.</p>
|
||||||
<p>Leonid A. Broukhis<br>
|
<p>Leonid A. Broukhis<br>
|
||||||
chongo (Landon Curt Noll) <code>/\cc/\</code></p>
|
chongo (Landon Curt Noll) <code>/\cc/\</code></p>
|
||||||
|
|||||||
+52
-44
@@ -2,27 +2,29 @@
|
|||||||
|
|
||||||
# WARNING: These rules are OUT OF DATE
|
# WARNING: These rules are OUT OF DATE
|
||||||
|
|
||||||
These rules are a **very tentative proposal** for the next IOCCC
|
These rules are a **VERY TENTATIVE proposal** for the next IOCCC
|
||||||
that is **VERY LIKELY** to be updated before the next IOCCC.
|
and are **VERY LIKELY** to be updated before the next IOCCC.
|
||||||
They are are provided as a **very tentative** hint at what
|
They are are provided as a **very tentative** hint at **what
|
||||||
might be used in a future IOCCC.
|
MIGHT** be used in the next IOCCC.
|
||||||
|
|
||||||
Please regard these rules as a historic archive.
|
Please regard these rules as a historical archive.
|
||||||
|
|
||||||
|
|
||||||
# The IOCCC is closed
|
# The IOCCC is closed
|
||||||
|
|
||||||
The IOCCC is **NOT** accepting new submissions at this time. See the
|
The IOCCC is **NOT** accepting new submissions at this time. See the [IOCCC
|
||||||
[IOCCC winning entries page](../years.html) for the entries that have won the IOCCC.
|
winning entries page](../years.html) for the entries that have won the IOCCC in
|
||||||
|
the past.
|
||||||
|
|
||||||
Watch both [the IOCCC status page](../status.html) and the
|
Watch both [the IOCCC status page](../status.html) and the
|
||||||
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about future IOCCC openings.
|
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about
|
||||||
|
future IOCCC openings.
|
||||||
|
|
||||||
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
||||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||||
# 28th International Obfuscated C Code Contest Official Rules
|
# 28th International Obfuscated C Code Contest Official Rules
|
||||||
|
|
||||||
**`|`** Copyright © 2024 Leonid A. Broukhis, Landon Curt Noll.
|
**`|`** Copyright © 2024 Leonid A. Broukhis and Landon Curt Noll.
|
||||||
|
|
||||||
All Rights Reserved. Permission for personal, education or non-profit use is
|
All Rights Reserved. Permission for personal, education or non-profit use is
|
||||||
granted provided this this copyright and notice are included in its entirety
|
granted provided this this copyright and notice are included in its entirety
|
||||||
@@ -42,7 +44,7 @@ writing by [contacting the judges](../contact.html).
|
|||||||
**`|`** **← Lines that start with this symbol indicate a change from the previous IOCCC**
|
**`|`** **← Lines that start with this symbol indicate a change from the previous IOCCC**
|
||||||
|
|
||||||
Most lines (we sometimes make mistakes) that were modified since the previous
|
Most lines (we sometimes make mistakes) that were modified since the previous
|
||||||
IOCCC start the **`|`** symbol.
|
IOCCC start with the **`|`** symbol.
|
||||||
|
|
||||||
|
|
||||||
# Obfuscate defined:
|
# Obfuscate defined:
|
||||||
@@ -61,7 +63,7 @@ tr.v. -cated, -cating, -cates.
|
|||||||
|
|
||||||
The goals of the IOCCC:
|
The goals of the IOCCC:
|
||||||
|
|
||||||
* To write the most Obscure/Obfuscated C program within the rules.
|
* To write the most Obscure/Obfuscated C program within the [rules](rules.html).
|
||||||
* To show the importance of programming style, in an ironic way.
|
* To show the importance of programming style, in an ironic way.
|
||||||
* To stress C compilers with unusual code.
|
* To stress C compilers with unusual code.
|
||||||
* To illustrate some of the subtleties of the C language.
|
* To illustrate some of the subtleties of the C language.
|
||||||
@@ -72,27 +74,26 @@ The goals of the IOCCC:
|
|||||||
|
|
||||||
**`|`** This IOCCC runs from **2019-Dec-26 06:01:41 UTC** to **2020-Mar-15 06:26:49 UTC**.
|
**`|`** This IOCCC runs from **2019-Dec-26 06:01:41 UTC** to **2020-Mar-15 06:26:49 UTC**.
|
||||||
|
|
||||||
Until the start of this IOCCC, these rules, guidelines and iocccsize.c
|
Until the start of this IOCCC, these [rules](rules.html),
|
||||||
(contained in the [mkiocccentry
|
[guidelines](guidelines.html) and iocccsize.c (contained in the [mkiocccentry
|
||||||
toolkit](https://github.com/ioccc-src/mkiocccentry) and invoked by the
|
toolkit](https://github.com/ioccc-src/mkiocccentry) and invoked by the
|
||||||
`mkiocccentry` tool)
|
`mkiocccentry(1)` tool) should be considered provisional **BETA** versions and
|
||||||
should be considered provisional **BETA** versions and may be
|
**may be adjusted _AT ANY TIME_**.
|
||||||
adjusted **AT ANY TIME**.
|
|
||||||
|
|
||||||
When the IOCCC is open, the submission URL is:
|
When the IOCCC is open, the submission URL is:
|
||||||
[https://submit.ioccc.org/](https://submit.ioccc.org/), at all other
|
[https://submit.ioccc.org/](https://submit.ioccc.org/), at all other
|
||||||
times that link is likely to be unresponsive.
|
times that link is likely to be unresponsive.
|
||||||
|
|
||||||
Please check the [How to enter link](../faq.html#submit) link
|
Please check the [How to enter FAQ](../faq.html#submit)
|
||||||
for **important information** on how to submit to the IOCCC.
|
for **important information** on how to submit to the IOCCC.
|
||||||
|
|
||||||
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
|
**`|`** The submit URL should be active on or slightly before **2020-Jan-15 12:21:37 UTC**.
|
||||||
Please wait to submit your entries until after that time.
|
Please wait to submit your entries until after that time.
|
||||||
|
|
||||||
The official rules, guidelines will be available on the [official IOCCC
|
The official [rules](rules.html) and [guidelines](guidelines.html) will be
|
||||||
website](../index.html) on or slightly before start of this IOCCC. The
|
available on the [official IOCCC website](../index.html) on or slightly before
|
||||||
`mkiocccentry` toolkit may be obtained at any time at the
|
the start of this IOCCC. The `mkiocccentry` toolkit may be obtained at any time
|
||||||
[mkiocccentry toolkit repo](https://github.com/ioccc-src/mkiocccentry).
|
at the [mkiocccentry toolkit repo](https://github.com/ioccc-src/mkiocccentry).
|
||||||
|
|
||||||
Please recheck on or after the start of this IOCCC to be sure you
|
Please recheck on or after the start of this IOCCC to be sure you
|
||||||
are using the correct versions of these items before using the IOCCC
|
are using the correct versions of these items before using the IOCCC
|
||||||
@@ -126,19 +127,19 @@ The size of your program source **MUST BE <= 4096 bytes**in length.
|
|||||||
## Rule 2b
|
## Rule 2b
|
||||||
|
|
||||||
**`|`** When your program source is fed as input to the current IOCCC size
|
**`|`** When your program source is fed as input to the current IOCCC size
|
||||||
tool, and the IOCCC size tool -i command line option is used, the
|
tool, and the IOCCC size tool `-i` command line option is used, the
|
||||||
value printed **shall not exceed 2503**.
|
value printed **shall not exceed 2503**.
|
||||||
|
|
||||||
**`|`** The source to the current IOCCC size tool is found in the
|
**`|`** The source to the current IOCCC size tool is found in the
|
||||||
[mkiocccentry tool repo](https://github.com/ioccc-src/mkiocccentry). If you use
|
[mkiocccentry tool repo](https://github.com/ioccc-src/mkiocccentry). If you use
|
||||||
the `mkiocccentry` tool (which we **STRONGLY recommend you do**) will invoke
|
the `mkiocccentry` tool (which we **STRONGLY recommend you do**) it will invoke
|
||||||
this tool before packaging your entry for submission.
|
this tool before packaging your entry for submission.
|
||||||
|
|
||||||
|
|
||||||
## Rule 3
|
## Rule 3
|
||||||
|
|
||||||
Submissions should be performed using the instructions outlined at:
|
Submissions should be performed using the instructions outlined at:
|
||||||
the [How to enter link](../faq.html#submit) link.
|
the [How to enter FAQ](../faq.html#submit).
|
||||||
|
|
||||||
To submit to an open IOCCC, you must use the [IOCCC submit server](https://submit.ioccc.org/).
|
To submit to an open IOCCC, you must use the [IOCCC submit server](https://submit.ioccc.org/).
|
||||||
|
|
||||||
@@ -171,10 +172,10 @@ file to a new filename and then modify that copy.
|
|||||||
|
|
||||||
## Rule 6
|
## Rule 6
|
||||||
|
|
||||||
**`|`** I am not a rule, I am a `free(void \*human)`!
|
**`|`** I am not a rule, I am a `free(void *human)`!
|
||||||
|
|
||||||
``` <!---c-->
|
``` <!---c-->
|
||||||
| while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }
|
while (!understand(ioccc(rule(that(you(are(number(6)))))))) { ha_ha_ha(); }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -191,8 +192,8 @@ under the following license:
|
|||||||
See also Rule 18.
|
See also Rule 18.
|
||||||
|
|
||||||
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.
|
permission you obtained**.
|
||||||
|
|
||||||
Please note that the IOCCC size tool is **NOT** an original work.
|
Please note that the IOCCC size tool is **NOT** an original work.
|
||||||
|
|
||||||
@@ -200,7 +201,7 @@ Please note that the IOCCC size tool is **NOT** an original work.
|
|||||||
## Rule 8
|
## Rule 8
|
||||||
|
|
||||||
**`|`** Entries must be received prior to the end of this IOCCC which is
|
**`|`** Entries must be received prior to the end of this IOCCC which is
|
||||||
**2024-MMM-DD HH:MM:SS UTC**. ** XXX - This date and time is TDB - XXX **.
|
**2024-MMM-DD HH:MM:SS UTC**. **XXX - This date and time is TDB - XXX **.
|
||||||
|
|
||||||
|
|
||||||
A confirmation of submission will be sent to the submitting email address
|
A confirmation of submission will be sent to the submitting email address
|
||||||
@@ -209,7 +210,7 @@ before the close of the contest.
|
|||||||
|
|
||||||
## Rule 9
|
## Rule 9
|
||||||
|
|
||||||
**`|`** Each person may submit up to and including 8.000000 entries per contest.
|
**`|`** Each person may submit up to and including 10.000000 entries per contest.
|
||||||
|
|
||||||
Each entry must be submitted separately.
|
Each entry must be submitted separately.
|
||||||
|
|
||||||
@@ -224,8 +225,8 @@ Entries requiring human interaction to be initially compiled are not permitted.
|
|||||||
Programs that require special privileges (`setuid(2)`, `setgid(2)`, super-user,
|
Programs that require special privileges (`setuid(2)`, `setgid(2)`, super-user,
|
||||||
special owner, special group, etc.) are still highly discouraged. We
|
special owner, special group, etc.) are still highly discouraged. We
|
||||||
do not guarantee these functions will behave as you expect on our test
|
do not guarantee these functions will behave as you expect on our test
|
||||||
platforms. If your program needs special permissions **please** document
|
platforms. If your program needs special permissions **please document
|
||||||
them in the remarks file.
|
them** in the remarks file.
|
||||||
|
|
||||||
|
|
||||||
## Rule 12
|
## Rule 12
|
||||||
@@ -277,7 +278,7 @@ See also [How may I submit to the IOCCC?](../faq.html#submit) in the
|
|||||||
|
|
||||||
## Rule 16
|
## Rule 16
|
||||||
|
|
||||||
You are **STRONGLY** encouraged to submit a previously unpublished and
|
You are **STRONGLY** encouraged to submit a previously unpublished _AND_
|
||||||
original entry. Submissions that are similar to previous entries are
|
original entry. Submissions that are similar to previous entries are
|
||||||
discouraged. As we judge anonymously, submissions that have already
|
discouraged. As we judge anonymously, submissions that have already
|
||||||
been published may be disqualified.
|
been published may be disqualified.
|
||||||
@@ -292,8 +293,9 @@ to 28314624 octets (27651K) in size.
|
|||||||
**`|`** When your submission is formed into a bzip2 compressed tarball file,
|
**`|`** When your submission is formed into a bzip2 compressed tarball file,
|
||||||
that file must than or equal 3999971 octets in size.
|
that file must than or equal 3999971 octets in size.
|
||||||
|
|
||||||
**`|`** The [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) (see `mkiocccentry(1)` and `txzchk(1)`) will help you verify that your submission conforms to this rule.
|
**`|`** The [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||||
|
(see `mkiocccentry(1)` and `txzchk(1)`) will help you verify that your
|
||||||
|
submission conforms to this rule.
|
||||||
|
|
||||||
## Rule 18
|
## Rule 18
|
||||||
|
|
||||||
@@ -302,7 +304,7 @@ The entirety of your entry must be submitted under the following license:
|
|||||||
**`|`** **[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
|
**`|`** **[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
|
||||||
|
|
||||||
You (the author(s)) **MUST** own the contents of your submission **OR**
|
You (the author(s)) **MUST** own the contents of your submission **OR**
|
||||||
you **MUST** have permission from the owner(s) to submit their content.
|
you **MUST HAVE PERMISSION** from the owner(s) to submit their content.
|
||||||
|
|
||||||
You must not submit anything that cannot be submitted under that license.
|
You must not submit anything that cannot be submitted under that license.
|
||||||
|
|
||||||
@@ -318,9 +320,9 @@ for more information.
|
|||||||
|
|
||||||
## Rule 20
|
## Rule 20
|
||||||
|
|
||||||
The how to build instructions must be in Makefile format. See [What kind of
|
The how to build instructions must be in Makefile format. See [the FAQ about
|
||||||
make(1) compatibility does the IOCCC support and will it support other
|
make(1) compatibility the IOCCC
|
||||||
kinds?](../faq.html#make_compatibility) for more details on what we support.
|
supports](../faq.html#make_compatibility) for more details.
|
||||||
|
|
||||||
The target of the Makefile must be called `prog`. The original
|
The target of the Makefile must be called `prog`. The original
|
||||||
C source file must be called `prog.c`.
|
C source file must be called `prog.c`.
|
||||||
@@ -351,7 +353,7 @@ detect if required rules exist in your Makefile.
|
|||||||
Your entry must not create or modify files above the current directory
|
Your entry must not create or modify files above the current directory
|
||||||
with the exception of the `/tmp` and the `/var/tmp` directories. Your entry
|
with the exception of the `/tmp` and the `/var/tmp` directories. Your entry
|
||||||
**MAY** create subdirectories below the current directory, or in `/tmp`,
|
**MAY** create subdirectories below the current directory, or in `/tmp`,
|
||||||
or in `/var/tmp` provided that "**.**" is **NOT** the first octet in any
|
or in `/var/tmp` provided that `.` is **NOT** the first octet in any
|
||||||
directory name or filename you submit.
|
directory name or filename you submit.
|
||||||
|
|
||||||
|
|
||||||
@@ -370,7 +372,7 @@ within your code, data, remarks or program output (unless you are
|
|||||||
_Peter Honeyman_ or pretending to be _Peter Honeyman_) will be grounds
|
_Peter Honeyman_ or pretending to be _Peter Honeyman_) will be grounds
|
||||||
for disqualification of your entry.
|
for disqualification of your entry.
|
||||||
|
|
||||||
Yes, Virginia, **we REALLY mean it**!
|
Yes, Virginia, **WE REALLY MEAN IT!**
|
||||||
|
|
||||||
|
|
||||||
## Rule 23
|
## Rule 23
|
||||||
@@ -402,13 +404,19 @@ Rule 26 is also a rule.
|
|||||||
|
|
||||||
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
||||||
|
|
||||||
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as rules and the guidelines may (and often do) change from year to year.
|
**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as
|
||||||
|
[rules](rules.html) and the [guidelines](guidelines.html) may (and often do) change from year to year.
|
||||||
|
|
||||||
**`|`** You should be sure you have the current rules and guidelines prior to submitting entries.
|
**`|`** You should be sure you have the current [rules](rules.html) and
|
||||||
|
[guidelines](guidelines.html) prior to submitting entries.
|
||||||
|
|
||||||
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
|
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
|
||||||
|
|
||||||
**`|`** For the updates and breaking IOCCC news, you are encouraged to follow the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our [FAQ](../faq.html#try_mastodon) for more information.
|
**`|`** For the updates and breaking IOCCC news, you are encouraged to follow
|
||||||
|
the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our
|
||||||
|
[FAQ](../faq.html#try_mastodon) for more information. Please do note that unless
|
||||||
|
you are mentioned by us you will **NOT** get a notification from the app so you
|
||||||
|
should refresh the page even if you do follow us.
|
||||||
|
|
||||||
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
|
**`|`** Check out the [Official IOCCC winner web site](https://www.ioccc.org/index.html) in general.
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user