Partial review of guidelines updates
The rest of the file has to be looked at later.
This commit is contained in:
1 parent
e92d310258
commit
c1e307b970
2 files changed
+277
-165
No files matched your search
+136
-82
@@ -395,7 +395,9 @@ even be a copy of the guidelines from the previous IOCCC.</p>
|
||||
IOCCC in the past.</p>
|
||||
<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>
|
||||
future IOCCC openings. <strong>Please note</strong> that unless you are mentioned you will
|
||||
<strong>NOT</strong> get a push notification with the app so you should refresh the feed from
|
||||
time to time.</p>
|
||||
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
||||
<!-- 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>
|
||||
@@ -404,61 +406,78 @@ future IOCCC openings.</p>
|
||||
granted provided this this copyright and notice are included in its entirety
|
||||
and remains unaltered. All other uses must receive prior permission in
|
||||
writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
<div id="guidelines_version">
|
||||
<h2 id="ioccc-guidelines-version">IOCCC Guidelines version</h2>
|
||||
</div>
|
||||
<p><strong><code>|</code></strong> These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.1 2024-06-29</strong>.</p>
|
||||
<p><strong>IMPORTANT</strong>: Be <strong>SURE</strong> to read the <a href="rules.html">IOCCC rules</a>.</p>
|
||||
<div id="change_marks">
|
||||
<h3 id="change-marks">Change marks</h3>
|
||||
</div>
|
||||
<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
|
||||
IOCCC start with the <strong><code>|</code></strong> symbol.</p>
|
||||
<div id="about_guidelines">
|
||||
<h1 id="about-this-file">ABOUT THIS FILE:</h1>
|
||||
</div>
|
||||
<p>This file contains <em>guidelines</em> intended to help people who wish to
|
||||
submit entries to the <a href="https://www.ioccc.org">International Obfuscated C Code Contest
|
||||
participate in the <a href="https://www.ioccc.org">International Obfuscated C Code Contest
|
||||
(IOCCC)</a>.</p>
|
||||
<p>These are not the IOCCC rules, though it does contain comments about
|
||||
them. The <a href="guidelines.html">IOCCC guidelines</a> should be viewed as <em>hints</em> and <em>suggestions</em>.
|
||||
Entries that violate the <em>guidelines</em> but remain within the rules <em>are
|
||||
allowed</em>. Even so, you are safer if you remain within the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<p>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting entries.
|
||||
The rules are typically published along with the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<p>These are <strong>NOT the <a href="rules.html">IOCCC rules</a></strong>, though it does contain comments
|
||||
about them. The <a href="guidelines.html">IOCCC guidelines</a> should be viewed as
|
||||
<strong>hints</strong> and <strong>suggestions</strong>. <strong>Entries that violate the
|
||||
<a href="guidelines.html">guidelines</a> <em>but remain within the <a href="rules.html">rules</a></em></strong> <em>are
|
||||
allowed</em>. Even so, you are safer if you remain within the <a href="guidelines.html">IOCCC
|
||||
guidelines</a>.</p>
|
||||
<p><strong>You should read the current <a href="rules.html">IOCCC rules</a>, prior to submitting
|
||||
entries</strong>. The <a href="rules.html">rules</a> are typically published along with the <a href="guidelines.html">IOCCC
|
||||
guidelines</a>..</p>
|
||||
<div id="new">
|
||||
<h1 id="whats-new-this-ioccc">WHAT’S NEW THIS IOCCC</h1>
|
||||
</div>
|
||||
<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>.<br>
|
||||
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
|
||||
<p><strong><code>|</code></strong> The reason for the times of day are so that key IOCCC events are <strong>calculated</strong>
|
||||
for be a <strong>fun</strong>ctional UTC time. :-)</p>
|
||||
to be a <strong>fun</strong>ctional UTC time. :-)</p>
|
||||
<p><strong><code>|</code></strong> Until the start of this IOCCC, the <a href="rules.html">IOCCC rules</a>,
|
||||
<a href="guidelines.html">IOCCC guidelines</a> tools in the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, tool should be
|
||||
<a href="guidelines.html">IOCCC guidelines</a> and the tools in the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, should be
|
||||
considered provisional <strong>BETA</strong> versions and <strong>may be adjusted <em>AT
|
||||
ANY TIME</em></strong>.</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>.<br>
|
||||
<strong><code>|</code></strong> <strong>XXX - date/time is TBD - XXX</strong></p>
|
||||
<p><strong><code>|</code></strong> The <a href="rules.html">IOCCC rules</a>, <a href="guidelines.html">IOCCC
|
||||
guidelines</a> will be available on the official IOCCC
|
||||
website on or slightly before start of this IOCCC. Please check
|
||||
the IOCCC <a href="../faq.html#submit">FAQ about how to submit</a> to see how
|
||||
guidelines</a> will be available on the <a href="https://www.ioccc.org">official IOCCC
|
||||
website</a> on or slightly before start of this IOCCC. Please check
|
||||
<a href="../faq.html#submit">the IOCCC FAQ about how to submit</a> to see how
|
||||
to submit entries, on or after the start of this IOCCC, to be sure
|
||||
you are using the correct versions of these items before using the
|
||||
IOCCC submission URL.</p>
|
||||
<p><strong><code>|</code></strong> The <a href="rules.html#rule2a">Rule 2a</a> size has <strong>increased from 4096 to 4993</strong> bytes.</p>
|
||||
<p><strong><code>|</code></strong> The <a href="rules.html#rule2b">Rule 2b</a> size has <strong>increased from 2053 to 2503</strong> bytes.</p>
|
||||
<p><strong><code>|</code></strong> Use default way to compile submissions is now <code>-std=gnu17 -O3 -g3 -Wall -Wextra -pedantic</code>.</p>
|
||||
<p><strong><code>|</code></strong> Submissions are in the form of a single bzip2 compressed tarball.</p>
|
||||
<p><strong><code>|</code></strong> To assist in the formation of the bzip2 compressed tarball for submission, use the
|
||||
<p><strong><code>|</code></strong> The default way to compile submissions is now <code>-std=gnu17 -O3 -g3 -Wall -Wextra -pedantic</code>.</p>
|
||||
<p><strong><code>|</code></strong> Submissions are in the form of a single xz compressed tarball.</p>
|
||||
<p><strong><code>|</code></strong> To assist in the formation of the xz compressed tarball for submission, use the
|
||||
<code>mkiocccentry(1)</code> tool as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.</p>
|
||||
<p><strong><code>|</code></strong> <a href="rules.html#rule17">Rule 17</a> as been significantly modified
|
||||
<p><strong><code>|</code></strong> <a href="rules.html#rule17">Rule 17</a> has been <strong>significantly modified</strong>
|
||||
to account for the new <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> tools.</p>
|
||||
<p><strong><code>|</code></strong> An <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example">example Makefile</a>
|
||||
is now available from the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.</p>
|
||||
<p><strong><code>|</code></strong> The IOCCC submission URL, <a href="../status.html">when the IOCCC is open</a>, is <a href="https://submit.ioccc.org/">submit.ioccc.org</a>.</p>
|
||||
<p><strong><code>|</code></strong> An <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example">example
|
||||
Makefile</a>
|
||||
is now available from the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
repo</a> and you are encouraged to use
|
||||
it.</p>
|
||||
<p><strong><code>|</code></strong> The IOCCC submission URL, <a href="../status.html#open">when the IOCCC is open</a>, is <a href="https://submit.ioccc.org/">submit.ioccc.org</a>.</p>
|
||||
<div id="hints">
|
||||
<div id="suggestions">
|
||||
<h1 id="hints-and-suggestions">HINTS AND SUGGESTIONS:</h1>
|
||||
<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>
|
||||
<p>Keep in mind that rules change from year to year, so some winning entries
|
||||
might not be valid entries this year. What <em>was</em> unique and novel one year
|
||||
<em>might be ‘old’ the next year</em>.</p>
|
||||
<p>An submission is usually examined in a number of ways. We typically apply
|
||||
a number of tests to an submission:</p>
|
||||
</div>
|
||||
</div>
|
||||
<p>You are encouraged to examine the <a href="../years.html">winners of previous contests</a>.</p>
|
||||
<p>Keep in mind that <a href="rules.html">rules</a> change from year to year, so some <a href="../years.html">winning
|
||||
entries</a> might not be valid submissions this year; what <em>was</em> unique
|
||||
and novel one year <em>might be ‘old’ the next year</em>.</p>
|
||||
<p>A submission is usually examined in a number of ways. We typically apply
|
||||
a number of tests to a submission:</p>
|
||||
<ul>
|
||||
<li>look at the original source</li>
|
||||
<li>convert ANSI trigraphs to ASCII</li>
|
||||
@@ -474,26 +493,27 @@ You should ask yourself if your submission remains obscure after it has been
|
||||
‘<em>cleaned up</em>’ by the C pre-processor and a C beautifier.</p>
|
||||
<p>Your submission need not pass all of the above tests. In certain
|
||||
cases, a test is not important. Entries that compete for the
|
||||
‘<em>strangest/most creative source layout</em>’ need not do as well as
|
||||
‘<strong>strangest/most creative source layout</strong>’ need not do as well as
|
||||
others in terms of their algorithm. On the other hand, given
|
||||
two such entries, we are more inclined to pick the submission that
|
||||
does something interesting when you run it.</p>
|
||||
<p>We try to avoid limiting creativity in our rules. As such, we leave
|
||||
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
|
||||
is important. For this reason, we often award ‘<em>Best abuse of the
|
||||
rules</em>’ or ‘<em>Worst abuse of the rules</em>’ to an submission that illustrates this point
|
||||
in an ironic way.</p>
|
||||
<p>We do realize that there are holes in the rules, and invite entries
|
||||
to attempt to exploit them. We will award ‘<em>Worst abuse of the rules</em>’ or
|
||||
‘<em>Best abuse of the rules</em>’ and then plug the hole next year.</p>
|
||||
<p>We try to avoid limiting creativity in our <a href="rules.html">rules</a>. As such, we
|
||||
leave 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 is important. For this reason, we
|
||||
often award ‘<strong>Best abuse of the <a href="rules.html">rules</a></strong>’ or ‘<strong>Worst abuse of the
|
||||
<a href="rules.html">rules</a></strong>’ or some variation to a submission that illustrates this
|
||||
point in an ironic way.</p>
|
||||
<p>We do realize that there are holes in the <a href="rules.html">rules</a>, and invite
|
||||
entries to attempt to exploit them. We will award ‘<strong>Worst abuse of the
|
||||
<a href="rules.html">rules</a></strong>’ or ‘<strong>Best abuse of the <a href="rules.html">rules</a></strong>’ or some
|
||||
variation and then plug the hole next year.</p>
|
||||
<p><strong><code>|</code></strong> When we do need to plug a hole in the <a href="rules.html">IOCCC rules</a>
|
||||
or <a href="guidelines.html">IOCCC guidelines</a>, we will attempt to use a very
|
||||
small plug, if not smaller. Or, maybe not. :-)</p>
|
||||
<p><strong><code>|</code></strong> There may be less than 2^7+1 reasons why these <a href="guidelines.html">IOCCC guidelines</a> seem obfuscated.</p>
|
||||
<p>Check out your program and be sure that it works. We sometimes make
|
||||
the effort to debug an submission that has a slight problem, particularly
|
||||
the effort to debug a submission that has a slight problem, particularly
|
||||
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>
|
||||
<p><strong><code>|</code></strong> We tend to look down on a <a href="https://en.wikipedia.org/wiki/Prime_number">prime
|
||||
@@ -507,7 +527,7 @@ under certain conditions. Wise people, when submitting something clever
|
||||
will fully explain such cleverness in their submission’s <code>remarks.md</code> file.</p>
|
||||
<p>People who are considering to just use some complex mathematical
|
||||
function or state machine to spell out something such as “<em>hello,
|
||||
world!</em>” really really, and we do mean really, do need to be more creative.</p>
|
||||
world!</em>” <strong>really really, <em>and we do mean REALLY</em>, do need to be more creative</strong>.</p>
|
||||
<p>Ultra-obfuscated programs are, in some cases, easier to
|
||||
deobfuscate than subtly-obfuscated programs. Consider using
|
||||
misleading or subtle tricks layered on top of or under an
|
||||
@@ -523,8 +543,7 @@ are considered more portable.</p>
|
||||
<p><strong><code>|</code></strong> Your submission must satisfy BOTH the maximum size <a href="rules.html#rule2a">Rule 2a</a> AND your submission
|
||||
must satisfy the IOCCC size tool <a href="rules.html#rule2b">Rule 2b</a>.</p>
|
||||
<p><strong><code>|</code></strong> This IOCCC size tool imposes a 2nd limit on C code size (see <a href="rules.html#rule2a">Rule 2a</a>. To check your
|
||||
code against the 2nd limit of <a href="rules.html#rule2">Rule 2</a>, use the -i command line option.
|
||||
For example:</p>
|
||||
code against the 2nd limit of <a href="rules.html#rule2">Rule 2</a>:</p>
|
||||
<pre><code> ./iocccsize prog.c</code></pre>
|
||||
<p><strong><code>|</code></strong> The IOCCC size tool algorithm may be summarized as follows:</p>
|
||||
<pre><code> The size tool counts most C reserved words (keyword, secondary,
|
||||
@@ -534,7 +553,7 @@ For example:</p>
|
||||
'`;`', '`{`' or '`}`' octet immediately before the end of file.</code></pre>
|
||||
<p>ASCII whitespace includes ASCII tab, ASCII space, ASCII newline,
|
||||
ASCII formfeed, and ASCII carriage return.</p>
|
||||
<p><strong><code>|</code></strong> When ‘<code>;</code>’, ‘<code>{</code>’ or ‘<code>}</code>’ are within a C string, they may still not be
|
||||
<p><strong><code>|</code></strong> When ‘<code>;</code>’, ‘<code>{</code>’ or ‘<code>}</code>’ are within a C string, they may still not be<br>
|
||||
<strong><code>|</code></strong> counted by the IOCCC size tool. This is a feature, not a bug!</p>
|
||||
<p>In cases where the above summary and the algorithm implemented by
|
||||
the IOCCC size tool source code conflict, the algorithm implemented
|
||||
@@ -573,13 +592,15 @@ compiler! We often start by compiling using the <strong>clang</strong> C compile
|
||||
by modifying the <code>CSTD</code> Makefile variable. For example, to use <code>c17</code> instead:</p>
|
||||
<pre><code> CSTD= -std=c17</code></pre>
|
||||
<p><strong><code>|</code></strong> For compilers, such as clang, that have the <code>-Weverything</code> option,
|
||||
while you try wish it, <strong>HOWEVER</strong> see the <a href="../faq.html#weverything">FAQ about clang -Weverything</a>.
|
||||
Thus, we do <strong>NOT</strong> recommend that you put the use of <code>-Weverything</code> into
|
||||
your submission’s <code>Makefile</code>.</p>
|
||||
while you may wish to try it, you should look at <a href="../faq.html#weverything">the FAQ about clang
|
||||
-Weverything</a>. We do <strong>NOT</strong> recommend that you put
|
||||
the use of <code>-Weverything</code> into your submission’s <code>Makefile</code> for the reasons
|
||||
cited there. This goes even if your version does not trigger a warning as some
|
||||
other version might.</p>
|
||||
<p><strong><code>|</code></strong> You may change the level of optimization and compiler debug level
|
||||
which your submission is compiled by modifying the <code>COPT</code> Makefile variable.
|
||||
For example, to compile without optimization:</p>
|
||||
<pre><code> COPT= -O0 -g3</code></pre>
|
||||
that your submission is compiled with, by modifying the <code>OPT</code> Makefile variable.
|
||||
For example, to compile without optimization and debug symbols:</p>
|
||||
<pre><code> OPT= -O0 -g3</code></pre>
|
||||
<p><strong><code>|</code></strong> There is no real penalty for compiler warnings. Sometimes
|
||||
compiler warnings cannot be helped: especially in the case of
|
||||
obfuscated C. :-) So if you cannot easily get rid of a compiler
|
||||
@@ -590,7 +611,9 @@ try something such as:</p>
|
||||
<p><strong><code>|</code></strong> If you do add “<code>-Wno-some-thing</code>” to your Makefile,
|
||||
consider also adding <code>-Wno-unknown-warning-option</code> just in case the
|
||||
warning you use is not available in the compilers we use test your
|
||||
submission.</p>
|
||||
submission. Observe, however, that some compilers <strong>DO NOT</strong> have that option so
|
||||
you might wish to note this in your <strong>remarks.md</strong> as it can be a command line
|
||||
error.</p>
|
||||
<p><strong><code>|</code></strong> If you need to define something on the compile line, use
|
||||
the <code>CDEFINE</code> Makefile variable. For example:</p>
|
||||
<pre><code> CDEFINE= -Dfoo -Dbar=baz</code></pre>
|
||||
@@ -600,9 +623,13 @@ the <code>CINCLUDE</code> Makefile variable. For example:</p>
|
||||
<p><strong><code>|</code></strong> If need add other “<em>magic</em>” flags to your compile line,
|
||||
use the <code>COTHER</code> Makefile variable. For example:</p>
|
||||
<pre><code> COTHER= -fno-math-errno</code></pre>
|
||||
<p><strong>NOTE</strong>: We recommend using only “<em>magic</em>” flags that both <strong>gcc</strong>
|
||||
and <strong>clang</strong> support.</p>
|
||||
<p><strong>NOTE</strong>: We recommend using “<em>magic</em>” flags <strong>only if BOTH <em>gcc</em>
|
||||
and <em>clang</em></strong> support it.</p>
|
||||
<div id="likes">
|
||||
<div id="dislikes">
|
||||
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
|
||||
</div>
|
||||
</div>
|
||||
<p><strong><code>|</code></strong> We <strong>LIKE</strong> entries that use an edited variant of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example">example Makefile</a>,
|
||||
renamed as <code>Makefile</code> of course. This makes it easier for the <a href="../judges.html">IOCCC Judges</a>
|
||||
@@ -756,8 +783,8 @@ Please try to be much more creative.</p>
|
||||
<p>We really <strong>DISLIKE</strong> entries that make blatant use of including
|
||||
large data files to get around the source code size limit.</p>
|
||||
<p>We do not recommend submitting <a href="https://systemd.io">systemd</a> source code to the IOCCC,
|
||||
if nothing else because that code is likely to exceed the source code
|
||||
size limit. This isn’t to say that another highly compact and obfuscated
|
||||
if nothing else because that code is likely to exceed <a href="rules.html#rule2">the source code
|
||||
size limit</a>. This isn’t to say that another highly compact and obfuscated
|
||||
replacement of <code>init</code> would not be an interesting submission.</p>
|
||||
<p>Did we remember to indicate that programs that blatantly use
|
||||
some complex state machine to do something simple are boring?
|
||||
@@ -939,8 +966,8 @@ Attempting to factor anything else will cause the program to insult your pet fis
|
||||
Attempting to factor anything else will cause the program to insult your pet fish Eric,<br>
|
||||
or in the case that you lack such a pet, will insult the pet that you do not have.</p>
|
||||
</blockquote>
|
||||
<p>When all other things are equal, an submission with fewer limitations will be judged
|
||||
better than an submission with lots of limitations. So you might want to code accordingly
|
||||
<p>When all other things are equal, a submission with fewer limitations will be judged
|
||||
better than a submission with lots of limitations. So you might want to code accordingly
|
||||
and state:</p>
|
||||
<blockquote>
|
||||
<p>This submission attempts to a factor value of any size provided that the program is<br>
|
||||
@@ -954,7 +981,11 @@ might insult a fish named Eric.</p>
|
||||
<p><strong><code>|</code></strong> <strong>PLEASE</strong> observe our <a href="../markdown.html">IOCCC markdown guidelines</a> when forming your submission’s <code>remarks.md</code> file. And if your submission contains additional markdown files, please follow those same guidelines. See also <a href="rules.html#rule19">Rule 19</a>.</p>
|
||||
<p><strong><code>|</code></strong> We <strong>LIKE</strong> a reading <code>remarks.md</code> files, especially if they contain useful, informative, and even humorous content about your submission. Yes, this is a <strong>hint</strong>. :-)</p>
|
||||
<p><strong><code>|</code></strong> We <strong>RECOMMEND</strong> you put a reasonable amount effort into the content of the <code>remarks.md</code> file: it is a required for for a reason. :-)</p>
|
||||
<div id="rules_abuse">
|
||||
<div id="abusing_rules">
|
||||
<h1 id="abusing-the-rules">ABUSING THE RULES:</h1>
|
||||
</div>
|
||||
</div>
|
||||
<p>Legal abuse of the <a href="rules.html">IOCCC rules</a> is somewhat encouraged. Legal rule abuse
|
||||
may involve, but is not limited to, doing things that are technically allowed by
|
||||
the <a href="rules.html">IOCCC rules</a> and yet do not fit the spirit of what we intended to be
|
||||
@@ -963,10 +994,10 @@ submitted.</p>
|
||||
entries, regardless of if they receive an award, result in changes to
|
||||
the next year’s <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<p>Legal abuse of the <a href="rules.html">IOCCC rules</a> is NOT an invitation to violate the
|
||||
<a href="rules.html">IOCCC rules</a>. An submission that violates the <a href="rules.html">rules</a> in the
|
||||
<a href="rules.html">IOCCC rules</a>. A submission that violates the <a href="rules.html">rules</a> in the
|
||||
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 submission that might otherwise be interesting, you might want to
|
||||
have a submission that might otherwise be interesting, you might want to
|
||||
submit two versions; one that does not abuse the <a href="rules.html">IOCCC rules</a> and one that
|
||||
does.</p>
|
||||
<p><strong><code>|</code></strong> If you intend to abuse the <a href="rules.html">IOCCC rules</a>,
|
||||
@@ -979,7 +1010,7 @@ submitting an alternate version that conforms to the
|
||||
<a href="rules.html">IOCCC rules</a>.</p>
|
||||
<p><strong><code>|</code></strong> If do bypass the <code>mkiocccentry(1)</code> warnings about <a href="rules.html#rule2a">Rule
|
||||
2a</a> and/or about <a href="rules.html#rule2b">Rule 2b</a>
|
||||
and submit an submission anyway, you <strong>MUST</strong> try to justify why the IOCCC
|
||||
and submit a submission anyway, you <strong>MUST</strong> try to justify why the IOCCC
|
||||
judges should not reject your submission due to a rule violation.</p>
|
||||
<p>Abusing the web submission procedure tends to annoy us more
|
||||
than amuse us. Spend your creative energy on content of your
|
||||
@@ -1004,7 +1035,9 @@ sometimes conflicting specifications and requirements from marketing, sales,
|
||||
product management an even from customers themselves on a all too regular basis.
|
||||
This is one of the reasons why the <a href="rules.html">IOCCC rules</a> and
|
||||
<a href="guidelines.html">IOCCC guidelines</a> are written in obfuscated form.</p>
|
||||
<div id="judging">
|
||||
<h1 id="judging-process">JUDGING PROCESS:</h1>
|
||||
</div>
|
||||
<p>Entries are judged by Leonid A. Broukhis and Landon Curt Noll.</p>
|
||||
<p>Each submission submitted is given a random id number and subdirectory. The
|
||||
submission files including, but not limited to prog.c, Makefile (that we
|
||||
@@ -1032,7 +1065,7 @@ will likely believe it just another attempt at confusion. This <em>guideline</em
|
||||
known as the “Peter Honeyman is exempt” <em>guideline</em>.</p>
|
||||
<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
|
||||
did submit an submission in the past. In the past, Peter had denied
|
||||
did submit a submission in the past. In the past, Peter had denied
|
||||
submitting anything to the IOCCC. Perhaps those entries were
|
||||
submitted by one of his students?</p>
|
||||
<p><strong><code>|</code></strong> Hopefully we are <strong>VERY CLEAR</strong> on this point! The rules now strongly state:
|
||||
@@ -1049,13 +1082,20 @@ attempts to send non-winners into oblivion. We remove all non-winning
|
||||
files, and shred all related paper. By tradition, we do not even
|
||||
reveal the number of entries that we received.</p>
|
||||
<p>During the judging process, a process that spans multiple sessions
|
||||
over a few weeks, post general updates from our <a href="https://fosstodon.org/@ioccc">Mastodon
|
||||
account</a>.</p>
|
||||
over a few weeks, we post general updates from our <a href="https://fosstodon.org/@ioccc">Mastodon
|
||||
account</a>. Make sure you reload the feed every so
|
||||
often as unless you are mentioned you will not get a push notification.</p>
|
||||
<div id="rounds">
|
||||
<h2 id="judging-rounds">JUDGING ROUNDS:</h2>
|
||||
</div>
|
||||
<p>Judging consists of a number of elimination rounds. During a round,
|
||||
the collection of entries are divided into two roughly equal piles;
|
||||
the pile that advances on to the next round, and the pile that does
|
||||
not. We also re-examine the entries that were eliminated in the
|
||||
previous round. Thus, an submission gets at least two readings.</p>
|
||||
previous round. Thus, a submission gets at least two readings.</p>
|
||||
<div id="readings">
|
||||
<h2 id="judging-readings">JUDGING READINGS:</h2>
|
||||
</div>
|
||||
<p>A reading consists of a number of actions:</p>
|
||||
<ul>
|
||||
<li>reading the “how to build” information and forming a Makefile</li>
|
||||
@@ -1075,11 +1115,11 @@ skipping over any #include files</li>
|
||||
miscellaneous tests on the source and binary.</p>
|
||||
<p><strong><code>|</code></strong> This is the very <em>guideline</em> that goes, BING!</p>
|
||||
<p>Until we reduce the stack of entries down to about 25 entries, entries
|
||||
are judged on an individual basis. An submission is set aside because it
|
||||
are judged on an individual basis. A submission is set aside because it
|
||||
does not, in our opinion, meet the standard established by the round.
|
||||
When the number of entries thins to about 25 entries, we begin to form
|
||||
award categories. Entries begin to compete with each other for awards.
|
||||
An submission will often compete in several categories.</p>
|
||||
A submission will often compete in several categories.</p>
|
||||
<p>The actual award category list will vary depending on the types of entries
|
||||
we receive. A typical category list might be:</p>
|
||||
<ul>
|
||||
@@ -1108,7 +1148,7 @@ make it. The selection of the winners out of the final round, is
|
||||
less clear cut.</p>
|
||||
<p>Sometimes a final round submission is good enough to win, but is beat out
|
||||
by a similar, but slightly better submission. For this reason, it is
|
||||
sometimes worthwhile to re-enter an improved version of an submission
|
||||
sometimes worthwhile to re-enter an improved version of a submission
|
||||
that failed to win in a previous year. This assumes, of course,
|
||||
that the submission is worth improving in the first place!</p>
|
||||
<p><strong><code>|</code></strong> Over the years, more than one <a href="../judges.html">IOCCC judge</a>
|
||||
@@ -1137,49 +1177,63 @@ submission that abuses the <a href="guidelines.html">IOCCC guidelines</a> in an
|
||||
or that stretches the content rules that while legal, is
|
||||
nevertheless goes against the intent of the rules.</p>
|
||||
<p>In the end, we traditionally pick one submission as ‘best’. Sometimes such
|
||||
an submission simply far exceeds any of the other entries. More often, the
|
||||
a submission simply far exceeds any of the other entries. More often, the
|
||||
‘best’ is picked because it does well in a number of categories.</p>
|
||||
<p>In years past, we renamed the winning submission from prog.c to a
|
||||
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>
|
||||
<div id="announcements">
|
||||
<h1 id="announcement-of-winners">ANNOUNCEMENT OF WINNERS:</h1>
|
||||
</div>
|
||||
<p>The judges will toot initial announcement of who won, the name
|
||||
of their award, and a very brief description of the winning submission
|
||||
from the <a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> Mastodon account</a>. 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.</p>
|
||||
<div id="winners">
|
||||
<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>
|
||||
</div>
|
||||
<p><strong><code>|</code></strong> The <a href="../status.html">Current status of the IOCCC</a> will change from
|
||||
<strong><a href="../status.html#judging">judging</a></strong> to <strong><a href="../status.html#closed">closed</a></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> When the above happens, the winning entries have been selected by the <a href="../judges.html">IOCCC judges</a>.</p>
|
||||
<p><strong><code>|</code></strong> The <a href="../judges.html">IOCCC judges</a> will begin to prepare to release the source code of the new IOCCC winners.</p>
|
||||
<p><strong><code>|</code></strong> The <a href="../judges.html">IOCCC judges</a> will post the winning source to the <a href="https://github.com/ioccc-src/winner">IOCCC winner repo</a> as well as to the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a>.</p>
|
||||
<p><strong><code>|</code></strong> The <a href="../news.html">IOCCC news</a> will also contain an announcement of the winners.</p>
|
||||
<div id="mastodon">
|
||||
<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
|
||||
by a git commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries
|
||||
repo</a> 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 <a href="https://fosstodon.org/@ioccc">IOCCC Mastodon
|
||||
account</a>.</p>
|
||||
</div>
|
||||
<p><strong><code>|</code></strong> The IOCCC no longer uses twitter. IOCCC entries will be announced by a
|
||||
git commit to the <a href="https://github.com/ioccc-src/winner">IOCCC entries repo</a>
|
||||
that, in turn, updates the <a href="https://www.ioccc.org/index.html">official IOCCC
|
||||
website</a>.</p>
|
||||
<p><strong><code>|</code></strong> In addition a note is posted to the <a href="https://fosstodon.org/@ioccc">IOCCC Mastodon account</a>.</p>
|
||||
<div id="entries">
|
||||
<h2 id="back-to-announcement-of-winners">Back to announcement of winners</h2>
|
||||
<p><strong><code>|</code></strong> It is pointless to ask the <a href="../judges.html">IOCCC judges</a> how many entries we receive. See <a href="../faq.html#how_many">How many entries do the judges receive for a given IOCCC</a>.</p>
|
||||
</div>
|
||||
<p><strong><code>|</code></strong> It is pointless to ask the <a href="../judges.html">IOCCC judges</a> how many
|
||||
submissions we receive. See <a href="../faq.html#how_many">How many submissions do the judges receive for a given IOCCC</a>.</p>
|
||||
<p>Often, winning entries are published in selected magazines from around
|
||||
the world. Winners have appeared in books (“The New Hackers Dictionary”)
|
||||
and on T-Shirts. More than one winner has been turned in a tattoo!</p>
|
||||
and on T-Shirts. More than one winner has been turned into a tattoo!</p>
|
||||
<p>Last, but not least, winners receive international fame and flames! :-)</p>
|
||||
<div id="more-information">
|
||||
<div id="information">
|
||||
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
||||
</div>
|
||||
</div>
|
||||
<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 the
|
||||
<a href="rules.html">IOCCC rules</a> and the <a href="guidelines.html">IOCCC 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">IOCCC rules</a> and
|
||||
<a href="guidelines.html">IOCCC 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> 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 website</a> in general.</p>
|
||||
<p><strong><code>|</code></strong> For the updates and breaking <a href="../news.html">IOCCC news</a>, you are encouraged to follow
|
||||
the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a>. See our
|
||||
<a href="../faq.html#try_mastodon">FAQ on Mastodon</a> for more information. Please be aware that
|
||||
unless you are mentioned you most likely will <strong>NOT</strong> get a notification
|
||||
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 website</a> in general.</p>
|
||||
<p>Leonid A. Broukhis<br>
|
||||
chongo (Landon Curt Noll) /\cc/\</p>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
|
||||
+141
-83
@@ -17,7 +17,11 @@ IOCCC in the past.
|
||||
|
||||
Watch both [the IOCCC status page](../status.html) and the
|
||||
[@IOCCC mastodon feed](https://fosstodon.org/@ioccc) for information about
|
||||
future IOCCC openings.
|
||||
future IOCCC openings. **Please note** that unless you are mentioned you will
|
||||
**NOT** get a push notification with the app so you should refresh the feed from
|
||||
time to time.
|
||||
|
||||
|
||||
|
||||
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||
@@ -31,14 +35,18 @@ and remains unaltered. All other uses must receive prior permission in
|
||||
writing by [contacting the judges](../contact.html).
|
||||
|
||||
|
||||
<div id="guidelines_version">
|
||||
## IOCCC Guidelines version
|
||||
</div>
|
||||
|
||||
**`|`** These [IOCCC guidelines](guidelines.html) are version **28.1 2024-06-29**.
|
||||
|
||||
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
|
||||
|
||||
|
||||
<div id="change_marks">
|
||||
### Change marks
|
||||
</div>
|
||||
|
||||
**`|`** **← Lines that start with this symbol indicate a change from the previous IOCCC**
|
||||
|
||||
@@ -46,32 +54,39 @@ Most lines (we sometimes make mistakes) that were modified since the previous
|
||||
IOCCC start with the **`|`** symbol.
|
||||
|
||||
|
||||
<div id="about_guidelines">
|
||||
# ABOUT THIS FILE:
|
||||
</div>
|
||||
|
||||
This file contains _guidelines_ intended to help people who wish to
|
||||
submit entries to the [International Obfuscated C Code Contest
|
||||
participate in the [International Obfuscated C Code Contest
|
||||
(IOCCC)](https://www.ioccc.org).
|
||||
|
||||
These are not the IOCCC rules, though it does contain comments about
|
||||
them. The [IOCCC guidelines](guidelines.html) should be viewed as _hints_ and _suggestions_.
|
||||
Entries that violate the _guidelines_ but remain within the rules _are
|
||||
allowed_. Even so, you are safer if you remain within the [IOCCC guidelines](guidelines.html).
|
||||
These are **NOT the [IOCCC rules](rules.html)**, though it does contain comments
|
||||
about them. The [IOCCC guidelines](guidelines.html) should be viewed as
|
||||
**hints** and **suggestions**. **Entries that violate the
|
||||
[guidelines](guidelines.html) _but remain within the [rules](rules.html)_** _are
|
||||
allowed_. Even so, you are safer if you remain within the [IOCCC
|
||||
guidelines](guidelines.html).
|
||||
|
||||
You should read the current [IOCCC rules](rules.html), prior to submitting entries.
|
||||
The rules are typically published along with the [IOCCC guidelines](guidelines.html).
|
||||
**You should read the current [IOCCC rules](rules.html), prior to submitting
|
||||
entries**. The [rules](rules.html) are typically published along with the [IOCCC
|
||||
guidelines](guidelines.html)..
|
||||
|
||||
|
||||
<div id="new">
|
||||
# WHAT'S NEW THIS IOCCC
|
||||
</div>
|
||||
|
||||
**`|`** This IOCCC runs from **2024-MMM-DD HH:MM:SS UTC** to **YYYY-MMM-DD HH:MM:SS UTC**.<br>
|
||||
**`|`** **XXX - date/time is TBD - XXX**
|
||||
|
||||
**`|`** The reason for the times of day are so that key IOCCC events are **calculated**
|
||||
for be a **fun**ctional UTC time. :-)
|
||||
to be a **fun**ctional UTC time. :-)
|
||||
|
||||
**`|`** Until the start of this IOCCC, the [IOCCC rules](rules.html),
|
||||
[IOCCC guidelines](guidelines.html) tools in the
|
||||
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), tool should be
|
||||
[IOCCC guidelines](guidelines.html) and the tools in the
|
||||
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), should be
|
||||
considered provisional **BETA** versions and **may be adjusted _AT
|
||||
ANY TIME_**.
|
||||
|
||||
@@ -79,9 +94,9 @@ ANY TIME_**.
|
||||
**`|`** **XXX - date/time is TBD - XXX**
|
||||
|
||||
**`|`** The [IOCCC rules](rules.html), [IOCCC
|
||||
guidelines](guidelines.html) will be available on the official IOCCC
|
||||
website on or slightly before start of this IOCCC. Please check
|
||||
the IOCCC [FAQ about how to submit](../faq.html#submit) to see how
|
||||
guidelines](guidelines.html) will be available on the [official IOCCC
|
||||
website](https://www.ioccc.org) on or slightly before start of this IOCCC. Please check
|
||||
[the IOCCC FAQ about how to submit](../faq.html#submit) to see how
|
||||
to submit entries, on or after the start of this IOCCC, to be sure
|
||||
you are using the correct versions of these items before using the
|
||||
IOCCC submission URL.
|
||||
@@ -90,33 +105,39 @@ IOCCC submission URL.
|
||||
|
||||
**`|`** The [Rule 2b](rules.html#rule2b) size has **increased from 2053 to 2503** bytes.
|
||||
|
||||
**`|`** Use default way to compile submissions is now `-std=gnu17 -O3 -g3 -Wall -Wextra -pedantic`.
|
||||
**`|`** The default way to compile submissions is now `-std=gnu17 -O3 -g3 -Wall -Wextra -pedantic`.
|
||||
|
||||
**`|`** Submissions are in the form of a single bzip2 compressed tarball.
|
||||
**`|`** Submissions are in the form of a single xz compressed tarball.
|
||||
|
||||
**`|`** To assist in the formation of the bzip2 compressed tarball for submission, use the
|
||||
**`|`** To assist in the formation of the xz compressed tarball for submission, use the
|
||||
`mkiocccentry(1)` tool as found in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry).
|
||||
|
||||
**`|`** [Rule 17](rules.html#rule17) as been significantly modified
|
||||
**`|`** [Rule 17](rules.html#rule17) has been **significantly modified**
|
||||
to account for the new [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) tools.
|
||||
|
||||
**`|`** An [example Makefile](https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example)
|
||||
is now available from the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry).
|
||||
**`|`** An [example
|
||||
Makefile](https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example)
|
||||
is now available from the [mkiocccentry
|
||||
repo](https://github.com/ioccc-src/mkiocccentry) and you are encouraged to use
|
||||
it.
|
||||
|
||||
**`|`** The IOCCC submission URL, [when the IOCCC is open](../status.html), is [submit.ioccc.org](https://submit.ioccc.org/).
|
||||
**`|`** The IOCCC submission URL, [when the IOCCC is open](../status.html#open), is [submit.ioccc.org](https://submit.ioccc.org/).
|
||||
|
||||
|
||||
<div id="hints">
|
||||
<div id="suggestions">
|
||||
# HINTS AND SUGGESTIONS:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
You are encouraged to examine the winners of previous contests. See
|
||||
**FOR MORE INFORMATION** for details on how to get previous winners.
|
||||
You are encouraged to examine the [winners of previous contests](../years.html).
|
||||
|
||||
Keep in mind that rules change from year to year, so some winning entries
|
||||
might not be valid entries this year. What _was_ unique and novel one year
|
||||
_might be 'old' the next year_.
|
||||
Keep in mind that [rules](rules.html) change from year to year, so some [winning
|
||||
entries](../years.html) might not be valid submissions this year; what _was_ unique
|
||||
and novel one year _might be 'old' the next year_.
|
||||
|
||||
An submission is usually examined in a number of ways. We typically apply
|
||||
a number of tests to an submission:
|
||||
A submission is usually examined in a number of ways. We typically apply
|
||||
a number of tests to a submission:
|
||||
|
||||
* look at the original source
|
||||
* convert ANSI trigraphs to ASCII
|
||||
@@ -133,22 +154,23 @@ You should ask yourself if your submission remains obscure after it has been
|
||||
|
||||
Your submission need not pass all of the above tests. In certain
|
||||
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
|
||||
two such entries, we are more inclined to pick the submission that
|
||||
does something interesting when you run it.
|
||||
|
||||
We try to avoid limiting creativity in our rules. As such, we leave
|
||||
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
|
||||
is important. For this reason, we often award '_Best abuse of the
|
||||
rules_' or '_Worst abuse of the rules_' to an submission that illustrates this point
|
||||
in an ironic way.
|
||||
We try to avoid limiting creativity in our [rules](rules.html). As such, we
|
||||
leave 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 is important. For this reason, we
|
||||
often award '**Best abuse of the [rules](rules.html)**' or '**Worst abuse of the
|
||||
[rules](rules.html)**' or some variation to a submission that illustrates this
|
||||
point in an ironic way.
|
||||
|
||||
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_' or
|
||||
'_Best abuse of the rules_' and then plug the hole next year.
|
||||
We do realize that there are holes in the [rules](rules.html), and invite
|
||||
entries to attempt to exploit them. We will award '**Worst abuse of the
|
||||
[rules](rules.html)**' or '**Best abuse of the [rules](rules.html)**' or some
|
||||
variation and then plug the hole next year.
|
||||
|
||||
**`|`** When we do need to plug a hole in the [IOCCC rules](rules.html)
|
||||
or [IOCCC guidelines](guidelines.html), we will attempt to use a very
|
||||
@@ -157,7 +179,7 @@ small plug, if not smaller. Or, maybe not. :-)
|
||||
**`|`** There may be less than 2^7+1 reasons why these [IOCCC guidelines](guidelines.html) seem obfuscated.
|
||||
|
||||
Check out your program and be sure that it works. We sometimes make
|
||||
the effort to debug an submission that has a slight problem, particularly
|
||||
the effort to debug a submission that has a slight problem, particularly
|
||||
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.
|
||||
|
||||
@@ -173,7 +195,7 @@ will fully explain such cleverness in their submission's `remarks.md` file.
|
||||
|
||||
People who are considering to just use some complex mathematical
|
||||
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
|
||||
deobfuscate than subtly-obfuscated programs. Consider using
|
||||
@@ -197,10 +219,9 @@ are considered more portable.
|
||||
must satisfy the IOCCC size tool [Rule 2b](rules.html#rule2b).
|
||||
|
||||
**`|`** This IOCCC size tool imposes a 2nd limit on C code size (see [Rule 2a](rules.html#rule2a). To check your
|
||||
code against the 2nd limit of [Rule 2](rules.html#rule2), use the -i command line option.
|
||||
For example:
|
||||
code against the 2nd limit of [Rule 2](rules.html#rule2):
|
||||
|
||||
```
|
||||
``` <!---sh-->
|
||||
./iocccsize prog.c
|
||||
```
|
||||
|
||||
@@ -217,7 +238,7 @@ For example:
|
||||
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline,
|
||||
ASCII formfeed, and ASCII carriage return.
|
||||
|
||||
**`|`** When '`;`', '`{`' or '`}`' are within a C string, they may still not be
|
||||
**`|`** When '`;`', '`{`' or '`}`' are within a C string, they may still not be<br>
|
||||
**`|`** counted by the IOCCC size tool. This is a feature, not a bug!
|
||||
|
||||
In cases where the above summary and the algorithm implemented by
|
||||
@@ -272,16 +293,18 @@ by modifying the `CSTD` Makefile variable. For example, to use `c17` instead:
|
||||
```
|
||||
|
||||
**`|`** For compilers, such as clang, that have the `-Weverything` option,
|
||||
while you try wish it, **HOWEVER** see the [FAQ about clang -Weverything](../faq.html#weverything).
|
||||
Thus, we do **NOT** recommend that you put the use of `-Weverything` into
|
||||
your submission's `Makefile`.
|
||||
while you may wish to try it, you should look at [the FAQ about clang
|
||||
-Weverything](../faq.html#weverything). We do **NOT** recommend that you put
|
||||
the use of `-Weverything` into your submission's `Makefile` for the reasons
|
||||
cited there. This goes even if your version does not trigger a warning as some
|
||||
other version might.
|
||||
|
||||
**`|`** You may change the level of optimization and compiler debug level
|
||||
which your submission is compiled by modifying the `COPT` Makefile variable.
|
||||
For example, to compile without optimization:
|
||||
that your submission is compiled with, by modifying the `OPT` Makefile variable.
|
||||
For example, to compile without optimization and debug symbols:
|
||||
|
||||
``` <!---make-->
|
||||
COPT= -O0 -g3
|
||||
OPT= -O0 -g3
|
||||
```
|
||||
|
||||
**`|`** There is no real penalty for compiler warnings. Sometimes
|
||||
@@ -299,7 +322,9 @@ try something such as:
|
||||
**`|`** If you do add "`-Wno-some-thing`" to your Makefile,
|
||||
consider also adding `-Wno-unknown-warning-option` just in case the
|
||||
warning you use is not available in the compilers we use test your
|
||||
submission.
|
||||
submission. Observe, however, that some compilers **DO NOT** have that option so
|
||||
you might wish to note this in your **remarks.md** as it can be a command line
|
||||
error.
|
||||
|
||||
**`|`** If you need to define something on the compile line, use
|
||||
the `CDEFINE` Makefile variable. For example:
|
||||
@@ -323,11 +348,15 @@ use the `COTHER` Makefile variable. For example:
|
||||
COTHER= -fno-math-errno
|
||||
```
|
||||
|
||||
**NOTE**: We recommend using only "_magic_" flags that both **gcc**
|
||||
and **clang** support.
|
||||
**NOTE**: We recommend using "_magic_" flags **only if BOTH _gcc_
|
||||
and _clang_** support it.
|
||||
|
||||
|
||||
<div id="likes">
|
||||
<div id="dislikes">
|
||||
# OUR LIKES AND DISLIKES:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
**`|`** We **LIKE** entries that use an edited variant of the
|
||||
[example Makefile](https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example),
|
||||
@@ -543,8 +572,8 @@ We really **DISLIKE** entries that make blatant use of including
|
||||
large data files to get around the source code size limit.
|
||||
|
||||
We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC,
|
||||
if nothing else because that code is likely to exceed the source code
|
||||
size limit. This isn't to say that another highly compact and obfuscated
|
||||
if nothing else because that code is likely to exceed [the source code
|
||||
size limit](rules.html#rule2). This isn't to say that another highly compact and obfuscated
|
||||
replacement of `init` would not be an interesting submission.
|
||||
|
||||
Did we remember to indicate that programs that blatantly use
|
||||
@@ -779,8 +808,8 @@ The judges might not have a pet fish named Eric, so might want to state:
|
||||
> Attempting to factor anything else will cause the program to insult your pet fish Eric,<br>
|
||||
> or in the case that you lack such a pet, will insult the pet that you do not have.
|
||||
|
||||
When all other things are equal, an submission with fewer limitations will be judged
|
||||
better than an submission with lots of limitations. So you might want to code accordingly
|
||||
When all other things are equal, a submission with fewer limitations will be judged
|
||||
better than a submission with lots of limitations. So you might want to code accordingly
|
||||
and state:
|
||||
|
||||
> This submission attempts to a factor value of any size provided that the program is<br>
|
||||
@@ -804,7 +833,11 @@ and state:
|
||||
|
||||
|
||||
|
||||
<div id="rules_abuse">
|
||||
<div id="abusing_rules">
|
||||
# ABUSING THE RULES:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Legal abuse of the [IOCCC rules](rules.html) is somewhat encouraged. Legal rule abuse
|
||||
may involve, but is not limited to, doing things that are technically allowed by
|
||||
@@ -816,10 +849,10 @@ entries, regardless of if they receive an award, result in changes to
|
||||
the next year's [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html).
|
||||
|
||||
Legal abuse of the [IOCCC rules](rules.html) is NOT an invitation to violate the
|
||||
[IOCCC rules](rules.html). An submission that violates the [rules](rules.html) in the
|
||||
[IOCCC rules](rules.html). A submission that violates the [rules](rules.html) in the
|
||||
opinion of the judges, **WILL** be
|
||||
disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you
|
||||
have an submission that might otherwise be interesting, you might want to
|
||||
have a submission that might otherwise be interesting, you might want to
|
||||
submit two versions; one that does not abuse the [IOCCC rules](rules.html) and one that
|
||||
does.
|
||||
|
||||
@@ -834,7 +867,7 @@ submitting an alternate version that conforms to the
|
||||
|
||||
**`|`** If do bypass the `mkiocccentry(1)` warnings about [Rule
|
||||
2a](rules.html#rule2a) and/or about [Rule 2b](rules.html#rule2b)
|
||||
and submit an submission anyway, you **MUST** try to justify why the IOCCC
|
||||
and submit a submission anyway, you **MUST** try to justify why the IOCCC
|
||||
judges should not reject your submission due to a rule violation.
|
||||
|
||||
Abusing the web submission procedure tends to annoy us more
|
||||
@@ -864,7 +897,9 @@ This is one of the reasons why the [IOCCC rules](rules.html) and
|
||||
[IOCCC guidelines](guidelines.html) are written in obfuscated form.
|
||||
|
||||
|
||||
<div id="judging">
|
||||
# JUDGING PROCESS:
|
||||
</div>
|
||||
|
||||
Entries are judged by Leonid A. Broukhis and Landon Curt Noll.
|
||||
|
||||
@@ -899,7 +934,7 @@ known as the "Peter Honeyman is exempt" _guideline_.
|
||||
|
||||
BTW: None of the entries claiming to be from Peter Honeyman have ever
|
||||
won an award. So it is theoretically possible that Peter Honeyman
|
||||
did submit an submission in the past. In the past, Peter had denied
|
||||
did submit a submission in the past. In the past, Peter had denied
|
||||
submitting anything to the IOCCC. Perhaps those entries were
|
||||
submitted by one of his students?
|
||||
|
||||
@@ -921,14 +956,23 @@ files, and shred all related paper. By tradition, we do not even
|
||||
reveal the number of entries that we received.
|
||||
|
||||
During the judging process, a process that spans multiple sessions
|
||||
over a few weeks, post general updates from our [Mastodon
|
||||
account](https://fosstodon.org/@ioccc).
|
||||
over a few weeks, we post general updates from our [Mastodon
|
||||
account](https://fosstodon.org/@ioccc). Make sure you reload the feed every so
|
||||
often as unless you are mentioned you will not get a push notification.
|
||||
|
||||
<div id="rounds">
|
||||
## JUDGING ROUNDS:
|
||||
</div>
|
||||
|
||||
Judging consists of a number of elimination rounds. During a round,
|
||||
the collection of entries are divided into two roughly equal piles;
|
||||
the pile that advances on to the next round, and the pile that does
|
||||
not. We also re-examine the entries that were eliminated in the
|
||||
previous round. Thus, an submission gets at least two readings.
|
||||
previous round. Thus, a submission gets at least two readings.
|
||||
|
||||
<div id="readings">
|
||||
## JUDGING READINGS:
|
||||
</div>
|
||||
|
||||
A reading consists of a number of actions:
|
||||
|
||||
@@ -951,11 +995,11 @@ miscellaneous tests on the source and binary.
|
||||
**`|`** This is the very _guideline_ that goes, BING!
|
||||
|
||||
Until we reduce the stack of entries down to about 25 entries, entries
|
||||
are judged on an individual basis. An submission is set aside because it
|
||||
are judged on an individual basis. A submission is set aside because it
|
||||
does not, in our opinion, meet the standard established by the round.
|
||||
When the number of entries thins to about 25 entries, we begin to form
|
||||
award categories. Entries begin to compete with each other for awards.
|
||||
An submission will often compete in several categories.
|
||||
A submission will often compete in several categories.
|
||||
|
||||
The actual award category list will vary depending on the types of entries
|
||||
we receive. A typical category list might be:
|
||||
@@ -988,7 +1032,7 @@ less clear cut.
|
||||
|
||||
Sometimes a final round submission is good enough to win, but is beat out
|
||||
by a similar, but slightly better submission. For this reason, it is
|
||||
sometimes worthwhile to re-enter an improved version of an submission
|
||||
sometimes worthwhile to re-enter an improved version of a submission
|
||||
that failed to win in a previous year. This assumes, of course,
|
||||
that the submission is worth improving in the first place!
|
||||
|
||||
@@ -1023,7 +1067,7 @@ or that stretches the content rules that while legal, is
|
||||
nevertheless goes against the intent of the rules.
|
||||
|
||||
In the end, we traditionally pick one submission as 'best'. Sometimes such
|
||||
an submission simply far exceeds any of the other entries. More often, the
|
||||
a submission simply far exceeds any of the other entries. More often, the
|
||||
'best' is picked because it does well in a number of categories.
|
||||
|
||||
In years past, we renamed the winning submission from prog.c to a
|
||||
@@ -1031,7 +1075,9 @@ name related to the submitter(s) names. This is no longer done.
|
||||
Winning source is called prog.c A compiled binary is called prog.
|
||||
|
||||
|
||||
<div id="announcements">
|
||||
# ANNOUNCEMENT OF WINNERS:
|
||||
</div>
|
||||
|
||||
The judges will toot initial announcement of who won, the name
|
||||
of their award, and a very brief description of the winning submission
|
||||
@@ -1040,9 +1086,12 @@ 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.
|
||||
|
||||
|
||||
<div id="winners">
|
||||
## How the new IOCCC winners will be announced
|
||||
</div>
|
||||
|
||||
**`|`** The [Current status of the IOCCC](../status.html) will change from **judging** to **closed** .
|
||||
**`|`** The [Current status of the IOCCC](../status.html) will change from
|
||||
**[judging](../status.html#judging)** to **[closed](../status.html#closed)** .
|
||||
|
||||
**`|`** The **contest_status** in the [status.json](../status.json) file will change from **judging** to **closed** as well.
|
||||
|
||||
@@ -1055,28 +1104,37 @@ you are mentioned you will not get a notification.
|
||||
**`|`** The [IOCCC news](../news.html) will also contain an announcement of the winners.
|
||||
|
||||
|
||||
<div id="mastodon">
|
||||
## An important update to how winners are announced
|
||||
</div>
|
||||
|
||||
The IOCCC no longer uses twitter. IOCCC entries will be announced
|
||||
by a git commit to the [IOCCC entries
|
||||
repo](https://github.com/ioccc-src/winner) that, in turn, updates the [official IOCCC website](https://www.ioccc.org/index.html).
|
||||
**`|`** The IOCCC no longer uses twitter. IOCCC entries will be announced by a
|
||||
git commit to the [IOCCC entries repo](https://github.com/ioccc-src/winner)
|
||||
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](https://fosstodon.org/@ioccc).
|
||||
**`|`** In addition a note is posted to the [IOCCC Mastodon account](https://fosstodon.org/@ioccc).
|
||||
|
||||
|
||||
<div id="entries">
|
||||
## Back to announcement of winners
|
||||
</div>
|
||||
|
||||
**`|`** It is pointless to ask the [IOCCC judges](../judges.html) how many entries we receive. See [How many entries do the judges receive for a given IOCCC](../faq.html#how_many).
|
||||
**`|`** It is pointless to ask the [IOCCC judges](../judges.html) how many
|
||||
submissions we receive. See [How many submissions do the judges receive for a given IOCCC](../faq.html#how_many).
|
||||
|
||||
Often, winning entries are published in selected magazines from around
|
||||
the world. Winners have appeared in books ("The New Hackers Dictionary")
|
||||
and on T-Shirts. More than one winner has been turned in a tattoo!
|
||||
and on T-Shirts. More than one winner has been turned into a tattoo!
|
||||
|
||||
Last, but not least, winners receive international fame and flames! :-)
|
||||
|
||||
|
||||
<div id="more-information">
|
||||
<div id="information">
|
||||
# FOR MORE INFORMATION:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
||||
|
||||
@@ -1088,13 +1146,13 @@ Last, but not least, winners receive international fame and flames! :-)
|
||||
|
||||
**`|`** 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. 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.
|
||||
**`|`** For the updates and breaking [IOCCC news](../news.html), you are encouraged to follow
|
||||
the [IOCCC on Mastodon](https://fosstodon.org/@ioccc). See our
|
||||
[FAQ on Mastodon](../faq.html#try_mastodon) for more information. Please be aware that
|
||||
unless you are mentioned you most likely will **NOT** get a notification
|
||||
so you should make sure to check the page.
|
||||
|
||||
**`|`** Check out the [Official IOCCC winner website](https://www.ioccc.org/index.html) in general.
|
||||
**`|`** Check out the [Official IOCCC website](https://www.ioccc.org/index.html) in general.
|
||||
|
||||
Leonid A. Broukhis<br>
|
||||
chongo (Landon Curt Noll) /\\cc/\\
|
||||
|
||||
Reference in new issue
Block a user