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 | 539 ++++++++++++++++++++++++------------------- next/guidelines.md | 532 ++++++++++++++++++++++++------------------ 2 files changed, 608 insertions(+), 463 deletions(-) diff --git a/next/guidelines.html b/next/guidelines.html index dbb8d1a33..c0032735e 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -492,9 +492,9 @@ about them. The IOCCC guidelines should be viewed guidelines but remain within the rules are allowed. Even so, you are safer if you remain within the IOCCC guidelines.
-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
Jump to: top
-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.
-A submission is usually examined in a number of ways. We typically apply -a number of tests to a submission:
-#include lines#define and #include linesYou should consider how your submission looks in each of the above tests. -You should ask yourself if your submission remains obscure after it has been -‘cleaned up’ by the C pre-processor and a C beautifier.
-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 -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 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’ 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’ or some -variation and then plug the hole next year.
-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 -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.
-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.
-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 -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 @@ -769,6 +697,10 @@ counted by the IOCCC size tool. This is a feature, not a bug! the IOCCC size tool source code conflict, the algorithm implemented by the IOCCC size tool source code is preferred by the judges.
+Yes Virginia, that is a hint!
+Jump to: top
+++++HINTS AND SUGGESTIONS:
+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.
+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
+- +
- C pre-process the source ignoring
+#includelines- C pre-process the source ignoring
+#defineand#includelines- run it through a C beautifier
+- examine the algorithm
+- compile it (with flags to enable all warnings)
+- execute it
+You should consider how your submission looks in each of the above tests. +You should ask yourself if your submission remains obscure after it has been +‘cleaned up’ by the C pre-processor and a C beautifier.
+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 +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 it’s executed.
+We 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 +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’ 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’ or some +variation and then plug the hole next year.
+ + + + +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.
+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 +appropriate level of obfuscation. A clean looking program with +misleading comments and variable names might be a good start.
+Jump to: top
-Including extra files
+Including optional and extra files
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! +
mkiocccentryIMPORTANT NOTE: make CERTAIN you have the most recent version of the +IMPORTANT NOTE: make CERTAIN you have the most recent version of the
+FAQ on “obtaining the mkiocccentry toolkit”. +mkiocccentrytoolkit! See the -FAQ on “obtaining the mkiocccentry toolkit”.-mkiocccentry tools
+Other mkiocccentry tools
iocccsizeJump to: top
@@ -1003,7 +1040,7 @@ page. PLEASE run the FAQ on “report mkiocccentry bugs”. @@ -1055,7 +1092,7 @@ FAQ on “report mkiocccentry bugs
chkentry
Makefile to suit your obfuscation
needs.
@@ -1247,7 +1284,7 @@ obfuscated code and even in some non-obfuscated code, and you should not worry
about this, though it might be worth pointing out.
clobber:
${RM} -f foo bar baz
and NOT something like this:
- clobber:
+ # do NOT do this!
+ clobber:
-git clean -f
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
@@ -1470,7 +1507,7 @@ of nested functions such as:
}
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 @@ We think we did. :-)
-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 @@ source. The smallest, a zero byte entry, wo 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;
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. +
@@ -1887,7 +1938,7 @@ as obfuscated as the lexer/parser ofWhile 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 @@ rendering your markdown content.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.jsonas 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 @@ do not win, we do not know who did not win.
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 @@ previous round. Thus, a submission gets at least two 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
#included files- performing a number of C beautify/cleanup edits on the source
@@ -2153,7 +2219,11 @@ 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)
+- 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 @@ It has been shown that receiving anonymous gifts provides theMore 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 @@ Winning source is called
prog.c. A compiled binary is called-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 be5ace028..d561a671f 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 @@ -145,103 +145,66 @@ You may [register](register.html) while the contest is either + + + - - - - - - - - - - - - - - - - - - @@ -251,11 +214,6 @@ 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). - - + + + + + + + + + + + + + + + + + + + + + + + + + +``` + 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](#)-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 +* * 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 + - - - - - - - - - - - -``` - 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 c0032735e..58336adc7 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -917,7 +917,7 @@ overwrites the file). 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 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)".diff --git a/next/guidelines.md b/next/guidelines.md index d561a671f..9bee097ea 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.