Finish format/typo checks in next/
I was asked to actually make corrections in the rules and guidelines and to make sure that the look and feel seems good. The typos and other features will be added back later. Some things worth noting below. First references to twitter were changed to mastodon. I also in some cases (this should be in the FAQ too and I'm not sure if it is) when referring to mastodon noted that unless you are mentioned (also if someone reposts your toot but this is not mentioned as it's not relevant) you will not get a notification so one should still refresh the page as otherwise they might not get an update. The current iocccsize in the mkiocccentry repo checks for 2503 not 2053 like it used to. Only some of the references can be changed to 2503, however. For why this is read the file! I changed the word 'historic' to 'historical'. This is because historical refers to something that happened in the past and the rules and guidelines are something that existed in the past. On the other hand historic refers to famous or important in history. Of course that might be the case here but it felt like in these cases historical was more correct. This, of course, depends entirely on how you view the rules and guidelines that are from the previous contest. This time I modified files in inc: guidelines.closed.hdr and rules.closed.hdr. This is because the next/guidelines.md and next/rules.md refer to it as being included (even though it appears that might not be the case). These files are simply what the top of the guidelines.md and rules.md files are. I do not know if this is important but since the markdown files do refer to them I have updated this time (even though it seems like one has to keep two copies of the same text).
This commit is contained in:
1 parent
4f5f5e7088
commit
367981c196
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