From 03b4248dd2a97018ef216d99bf86e47c6250e068 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Thu, 23 Jan 2025 11:59:16 -0800 Subject: [PATCH 1/2] Many fixes and other updates to guidelines This includes typos, fixing terms (according to the new terminology used by the IOCCC) and various other types of fixes. Although I have gone through the entire file more does need to be done to make sure it all reads okay and that all links are correct. --- next/guidelines.html | 499 ++++++++++++++++++++++++------------------ next/guidelines.md | 500 +++++++++++++++++++++++++------------------ 2 files changed, 572 insertions(+), 427 deletions(-) diff --git a/next/guidelines.html b/next/guidelines.html index dbb8d1a335..c0032735ea 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -492,9 +492,9 @@
You should read the current IOCCC rules, prior to submitting -entries. The rules are typically published along with the IOCCC -guidelines..
+You SHOULD read the CURRENT IOCCC rules, prior to submitting +code to the contest. The rules are typically published along with +the IOCCC guidelines.
Jump to: top
mkiocccentry -d test_work prog.c Makefile remarks.md
+
+
- mkiocccentry -d test_work prog.c Makefile remarks.md
+ iocccsize prog.c
+++The size tool counts most C reserved words (keyword, secondary, and selected +preprocessor keywords) as 1. The size tool counts all other octets as 1 +excluding ASCII whitespace, and excluding any ‘
+;
’, ‘{
’ or ‘}
’ followed by +ASCII whitespace, and excluding any ‘;
’, ‘{
’ or ‘}
’ octet immediately +before the end of file.
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, +ASCII formfeed, and ASCII carriage return.
+In cases where the above summary and the algorithm implemented by +the IOCCC size tool source code conflict, the algorithm implemented +by the IOCCC size tool source code is preferred by the judges.
+ + +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
+to get around the size limits of Rule 2.
Yes Virginia, that is a hint!
Jump to: top
You are encouraged to examine the winners of previous contests.
+You are encouraged to examine the winners of previous contests.
Keep in mind that rules change from year to year, so some winning entries might not be valid submissions this year; what was unique and novel one year might be ‘old’ the next year.
@@ -664,7 +725,9 @@#include
lines#define
and #include
linesWe try to avoid limiting creativity in our rules. As such, we leave the contest open for creative rule interpretation. As in real life programming, interpreting a @@ -688,6 +751,25 @@
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’ or some @@ -701,17 +783,19 @@
Check out your program and be sure that it works. We sometimes make -the effort to debug a submission that has a slight problem, particularly +
+of the best submissions fall down because they didn’t work. +When programs use VTxxx/ANSI sequences, they should NOT be limited to a -specific terminal brand. Those programs that work in a standard xterm -are considered more portable.
- - - - - - iocccsize prog.c
-The IOCCC size tool algorithm may be summarized as follows:
---The size tool counts most C reserved words (keyword, secondary, and selected -preprocessor keywords) as 1. The size tool counts all other octets as 1 -excluding ASCII whitespace, and excluding any ‘
-;
’, ‘{
’ or ‘}
’ followed by -ASCII whitespace, and excluding any ‘;
’, ‘{
’ or ‘}
’ octet immediately -before the end of file.
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, -ASCII formfeed, and ASCII carriage return.
- -In cases where the above summary and the algorithm implemented by -the IOCCC size tool source code conflict, the algorithm implemented -by the IOCCC size tool source code is preferred by the judges.
- -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
-to get around the size limits of Rule 2.
Yes Virginia, that is a hint!
-Jump to: top
mkiocccentry(1)
, .info.json
and
.auth.json
). Additionally, three of the files in the limit MUST be
specific file(name)s: the OPTIONAL submission files, which are prog.alt.c
,
-try.sh
and try.alt.sh
, or else they WILL count as an extra file.
+try.sh
and try.alt.sh
, or else they WILL count as an extra file. Of
+course, if you use the optional filenames without the files being their
+intended, that would be an abuse of rules.
+For more details on the optional files, see the
+FAQ on the “try.sh script system”
+and the
+FAQ on “alt code”.
See Rule 17 and in particular the part about the maximum +See Rule 17 and in particular the part about the maximum number of files. If you do not follow these points, you -are at a great risk of violating Rule 17!
-For more details, see the -FAQ on the “try.sh script system”, -the -FAQ on “.auth.json”, -the -FAQ on “.info.json”,
+are at a great risk of violating Rule 17! +mkiocccentry
mkiocccentry
mkiocccentry(1)
tool and below for more details.
IMPORTANT NOTE: make CERTAIN you have the most recent version of the
+IMPORTANT NOTE: make CERTAIN you have the most recent version of the
mkiocccentry
toolkit! See the
-FAQ on “obtaining the mkiocccentry toolkit”.
mkiocccentry
mkiocccentry
encounters an error the program will exit and the xz
compressed tarball will not be formed. For instance, if chkentry(1)
(see
below) fails to validate the .auth.json
or .info.json
-JSON files that mkiocccentry(1)
creates,
+JSON files (see below) that mkiocccentry(1)
creates,
it is an error and possibly a bug that you should report as a bug at the
mkiocccentry bug report
page.
@@ -853,11 +887,11 @@ mkiocccentry
mkiocccentry(1)
synopsisiocccsize
Jump to: top
chkentry
txzchk
fnamchk
fnamchk
-Weverything
optionmkiocccentry(1)
tool.
clobber:
${RM} -f foo bar baz
and NOT something like this:
- clobber:
+ # do NOT do this!
+ clobber:
-git clean -f
OUR LIKES AND DISLIKES:
Doing masses of #define
s to obscure the source has become ‘old’. We
tend to ‘see thru’ masses of #define
s due to our pre-processor tests
@@ -1470,7 +1507,7 @@
OUR LIKES AND DISLIKES:
}
On 2012 July 20, the judges rescinded the encouragement of
nested functions. Such constructions, while interesting and sometimes
-amusing, will have to wait until they required by a C standard that are
+amusing, will have to wait until they are required by a C standard that are
actually implemented in BOTH gcc
AND clang
.
The judges, as a group, have a history giving wide degree of latitude -to reasonable entries. And recently they have had as much longitudinal -variation as it is possible to have on Earth. :-)
+We prefer programs that are portable across a wide variety of Unix-like @@ -1654,13 +1695,15 @@
-All generalizations are false, including this one. – Mark Twain
Given two versions of the same program, one that is a compact blob +
+rules for details (in particular, Rule 9). +We suggest that you avoid trying for the ‘smallest self-replicating’ source. The smallest, a zero byte entry, won in 1994.
@@ -1668,7 +1711,7 @@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: main;
X client entries should avoid using X related libraries and software that are not in wide spread use.
+This is the only guideline that contains the word fizzbin.
We believe that Mark Twain’s quote:
Get your facts first, then you can distort them as you please.
… is a good motto for those writing code for the IOCCC.
-The IOCCC size tool source is not an original work, unless you are Anthony C + +violating Rule 7. +
While programs that only run in a specific word size are OK, if you have to pick, choose a 64-bit word size.
2305567963945518424753102147331756070
. Attempting to factor values outside
that range will produce unpredictable results.
-Moreover the might try to also factor 3.5 or 0x7, or Fred, so you want to might state:
+This submission factors integers between 1 and
2305567963945518424753102147331756070
. Attempting to factor anything else @@ -1971,7 +2024,7 @@OUR LIKES AND DISLIKES:
ABUSING THE RULES:
If you do bypass themkiocccentry(1)
warnings about Rule 2a and/or about Rule 2b and submit a submission anyway, you MUST try to justify why the IOCCC -judges should not reject your submission due to a rule violation. +judges should not reject your submission due to a rule +violation, and you would be wise to do this towards the top of yourremarks.md
+file.Abusing the web submission procedure tends to annoy us more than amuse us. Spend your creative energy on content of your submission rather than on the submission process itself.
-We are often asked why the contest IOCCC rules and +
-At the risk of stating the obvious, this contest is a parody of the software +the IOCCC rules and IOCCC guidelines. +
+ +IOCCC guidelines are written in obfuscated form. +Jump to: top
JUDGING PROCESS:
Entries are judged by Leonid A. Broukhis and Landon Curt Noll.
-Each submission submitted is given a random id number and subdirectory. The +
+remarks.md
,.info.json
,.auth.json
as well as any data files that you +submit, are all placed under their own directory and stored and judged from this +directory. +Any information about the authors is not read by the judges until 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 @@ -2065,9 +2127,11 @@
JUDGING PROCESS:
The above process helps keep us biased for/against any one particular individual. Therefore you MUST refrain from putting any information that reveals your identity in your submission.
-Now some people point out that coding style might reveal the information -about the others. However we consider this to be simply circumstantial -and outside the scope of the above paragraph.
+Some people, in the past, have attempted to obfuscate their identity by including comments of famous Internet personalities such as Peter Honeyman. The judges are on to this trick @@ -2120,9 +2184,11 @@
JUDGING READINGS:
A reading consists of a number of actions:
- +
- -
- briefly looking any any supplied data files
- passing the source thru the C pre-processor skipping over any
#include
d files- performing a number of C beautify/cleanup edits on the source
@@ -2153,7 +2219,11 @@JUDGING READINGS:
- best game that is obfuscated
- most creatively obfuscated program
- most deceptive C code (code with deceptive comments and source code)
-- best X program (see OUR LIKES AND DISLIKES)
+- best abuse of ISO C or ANSI C standard (see above about compilers)
- best abuse of the C preprocessor
- worst/best abuse of the rules (or some variation)
@@ -2202,7 +2272,7 @@JUDGING READINGS:
More often than not, we select a small submission (usually one line) and a strange/creative layout submission. We sometimes also select a @@ -2224,7 +2294,7 @@
ANNOUNCEMENT OF WINNERS:
Back to announcement of winners
submissions we receive. See How many submissions do the judges receive for a given IOCCC?. -Often, winning entries are published in selected magazines from around the +
+‘Obfuscated C and Other Mysteries
’, ‘Pointers On C
’, others) and on t-shirts +(sometimes by the author(s) themselves). More than one winner has been turned +into a tattoo! +Last, but not least, winners receive international fame and flames! :-)
Jump to: top
diff --git a/next/guidelines.md b/next/guidelines.md index be5ace0285..d561a671fc 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -90,9 +90,9 @@ about them. The [IOCCC guidelines](guidelines.html) should be viewed as 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](rules.html) are typically published along with the [IOCCC -guidelines](guidelines.html).. +You **SHOULD read the CURRENT [IOCCC rules](rules.html)**, _prior_ to submitting +code to the contest. The [rules](rules.html) are typically published along with +the [IOCCC guidelines](guidelines.html). Jump to: [top](#) @@ -119,7 +119,7 @@ This contest will enter the **[judging](../status.html#judging)** state on **202-You are encouraged to examine the [winners of previous contests](../years.html). +You are **encouraged** to examine the [winners of previous contests](../years.html). 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 @@ -305,7 +381,7 @@ 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 +* @@ -145,145 +145,221 @@ You may [register](register.html) while the contest is either + + + + + + + + +``` + mkiocccentry -d test_work prog.c Makefile remarks.md +``` + + + + + + - - ``` - mkiocccentry -d test_work prog.c Makefile remarks.md + iocccsize prog.c ``` +> The size tool counts most C reserved words (keyword, secondary, and selected +preprocessor keywords) as 1. The size tool counts all other octets as 1 +excluding ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' followed by +ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' octet immediately +before the end of file. + +ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, +ASCII formfeed, and ASCII carriage return. + +In cases where the above summary and the algorithm implemented by +the IOCCC size tool source code conflict, the algorithm implemented +by the IOCCC size tool source code is preferred by the [judges](../judges.html). + + + + + +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 +to get around the size limits of [Rule 2](rules.html#rule2). + +Yes Virginia, **that is a hint**! + Jump to: [top](#) @@ -295,7 +371,7 @@ Jump to: [top](#) * C pre-process the source ignoring `#include` lines * C pre-process the source ignoring `#define` _and_ `#include` lines * run it through a C beautifier @@ -322,7 +398,7 @@ cases, a test is not important. Entries that compete for the '**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. +does something interesting when it's executed. 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 @@ -332,6 +408,28 @@ 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](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 @@ -348,21 +446,24 @@ There may be fewer than 2^7+1 reasons why these [IOCCC guidelines](guidelines.html) seem obfuscated. + +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, @@ -374,86 +475,16 @@ misleading or subtle tricks layered on top of or under an appropriate level of obfuscation. A clean looking program with misleading comments and variable names might be a good start. -When programs use VTxxx/ANSI sequences, they should NOT be limited to a -specific terminal brand. Those programs that work in a standard xterm -are considered more portable. - - - - - - - - - - - - - -``` - iocccsize prog.c -``` - -The IOCCC size tool algorithm may be summarized as follows: - -> The size tool counts most C reserved words (keyword, secondary, and selected -preprocessor keywords) as 1. The size tool counts all other octets as 1 -excluding ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' followed by -ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' octet immediately -before the end of file. - -ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, -ASCII formfeed, and ASCII carriage return. - - - -In cases where the above summary and the algorithm implemented by -the IOCCC size tool source code conflict, the algorithm implemented -by the IOCCC size tool source code is preferred by the [judges](../judges.html). - - - -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 -to get around the size limits of [Rule 2](rules.html#rule2). - -Yes Virginia, **that is a hint**! - Jump to: [top](#)-# Including extra files +# Including optional and extra files+@@ -507,6 +543,7 @@ for the `mkiocccentry(1)` tool and below for more details. **IMPORTANT NOTE**: make **CERTAIN** you have the most recent version of the `mkiocccentry` toolkit! See the FAQ on "[obtaining the mkiocccentry toolkit](../faq.html#obtaining_mkiocccentry)". +- Jump to: [top](#)@@ -575,12 +611,14 @@ overwrites the file).@@ -843,7 +882,7 @@ needs. @@ -1026,7 +1065,7 @@ about this, though it might be worth pointing out. @@ -1177,11 +1216,11 @@ the `mkiocccentry(1)` tool. Doing masses of `#define`s to obscure the source has become 'old'. We @@ -1326,7 +1365,7 @@ of nested functions such as: On 2012 July 20, the [judges](../judges.html) rescinded the encouragement of nested functions. Such constructions, while interesting and sometimes -amusing, will have to wait until they required by a C standard that are +amusing, will have to wait until they are required by a C standard that are actually implemented in **BOTH** `gcc` **AND** `clang`. + @@ -1533,6 +1576,7 @@ We think we did. :-) > All generalizations are false, including this one. -- **Mark Twain** + We suggest that you avoid trying for the '**smallest self-replicating**' source. The smallest, a [zero byte entry](../1994/smr/index.html), won in @@ -1550,7 +1595,7 @@ better be the smallest such program or they risk being rejected because they do not work as documented. 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: ``` main; @@ -1598,6 +1643,13 @@ source program (one that actually works) to display audio/visual data. X client entries should avoid using X related libraries and software that are not in wide spread use. + + This is the only _guideline_ that contains the word [fizzbin](https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin). @@ -1728,7 +1780,7 @@ into creating a dense blob. Such are the trade-offs that obfuscators face! We believe that Mark Twain's quote: @@ -1737,16 +1789,18 @@ We believe that Mark Twain's quote: ... is a good motto for those writing code for the IOCCC. + @@ -1763,11 +1817,11 @@ nor nor any of the other [jparse tools](https://github.com/ioccc-src/mkiocccentry/blob/master/jparse) (see the [jparse repo](https://github.com/xexyl/jparse/)), nor the [fnamchk tool -source](https://github.com/ioccc-src/mkiocccentry/blob/master/test_ioccc/fnamchk.c) +source](https://github.com/ioccc-src/mkiocccentry/blob/master/test_ioccc/fnamchk.c), are original works, unless you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson) or [Landon Curt Noll](http://www.isthe.com/chongo/index.html), in which case they -are original! :-) Submitting source that uses the code of these tools or +are original! :-) Submitting source code that uses the code of any of these tools or library, unless you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson) or [Landon Curt Noll](http://www.isthe.com/chongo/index.html), might run the risk of violating @@ -1776,7 +1830,7 @@ Noll](http://www.isthe.com/chongo/index.html), might run the risk of violating @@ -1811,7 +1865,7 @@ While programs that only run in a specific word size are OK, if you have to pick, choose a 64-bit word size. > This submission factors integers between 1 and `2305567963945518424753102147331756070`. Attempting to factor anything else @@ -1905,7 +1961,7 @@ rendering your markdown content. @@ -1968,13 +2024,16 @@ submitting an alternate version that conforms to the If you do bypass the `mkiocccentry(1)` warnings about [Rule 2a](rules.html#rule2a) and/or about [Rule 2b](rules.html#rule2b) and submit a submission anyway, you **MUST** try to justify why the IOCCC -[judges](../judges.html) should not reject your submission due to a rule violation. +[judges](../judges.html) should not reject your submission due to a rule +violation, and you would be wise to do this towards the top of your `remarks.md` +file. Abusing the web submission procedure tends to annoy us more than amuse us. Spend your creative energy on content of your submission rather than on the submission process itself. + + Jump to: [top](#) @@ -2005,10 +2067,13 @@ Jump to: [top](#) Entries are judged by Leonid A. Broukhis and Landon Curt Noll. + Any information about the authors is not read by the [judges](../judges.html) until the judging process is complete, and then only from entries that have @@ -2019,9 +2084,11 @@ The above process helps keep us biased for/against any one particular individual. Therefore you **MUST** refrain from putting any information that reveals your identity in your submission. -Now some people point out that coding style might reveal the information -about the others. However we consider this to be simply circumstantial -and outside the scope of the above paragraph. + Some people, in the past, have attempted to obfuscate their identity by including comments of famous Internet personalities such as [Peter @@ -2087,8 +2154,8 @@ Jump to: [top](#) A reading consists of a number of actions: -* -* briefly looking any any supplied data files +* +* * passing the source thru the C pre-processor skipping over any `#include`d files * performing a number of C beautify/cleanup edits on the source @@ -2122,7 +2189,9 @@ we receive. A typical category list might be: * **best game that is obfuscated** * **most creatively obfuscated program** * **most deceptive C code** (code with deceptive comments and source code) -* **best X program** (see [OUR LIKES AND DISLIKES](#likes)) +* * **best abuse of ISO C or ANSI C standard** (see above about compilers) * **best abuse of the C preprocessor** * **worst/best abuse of the rules** (or some variation) @@ -2178,7 +2247,7 @@ It has been shown that receiving **anonymous** gifts provides the More often than not, we select a small submission (usually one line) and a @@ -2207,7 +2276,7 @@ Jump to: [top](#) @@ -2282,10 +2351,13 @@ submissions we receive. See [How many submissions do the judges receive for a given IOCCC?](../faq.html#how_many). + Last, but not least, [winners](../authors.html) receive international fame and flames! :-) From 7ef8df9e490f7518d1389227a36614f640f43b94 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Thu, 23 Jan 2025 12:13:25 -0800 Subject: [PATCH 2/2] Typo fix in guidelines link --- next/guidelines.html | 2 +- next/guidelines.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/next/guidelines.html b/next/guidelines.html index c0032735ea..58336adc70 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -917,7 +917,7 @@-# mkiocccentry tools +# Other mkiocccentry toolsJump to: [top](#) @@ -726,7 +765,7 @@ FAQ on "[report mkiocccentry bugs](../faq.html#mkiocccentry_bugs)". @@ -790,7 +829,7 @@ FAQ on "[report mkiocccentry bugs](../faq.html#mkiocccentry_bugs)".See the FAQ on “mkiocccentry” for how to use this tool and the -FAQ on “finer details of mkiocccentry” +FAQ on “finer details of mkiocccentry” for even more information.
mkiocccentry(1)
synopsisdiff --git a/next/guidelines.md b/next/guidelines.md index d561a671fc..9bee097ea1 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -612,7 +612,7 @@ overwrites the file). See the FAQ on "[mkiocccentry](../faq.html#mkiocccentry)" for how to use this tool and the -FAQ on "[finer details of mkiocccentry](../faq.htmlmkiocccentry_details)" +FAQ on "[finer details of mkiocccentry](../faq.html#mkiocccentry_details)" for even more information.