A review of the IOCCC rules and IOCCC guidelines, @xexyl, on 2025 March 4 would be very much welcome.
1364 lines
55 KiB
HTML
1364 lines
55 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/top.default.html -->
|
||
<!-- START: this line starts content from: inc/head.default.html -->
|
||
|
||
<head>
|
||
<link rel="stylesheet" href="../ioccc.css">
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>The International Obfuscated C Code Contest</title>
|
||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||
<meta name="description" content="IOCCC Rules">
|
||
<meta name="keywords" content="IOCCC, rules, Rules">
|
||
</head>
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- END: this line ends content from: inc/head.default.html -->
|
||
|
||
<!-- -->
|
||
<!-- This web page was formed via the tool: bin/gen-top-html.sh -->
|
||
<!-- The content of main section of this web page came from: next/rules.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: next/rules.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: next/rules.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: next/rules.md !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content from: inc/body.default.html -->
|
||
|
||
<body>
|
||
|
||
<!-- END: this line ends content from: inc/body.default.html -->
|
||
<!-- START: this line starts content from: inc/topbar.default.html -->
|
||
|
||
<div class="theader">
|
||
<nav class="topbar">
|
||
<div class="container">
|
||
<div class="logo">
|
||
<a href="../index.html" class="logo-link">
|
||
IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="topbar-items">
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Entries
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../years.html" class="sub-item-link">
|
||
Winning entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../authors.html" class="sub-item-link">
|
||
Winning authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../location.html" class="sub-item-link">
|
||
Location of authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../faq.html#fix_author" class="sub-item-link">
|
||
Updating author info
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Status
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../news.html" class="sub-item-link">
|
||
News
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../status.html" class="sub-item-link">
|
||
Contest status
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../next/index.html" class="sub-item-link">
|
||
Rules and guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../markdown.html" class="sub-item-link">
|
||
Markdown guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../SECURITY.html" class="sub-item-link">
|
||
Security policy
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
FAQ
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../faq.html" class="sub-item-link">
|
||
Frequently Asked Questions
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../quick-start.html#enter" class="sub-item-link">
|
||
Enter the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../faq.html#compiling" class="sub-item-link">
|
||
Compiling entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../faq.html#running_entries" class="sub-item-link">
|
||
Running entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../faq.html#help" class="sub-item-link">
|
||
How to help
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
About
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../index.html" class="sub-item-link">
|
||
Home page
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../about.html" class="sub-item-link">
|
||
About the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../judges.html" class="sub-item-link">
|
||
The Judges
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../thanks-for-help.html" class="sub-item-link">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../contact.html" class="sub-item-link">
|
||
Contact us
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="header-mobile-menu">
|
||
<noscript>
|
||
<a href="../nojs-menu.html" class="topbar-js-label">
|
||
Please Enable JavaScript
|
||
</a>
|
||
</noscript>
|
||
|
||
<button id="header-open-menu-button" class="topbar-mobile-menu">
|
||
<img
|
||
src="../png/hamburger-icon-open.png"
|
||
alt="hamburger style menu icon - open state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<button id="header-close-menu-button" class="hide-content">
|
||
<img
|
||
src="../png/hamburger-icon-closed.png"
|
||
alt="hamburger style menu icon - closed state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<div id="mobile-menu-panel" class="hide-content">
|
||
<div class="mobile-menu-container">
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
Entries
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../years.html">
|
||
Winning entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../authors.html">
|
||
Winning authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../location.html">
|
||
Location of authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../bugs.html">
|
||
Bugs and (mis)features
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../faq.html#fix_an_entry">
|
||
Fixing entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../faq.html#fix_author">
|
||
Updating author info
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../thanks-for-help.html">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
|
||
<div class="mobile-menu-item">
|
||
Status
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../news.html">
|
||
News
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../next/index.html">
|
||
Rules and guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../markdown.html">
|
||
Markdown guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../SECURITY.html">
|
||
Security policy
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
FAQ
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../faq.html">
|
||
Frequently Asked Questions
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../quick-start.html#enter">
|
||
Enter the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../faq.html#compiling">
|
||
Compiling entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../faq.html#running_entries">
|
||
Running entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../faq.html#help">
|
||
How to help
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
About
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../index.html">
|
||
Home page
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../about.html">
|
||
About the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../judges.html">
|
||
The Judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../contact.html">
|
||
Contact us
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
|
||
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
|
||
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
|
||
|
||
headerOpenMenuButton.addEventListener("click", () => {
|
||
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.add("hide-content");
|
||
|
||
headerCloseMenuButton.classList.remove("hide-content");
|
||
headerCloseMenuButton.classList.add("topbar-mobile-menu");
|
||
|
||
mobileMenuPanel.classList.remove("hide-content");
|
||
mobileMenuPanel.classList.add("topbar-mobile-panel");
|
||
});
|
||
|
||
headerCloseMenuButton.addEventListener("click", () => {
|
||
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerCloseMenuButton.classList.add("hide-content");
|
||
|
||
mobileMenuPanel.classList.add("hide-content");
|
||
mobileMenuPanel.classList.remove("topbar-mobile-panel");
|
||
|
||
headerOpenMenuButton.classList.add("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.remove("hide-content");
|
||
});
|
||
</script>
|
||
|
||
<!-- END: this line ends content from: inc/topbar.default.html -->
|
||
<!-- START: this line starts content from: inc/header.default.html -->
|
||
|
||
<div class="header">
|
||
<a href="../2011/zucker/index.html">
|
||
<img src="../png/ioccc.png"
|
||
alt="IOCCC image by Matt Zucker"
|
||
width=300
|
||
height=110>
|
||
</a>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>IOCCC Rules</h2>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.empty.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2Fnext%2Frules.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.empty.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<div class="content" id="content">
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
|
||
<!-- BEFORE: 1st line of markdown file: next/rules.md -->
|
||
<!-- START: this line starts content from: inc/rules.pending.hdr -->
|
||
<h1 id="warning-these-rules-are-tentative">WARNING: These rules are TENTATIVE</h1>
|
||
<p>One might think of them as a <strong>beta</strong> release for the IOCCC
|
||
that is about to open.</p>
|
||
<p><strong>IMPORTANT</strong>: All <strong>tentative</strong> <a href="rules.html">rules</a> and <a href="guidelines.html">guidelines</a>
|
||
are subject to change by the <a href="../judges.html">IOCCC judges</a> at any time.
|
||
See both the <a href="../news.html">IOCCC news</a> and the <a href="https://fosstodon.org/@ioccc">IOCCC
|
||
Mastodon</a> feed as <em>sometimes</em> the
|
||
<a href="../judges.html">IOCCC judges</a> <em>mention</em> changes there.</p>
|
||
<p>See our
|
||
FAQ on “<a href="../faq.html#feedback">rules, guidelines, tools feedback</a>”
|
||
as well as our
|
||
FAQ on “<a href="../faq.html#question">about asking questions</a>”
|
||
about these rules. You might also find the FAQ in general useful, especially the
|
||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”.</p>
|
||
<h1 id="the-ioccc-is-pending">The IOCCC is pending</h1>
|
||
<p>While the IOCCC is not open now, there is a tentative opening date for the next IOCCC.</p>
|
||
<p>Comments and suggestions on these preliminary rules are welcome. See the
|
||
<a href="../faq.html#feedback">FAQ</a> for how to suggest, correct or provide feedback
|
||
about these rules.</p>
|
||
<!-- END: the next line ends content from: inc/rules.pending.hdr -->
|
||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||
<h1 id="th-international-obfuscated-c-code-contest-official-rules">28th International Obfuscated C Code Contest Official Rules</h1>
|
||
<p class="leftbar">
|
||
Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll.
|
||
</p>
|
||
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
||
granted provided this this copyright and notice are included in its entirety
|
||
and remains unaltered. All other uses must receive prior permission in
|
||
writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rules_version">
|
||
<div id="version">
|
||
<h2 id="ioccc-rules-version">IOCCC Rules version</h2>
|
||
</div>
|
||
</div>
|
||
<p class="leftbar">
|
||
These <a href="rules.html">IOCCC rules</a> are version <strong>28.29 2025-03-03</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The markdown form of these rules <a href="rules.md" download="rules.md">is
|
||
available for download</a>.
|
||
</p>
|
||
<p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="change_marks">
|
||
<h3 id="change-marks">Change marks</h3>
|
||
</div>
|
||
<p class="leftbar">
|
||
<strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong>
|
||
</p>
|
||
<p class="leftbar">
|
||
Most lines that were modified since the previous IOCCC start with a solid
|
||
4 pixel black left border (or, in the case of a code block or blockquote,
|
||
just a vertical bar). We say <em>most lines</em> because we sometimes forget
|
||
to bar modified sections.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="obfuscate">
|
||
<h1 id="obfuscate-defined">Obfuscate defined:</h1>
|
||
</div>
|
||
<p>tr.v. -cated, -cating, -cates.
|
||
<br><br>
|
||
<strong>1a.</strong> To render obscure.<br>
|
||
<strong>1b.</strong> To darken.
|
||
<br><br>
|
||
<strong>2.</strong> To confuse: his emotions obfuscated his judgment.<br>
|
||
[LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,<br>
|
||
to darken < fuscus, dark.] -obfuscation n. obfuscatory adj.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="goals">
|
||
<h1 id="goals-of-the-contest">Goals of the Contest</h1>
|
||
</div>
|
||
<p>The goals of the IOCCC:</p>
|
||
<ul>
|
||
<li>To write the most Obscure/Obfuscated C program within the <a href="rules.html">IOCCC rules</a>.</li>
|
||
<li>To show the importance of programming style, in an ironic way.</li>
|
||
<li>To emphasize the value of perspicuous code by use of negative examples.</li>
|
||
<li>To stress C compilers with unusual code.</li>
|
||
<li>To illustrate some of the subtleties of the C language.</li>
|
||
<li>To provide a safe forum for poor C code. :-)</li>
|
||
<li>To have fun with C!</li>
|
||
</ul>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="dates">
|
||
<h1 id="important-ioccc-dates">Important IOCCC dates</h1>
|
||
</div>
|
||
<p class="leftbar">
|
||
This IOCCC runs from <strong>2024-12-29 23:58:13.213455 UTC</strong> to <strong>2025-06-05 04:03:02.010099 UTC</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
This contest will enter the <strong><a href="../faq.html#pending">pending</a></strong> state on or about
|
||
<strong>2024-12-29 23:58:13.213455 UTC</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
This contest will enter the <strong><a href="../faq.html#open">open</a></strong> state on <strong>2025-03-05 23:19:17.131107 UTC</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
This contest will enter the <strong><a href="../faq.html#judging">judging</a></strong> state on <strong>2025-06-05 04:03:02.010099 UTC</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
<strong>IMPORTANT NOTE</strong>: Until the contest enters the <strong><a href="../faq.html#open">open</a></strong> state, any or all
|
||
of the above <strong>dates and times may change</strong>!
|
||
</p>
|
||
<p class="leftbar">
|
||
Those who <a href="register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong>
|
||
will receive email with their <a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong> and <strong>Initial password</strong>
|
||
from an <a href="../judges.html">IOCCC judge</a> shortly after the contest status becomes <strong><a href="../faq.html#open">open</a></strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
Once an <a href="../judges.html">IOCCC judge</a> emails you your <strong>Username</strong> and <strong>Initial password</strong>, you
|
||
will have 72 hours to <a href="pw-change.html">change your submit server initial password</a>.
|
||
If you do not change your <strong>Initial password</strong> in time, you will have to <a href="register.html">re-register</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
Because it takes time (maybe even a few days) for an <a href="../judges.html">IOCCC judge</a>
|
||
to process your registration and email you your initial login and password,
|
||
you should <strong>MAKE SURE</strong> you give yourself enough time before the contest closes.
|
||
In other words, <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong> of the contest to register!
|
||
The <a href="../judges.html">IOCCC judges</a> are <strong>NOT</strong> responsible for delayed or lost email,
|
||
or for those who wait until the last minute to try to register!
|
||
</p>
|
||
<p class="leftbar">
|
||
See the
|
||
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>”
|
||
and the
|
||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
|
||
as that FAQ has important details on
|
||
<a href="register.html">how to register</a>
|
||
as well as
|
||
<a href="submit.html">how to upload your submission</a> to the IOCCC.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rules">
|
||
<h1 id="ioccc-rules">IOCCC RULES</h1>
|
||
</div>
|
||
<p>To help us with the volume of submissions, we ask that you follow the rules below.</p>
|
||
<div id="rule_abuse">
|
||
<h4 id="a-warning-about-rule-abuse">A warning about rule abuse</h4>
|
||
</div>
|
||
<p class="leftbar">
|
||
<strong>WARNING:</strong> Abusing these rules comes with a <strong>fair amount of risk</strong>
|
||
that your submission will be rejected. If you do plan to abuse the
|
||
rules, then you <strong>MUST CLEARLY EXPLAIN THE RATIONALE</strong> in your <code>remarks.md</code> file,
|
||
as to why you think your rule abuse should be allowed, and as to why you think
|
||
your submission should not be rejected for a rule violation.
|
||
<strong>Nevertheless, <em>Even if you do</em> explain this in your <code>remarks.md</code> file
|
||
you submission may still be rejected</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you use the most recently released official IOCCC submission packaging
|
||
tool (hereby referred to as <code>mkiocccentry(1)</code>), which we <strong>STRONGLY
|
||
recommend you do</strong>, then the <code>mkiocccentry(1)</code> tool will warn you
|
||
if there appears to be a rule violation. The <code>mkiocccentry(1)</code> tool
|
||
also runs the <code>fnamchk(1)</code>, <code>txzchk(1)</code> and <code>chkentry(1)</code> tools.
|
||
Overriding problems detected by any of these tools comes with a
|
||
<strong>fair amount of risk</strong> that your submission will be rejected.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you do override a rule violation warning from the <code>mkiocccentry(1)</code>
|
||
or related IOCCC tool, or otherwise plan to abuse the rules, then you <strong>MUST CLEARLY
|
||
EXPLAIN THE RATIONALE</strong> of why you are attempting to abuse the rules in your
|
||
<code>remarks.md</code> file. <strong><em>Even if you do</em> explain this in your <code>remarks.md</code> file
|
||
your submission may still be rejected</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
<strong>HINT:</strong> If you do submit such a rule abusing / rule violating
|
||
submission, then consider also submitting an alternate version in a
|
||
different submission server slot that does <strong>NOT</strong> violate the rules
|
||
in case your rule abuse excuse is rejected. If you do submit such an
|
||
alternate non-rule abusing version, <strong>PLEASE</strong> indicate that in your
|
||
<code>remarks.md</code> file of your non-rule abusing version so that the <a href="../judges.html">IOCCC
|
||
judges</a> do not think you uploaded a duplicate into a
|
||
wrong slot by mistake.
|
||
</p>
|
||
<p class="leftbar">
|
||
Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
|
||
violating <a href="rules.html#rule17">Rule 17</a>, especially as <code>mkiocccentry(1)</code> does a
|
||
great number of things that are required, and it also runs many checks, and if
|
||
any of those checks fail, you are at a very great risk of having your submission
|
||
rejected for violating <a href="rules.html#rule17">Rule 17</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule13">Rule 12</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule0">
|
||
<h2 id="rule-0">Rule 0</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Just as C starts at 0, so the IOCCC starts at <a href="#rule0">Rule 0</a>. :-)
|
||
</p>
|
||
<p class="leftbar">
|
||
The “<a href="#dates">Important IOCCC dates</a>” section above is part of this rule.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule1">
|
||
<h2 id="rule-1">Rule 1</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Your submission must be a C program.
|
||
</p>
|
||
<p class="leftbar">
|
||
You see, the contest is not called the <strong>International Obfuscated JSON Contest</strong>
|
||
(<strong>IOJSONC</strong>), even if the <a href="https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec">so-called JSON
|
||
spec</a> might be called obfuscated
|
||
by some people. :-)
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule2">
|
||
<h2 id="rule-2">Rule 2</h2>
|
||
</div>
|
||
<p><a href="#rule2">Rule 2</a> requires that your submission satisfy <strong>BOTH</strong> <a href="#rule2a">Rule 2a</a> and <a href="#rule2b">Rule 2b</a>.</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a href="#rule17">Rule 17</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule2a">
|
||
<h2 id="rule-2a">Rule 2a</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
The size of your program source <strong>should NOT exceed 4993 bytes</strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
You may check your code with respect to <a href="#rule2">Rule 2</a> prior to submission by giving the filename
|
||
as a command like argument to the <code>iocccsize(1)</code> tool. For example:
|
||
</p>
|
||
<pre><code> iocccsize prog.c</code></pre>
|
||
<p class="leftbar">
|
||
Alternatively, you may use the <code>mkiocccentry(1)</code> option <code>-d</code> to verify that
|
||
things check out okay (i.e. no problems are detected) without having to answer
|
||
all the questions. See the
|
||
FAQ on “<a href="../faq.html#mkiocccentry_test">how to rule test your submission</a>” for more details.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule2b">
|
||
<h2 id="rule-2b">Rule 2b</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
When the filename of your program source is given as a command line argument to
|
||
the latest version of the official IOCCC size tool (hereby referred to as
|
||
<code>iocccsize(1)</code>), the value printed <strong>should NOT exceed <em>2503</em></strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The source to <code>iocccsize(1)</code> may be found in the
|
||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you use the <code>mkiocccentry(1)</code> tool, which we <strong>STRONGLY recommend
|
||
you do</strong> then <code>mkiocccentry(1)</code> will invoke the <code>iocccsize(1)</code> checks before packaging
|
||
your submission.
|
||
</p>
|
||
<p class="leftbar">
|
||
You may check your code prior to submission by giving the filename
|
||
as a command like argument to the <code>iocccsize(1)</code> tool. For example:
|
||
</p>
|
||
<pre><code> iocccsize prog.c</code></pre>
|
||
<p class="leftbar">
|
||
See also <a href="#rule17">Rule 17</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule3">
|
||
<h2 id="rule-3">Rule 3</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
You must <a href="register.html">register</a> in order to submit your entry to the IOCCC.
|
||
You may <a href="register.html">register</a> while the contest is either
|
||
<strong><a href="../faq.html#pending">pending</a></strong> or <strong><a href="../faq.html#open">open</a></strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
When the contest is <strong><a href="../faq.html#open">open</a></strong>, the <a href="https://submit.ioccc.org">submit server</a>
|
||
will email you your <a href="https://submit.ioccc.org">submit server</a>
|
||
<strong>Username</strong> and <strong>Initial password</strong>. <strong>Please be patient</strong> as it may take some time,
|
||
perhaps as much as a few days, for your registration to be processed and for that email to be sent.
|
||
</p>
|
||
<p class="leftbar">
|
||
Those who <a href="register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong>
|
||
will receive their email (containing their <a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong>
|
||
and <strong>Initial password</strong>), much later: usually a few days around the time when the contest status
|
||
becomes <strong><a href="../faq.html#open">open</a></strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
Once that email you your <strong>Username</strong> and <strong>Initial password</strong> is sent, you
|
||
will have 72 hours to <a href="pw-change.html">change your submit server initial password</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you do not change your <strong>Initial password</strong> in time, you will have
|
||
to <a href="../contact.html">contact an IOCCC judge</a> by email and ask them to reset
|
||
your password. Not only is this a hassle for everyone involved, it will
|
||
delay your IOCCC registration process, perhaps by a number of days that
|
||
<code>egrep(1)</code> would be able to pattern match. By <code>egrep(1)</code>, we refer to the
|
||
long standing <strong>UNIX</strong> utility that should just run and <strong>NOT</strong> whine about
|
||
the command being allegedly deprecated.
|
||
</p>
|
||
<p class="leftbar">
|
||
Because it takes time (maybe even a few days) to process your registration
|
||
and for the server to email you your initial login and password, you
|
||
should <strong>MAKE SURE</strong> you give yourself enough time to register well
|
||
before the contest closes. In other words, <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong>
|
||
of the contest to register! The <a href="../judges.html">IOCCC judges</a>
|
||
are <strong>NOT</strong> responsible for delayed or lost email, or for those who wait
|
||
until the last minute to try to register!
|
||
</p>
|
||
<p class="leftbar">
|
||
See the
|
||
FAQ on “<a href="../quick-start.html#enter">how to register and submit to the IOCCC</a>”
|
||
for instructions on registering and participating in the IOCCC, as the process
|
||
may change from contest to contest.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule8">Rule 8</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule4">
|
||
<h2 id="rule-4">Rule 4</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
If your submission is selected as a winning entry, then your submission may be modified in order
|
||
to fit into the structure of the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
For example, your submission’s <code>Makefile</code> will be modified and your <code>remarks.md</code>
|
||
will become a <code>README.md</code> which will be used to generate an <code>index.html</code> file.
|
||
</p>
|
||
<p class="leftbar">
|
||
Your source code will be the file <code>prog.c</code>. The compiled binary
|
||
will be called <code>prog</code>. If you submission requires different filenames,
|
||
then modify your submission’s <code>Makefile</code> to <strong>COPY</strong> (<strong>NOT</strong> move!) the files
|
||
accordingly.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule5">
|
||
<h2 id="rule-5">Rule 5</h2>
|
||
</div>
|
||
<p>Your submission must <strong>NOT</strong> modify the content or filename of any part of your
|
||
original submission including, but not limited to <code>prog.c</code>, the <code>Makefile</code>
|
||
as well as any data files you submit.</p>
|
||
<p>If you submission needs (or wishes :-) ) to modify such content, it <strong>MUST</strong>
|
||
first copy the file to a new filename and then modify that copy.</p>
|
||
<p class="leftbar">
|
||
You may use your submission (program) to form a copy, or you can make use of
|
||
your <code>Makefile</code> to form that copy.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you do make a copy of a submission file, <strong>PLEASE</strong> be sure that
|
||
the <code>clobber</code> rule of your <code>Makefile</code> removes that copy in order to
|
||
in order restore your submission to its original submission state.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule6">
|
||
<h2 id="rule-6">Rule 6</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
I am not a rule, I am a <code>free(void *human);</code> ‼️
|
||
</p>
|
||
<p class="leftbar">
|
||
<code>while (!(ioccc(rule(you(are(number(6)))))) {</code><br>
|
||
<code>ha_ha_ha();</code><br>
|
||
<code>}</code>
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule7">
|
||
<h2 id="rule-7">Rule 7</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
The obfuscated C program must be your own original work.
|
||
</p>
|
||
<p class="leftbar">
|
||
You (the author(s)) must own the contents of your submission OR
|
||
you must have permission from the owner(s) to submit their content.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you submit any content that is owned by others, you <strong>MUST
|
||
detail that ownership</strong> (i.e., who owns what) <strong><em>AND</em> document the
|
||
permission you obtained</strong> in your <code>remarks.md</code> file.
|
||
</p>
|
||
<p class="leftbar">
|
||
Please note that <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||
are <strong>NOT</strong> original works, unless of course you’re the respective authors, in
|
||
which case they are original. :-)
|
||
</p>
|
||
<p class="leftbar">
|
||
Nevertheless tools such as those listed are <strong>NOT</strong> obfuscated. If submitted, they
|
||
would probably violate a number of rules. :-)
|
||
</p>
|
||
<p class="leftbar">
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c">mkioccentry(1)</a></li>
|
||
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">iooccsize(1)</a></li>
|
||
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c">chkentry(1)</a></li>
|
||
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c">txzchk(1)</a></li>
|
||
<li><a href="https://github.com/xexyl/jparse">jparse repo as cloned by the mkiocccentry repo</a></li>
|
||
<li><a href="https://github.com/lcn2/dbg">dbg repo as cloned by the mkiocccentry repo</a></li>
|
||
<li><a href="https://github.com/lcn2/dyn_array">dyn_array repo as cloned by the mkiocccentry repo</a></li>
|
||
</ul>
|
||
</p>
|
||
<p class="leftbar">
|
||
The IOCCC has a rich history of remarkable winning entries created by
|
||
authors who skillfully employed various techniques to develop their code.
|
||
While it is <strong>NOT</strong> required, you are allowed to use tools to develop
|
||
and test your submission. These tools may include, but are not limited
|
||
to code generators, code analysis tools, static code analysis tools,
|
||
runtime analysis tools, machine learning tools, natural language models,
|
||
code copilot tools, so-called AI services, large language models, etc.
|
||
If you do make use of such tools or services, then we <strong>ENCOURAGE you to describe
|
||
how you used such tools</strong> in your <code>remarks.md</code> file.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule8">
|
||
<h2 id="rule-8">Rule 8</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Submissions may only be uploaded to the <a href="https://submit.ioccc.org">IOCCC submit server</a>
|
||
while the contest is <strong><a href="../faq.html#open">open</a></strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
If you have <a href="register.html">registered</a> and received by email your
|
||
<a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong> and <strong>Initial password</strong>
|
||
from an <a href="../judges.html">IOCCC judge</a>, you may upload your submission to
|
||
the <a href="https://submit.ioccc.org">submit server</a> <strong>ONLY</strong> while the
|
||
contest is <strong><a href="../faq.html#open">open</a></strong>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The <a href="https://submit.ioccc.org">submit server</a>, in accordance with <a href="rules.html#rule17">Rule 17</a>,
|
||
places a limit of <strong>3999971</strong> bytes on the size of your upload.
|
||
</p>
|
||
<p class="leftbar">
|
||
Once the contest is in the <strong><a href="../faq.html#judging">judging</a></strong> state (or
|
||
<strong><a href="../faq.html#closed">closed</a></strong>), you may <strong>NOT</strong> upload submissions.
|
||
</p>
|
||
<p class="leftbar">
|
||
While the contest is <strong><a href="../faq.html#open">open</a></strong> or in the <strong><a href="../faq.html#judging">judging</a></strong> state,
|
||
the <a href="../judges.html">IOCCC judges</a> <strong>MAY</strong> (but are not required to) modify the slot comment of your submission to indicate
|
||
that they have received it. If uploaded submission is malformed, the <a href="../judges.html">IOCCC judges</a>
|
||
<strong>MAY</strong> (but are not required to) modify the slot comment accordingly.
|
||
</p>
|
||
<p class="leftbar">
|
||
You are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool
|
||
as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
|
||
to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The <a href="https://submit.ioccc.org">submit server</a> will become active when the contest is <strong><a href="../faq.html#open">open</a></strong>.
|
||
Until the contest status becomes <strong><a href="../faq.html#open">open</a></strong>,
|
||
the <a href="https://submit.ioccc.org">submit server</a> may be offline and/or unresponsive.
|
||
</p>
|
||
<p class="leftbar">
|
||
See the
|
||
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>”
|
||
for more information about the <code>mkiocccentry(1)</code> tool.
|
||
</p>
|
||
<p class="leftbar">
|
||
See the “<a href="#dates">Important IOCCC dates</a>” section above for when these contest states are scheduled.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule3">Rule 3</a> and <a href="#rule17">Rule 17</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule9">
|
||
<h2 id="rule-9">Rule 9</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Each <strong>PERSON</strong> may register <strong>ONLY ONE</strong> account and each account may submit up to
|
||
and including <strong>10.000000</strong> (ten in base 10) submissions <strong>PER</strong> contest.
|
||
</p>
|
||
<p><strong>Each submission <em>must be submitted separately</em></strong>.</p>
|
||
<p class="leftbar">
|
||
If this seems unreasonable we suggest you wait until the next contest, and in
|
||
the interim ponder this modified quote purportedly said by Bill Gates:
|
||
</p>
|
||
<p class="leftbar">
|
||
<blockquote>
|
||
<p>10 submissions ought to be enough for anybody. :-)</p>
|
||
<p>– Bill Gates s/640K/10/ (allegedly)</p>
|
||
</blockquote>
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule10">
|
||
<h2 id="rule-10">Rule 10</h2>
|
||
</div>
|
||
<p>Entries requiring human interaction to be initially compiled <strong>are not
|
||
permitted</strong>. However, see the <a href="guidelines.html">guidelines</a>.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule11">
|
||
<h2 id="rule-11">Rule 11</h2>
|
||
</div>
|
||
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>,
|
||
super-user, special owner, special group, etc.) are still <strong>HIGHLY
|
||
DISCOURAGED</strong>. We do not guarantee these functions will behave as
|
||
you expect on our test platforms. If your program needs special
|
||
permissions you <strong>MUST</strong> document this fact, and explain why
|
||
it is needed in your submission’s <code>remarks.md</code> file.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule12">
|
||
<h2 id="rule-12">Rule 12</h2>
|
||
</div>
|
||
<p><strong>Legal</strong> abuse of the rules is somewhat encouraged. <strong>A submission that, in
|
||
the opinion of the <a href="../judges.html">judges</a>, violates the rules WILL BE DISQUALIFIED</strong>.
|
||
Submissions that attempt to abuse the rules <strong>MUST</strong> try to justify why
|
||
their rule abuse is legal, in the <code>remarks.md</code> file.</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule_abuse">the warning about rule abuse</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule13">
|
||
<h2 id="rule-13">Rule 13</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
7 out of 13 UTF-8 characters in C code agree that this rule number is lucky
|
||
enough to be a prime number.
|
||
</p>
|
||
<p class="leftbar">
|
||
Fun fact: the fear of the number 13 is called <em>triskaidekaphobia</em>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule14">
|
||
<h2 id="rule-14">Rule 14</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Any C source that fails to compile because of lines with trailing
|
||
control-M’s (i.e., lines with a trailing byte <code>015</code>) <strong><em>might</em></strong> be rejected.
|
||
</p>
|
||
<p class="leftbar">
|
||
Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>, <code>Makefile</code>, or
|
||
<code>remarks.md</code> files but instead end lines with a trailing newline (i.e.,
|
||
byte <code>012</code>) character.
|
||
</p>
|
||
<p class="leftbar">
|
||
As we do <strong>NOT</strong> DOS, please also be sure that the <code>Makefile</code> and
|
||
<code>remarks.md</code> files end in final newline (i.e., byte <code>012</code>) character.
|
||
</p>
|
||
<p class="leftbar">
|
||
You are permitted, in order to try and squeeze your <code>prog.c</code> under
|
||
a <a href="#rule2a">Rule 2a</a> and/or <a href="#rule2b">Rule 2b</a> limit, to <strong>NOT</strong>
|
||
end your <code>prog.c</code> with a newline (i.e., byte <code>012</code>) character.
|
||
If you need to do this, <strong>PLEASE</strong> document that in your <code>remarks.md</code> file.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule15">
|
||
<h2 id="rule-15">Rule 15</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
In order to register for the IOCCC, you <strong>MUST</strong> have a valid email address.
|
||
</p>
|
||
<p class="leftbar">
|
||
The <a href="../judges.html">judges</a> <strong>are NOT responsible for delays in email</strong>, so please plan
|
||
enough time accordingly.
|
||
</p>
|
||
<p class="leftbar">
|
||
See the
|
||
FAQ on “<a href="../quick-start.html#register">how to register</a>”
|
||
for details.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule16">
|
||
<h2 id="rule-16">Rule 16</h2>
|
||
</div>
|
||
<p>Submissions that are similar to previous winning IOCCC entries are discouraged.</p>
|
||
<p class="leftbar">
|
||
You are allowed to re-submit to a later contest, a submission that
|
||
did not win the IOCCC. If you do so, then you would be well advised
|
||
to try and enhance and improve your submission.
|
||
If you do re-submit something that did not previously win, then
|
||
you are <strong>encouraged</strong> to mention this in your <code>remarks.md</code> file
|
||
as this sometimes helps.
|
||
</p>
|
||
<p class="leftbar">
|
||
Re-submitting an improved submission that did not become an
|
||
IOCCC winning entry is a <strong>time honored</strong> tradition of the IOCCC.
|
||
There are some IOCCC winning entries that were submitted to multiple contests
|
||
before they were improved enough to “climb over” (as the expression
|
||
goes) all the other submissions for a given contest.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule17">
|
||
<h2 id="rule-17">Rule 17</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Your submission must be in the form of a <strong>xz compressed tarball</strong> that
|
||
the current released version of the <code>mkiocccentry(1)</code> tool would generate.
|
||
The files, directories, and paths <strong>MUST</strong> conform to the limits imposed
|
||
by <code>mkiocccentry(1)</code> including but <strong>NOT LIMITED</strong> to their names, count,
|
||
path length and directory tree depth.
|
||
</p>
|
||
<p class="leftbar">
|
||
Your <strong>xz compressed tarball</strong> must be larger than <strong>0</strong> bytes and no larger than <strong>3999971</strong> bytes.
|
||
</p>
|
||
<p class="leftbar">
|
||
The sum of the byte lengths of all files, after the <strong>xz compressed tarball</strong> is un-tarred,
|
||
must not exceed <strong>27651*1024</strong> bytes.
|
||
</p>
|
||
<p class="leftbar">
|
||
Your <strong>xz compressed tarball</strong> submission file must pass the tests performed by the current version of <code>txzchk(1)</code>.
|
||
</p>
|
||
<p class="leftbar">
|
||
Your <strong>xz compressed tarball</strong> submission filename must pass the tests performed by the current version of <code>fnamchk(1)</code>.
|
||
</p>
|
||
<p class="leftbar">
|
||
When your <strong>xz compressed tarball</strong> submission file is un-tarred, the
|
||
resulting directory must pass the checks performed by the current version of <code>chkentry(1)</code>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The resulting <code>prog.c</code> file must pass the <a href="#rule2">Rule 2</a> size checks performed by the current
|
||
version of <code>iocccsize(1)</code>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The <code>.auth.json</code> and <code>.info.json</code> must be compatible with what the
|
||
current version of the <code>mkiocccentry(1)</code> tool would produce. They must
|
||
also pass the tests performed by the current version of <code>chkentry(1)</code>.
|
||
</p>
|
||
<p class="leftbar">
|
||
The required <code>Makefile</code> must <strong>NOT</strong> be empty.
|
||
</p>
|
||
<p class="leftbar">
|
||
The required <code>remarks.md</code> must <strong>NOT</strong> be empty.
|
||
</p>
|
||
<p class="leftbar">
|
||
You may <strong>NOT</strong> submit a tarball created by the <code>-d</code> or <code>-s seed</code> option of <code>mkiocccentry(1)</code>.
|
||
</p>
|
||
<h3 id="tldr-rule-17---use-mkiocccentry1-to-form-your-submission">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code> to form your submission</h3>
|
||
<p class="leftbar">
|
||
Let the current version of the <code>mkiocccentry(1)</code> tool form your <strong>xz
|
||
compressed tarball</strong> submission file.
|
||
</p>
|
||
<h3 id="warning">Warning</h3>
|
||
<p class="leftbar">
|
||
Using command line flags or input prompts to override checks and
|
||
limits made by the above mentioned tools is <strong>NOT</strong> recommended
|
||
and may result in your submission being rejected by the <a href="https://submit.ioccc.org">IOCCC
|
||
submit server</a> and/or the <a href="../judges.html">IOCCC Judges</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
See the
|
||
FAQ on the “<a href="../faq.html#mkiocccentry">mkiocccentry tool</a>
|
||
for how to obtain and use the above mentioned tools.
|
||
</p>
|
||
<p class="leftbar">
|
||
<strong>IMPORTANT</strong>: See the
|
||
FAQ on “<a href="../faq.html#rule17">Rule 17</a>”
|
||
for very important details behind this rule.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule18">
|
||
<h2 id="rule-18">Rule 18</h2>
|
||
</div>
|
||
<p>The entirety of your submission must be submitted under the following license:</p>
|
||
<p class="leftbar">
|
||
<ul>
|
||
<li><strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></li>
|
||
</ul>
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule7">Rule 7</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule19">
|
||
<h2 id="rule-19">Rule 19</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
The <code>remarks.md</code> file, a required non-empty file, must be written in
|
||
<a href="https://www.markdownguide.org/basic-syntax/">Markdown format</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
We currently use <a href="https://pandoc.org">pandoc(1)</a> to automatically convert markdown to HTML.
|
||
Please try to avoid submitting an HTML file translation to any markdown file.
|
||
If you <strong>MUST</strong> submit such an HTML translation, <strong>PLEASE</strong> mention this in your <code>remarks.md</code> file.
|
||
</p>
|
||
<p class="leftbar">
|
||
For any submission that wins the contest, we modify your <code>remarks.md</code> file and
|
||
rename it as <code>README.md</code> and then use <a href="https://pandoc.org">pandoc(1)</a> to generate
|
||
the <code>index.html</code> file in the top level directory of your submission.
|
||
For this reason, please do <strong>NOT</strong> submit a <code>README.md</code> file, <strong>NOR</strong> an <code>index.html</code>
|
||
file in the top level directory where your <code>remarks.md</code> file resides.
|
||
</p>
|
||
<p class="leftbar">
|
||
See the <a href="https://www.markdownguide.org/cheat-sheet/">Markdown Cheat Sheet</a>
|
||
for a handy quick reference to the Markdown syntax.
|
||
</p>
|
||
<p class="leftbar">
|
||
See the <a href="https://www.markdownguide.org">Markdown guide</a>
|
||
for free and open-source reference guide that explains
|
||
how to use markdown.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also the <a href="http://daringfireball.net/projects/markdown/basics">Daring Fireball Markdown:
|
||
Basics</a> for
|
||
information on the markdown format.
|
||
</p>
|
||
<p class="leftbar">
|
||
Please see our FAQ “<a href="../faq.html#remarks_md">remarks.md</a>” and the <a href="../markdown.html">IOCCC markdown
|
||
guidelines</a> for additional markdown guidance.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule20">
|
||
<h2 id="rule-20">Rule 20</h2>
|
||
</div>
|
||
<p>The how to build instructions must be in Makefile format. See <a href="../faq.html#make_compatibility">the FAQ about
|
||
make(1) compatibility the IOCCC
|
||
supports</a> for more details.</p>
|
||
<p class="leftbar">
|
||
You are <strong>ENCOURAGED</strong> to use the
|
||
Makefile example, renamed as <code>Makefile</code> of course, for help in constructing your
|
||
<code>Makefile</code>. See the <a href="guidelines.html#makefile">Makefile section</a> in the
|
||
guidelines for more details.
|
||
</p>
|
||
<p>The target of the <code>Makefile</code> must be called <code>prog</code>. The original
|
||
C source file must be called <code>prog.c</code>.</p>
|
||
<p>To invoke the C compiler, use <code>${CC}</code>. To invoke the C preprocessor use
|
||
<code>${CPP}</code>.</p>
|
||
<p>Do <strong>NOT</strong> assume that <code>.</code> (the current directory) is in the <code>$PATH</code>.</p>
|
||
<p class="leftbar">
|
||
When <code>make clobber</code> is invoked, we request that submission directory be restored
|
||
to its original submission state. For example, any temporary files
|
||
created during the build process, or during execution should be
|
||
removed by the <code>clobber</code> rule.
|
||
</p>
|
||
<p class="leftbar">
|
||
Your <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with <code>bash(1)</code>
|
||
and GNU <code>make(1)</code>. You are <strong>ENCOURAGED</strong> to use <code>SHELL= bash</code> in
|
||
your <code>Makefile</code>.
|
||
</p>
|
||
<p class="leftbar">
|
||
Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||
Specification</a>
|
||
environments and systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||
Specification</a> are
|
||
available in the <code>$PATH</code> search path.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule21">
|
||
<h2 id="rule-21">Rule 21</h2>
|
||
</div>
|
||
<p>Your submission <strong>MUST NOT</strong> create or modify files <strong>ABOVE</strong> the current directory
|
||
<em>with the exception of</em> the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your submission
|
||
<strong>MAY</strong> create subdirectories below the current directory, or in <code>/tmp</code>,
|
||
or in <code>/var/tmp</code> provided that <code>.</code> is <strong>NOT</strong> the first byte in any
|
||
directory name or filename you create.</p>
|
||
<p class="leftbar">
|
||
If you do create files and directories, <strong>PLEASE</strong> be sure that
|
||
the <code>clobber</code> rule of your <code>Makefile</code> removes such created files
|
||
in order restore your submission to its original submission state.
|
||
</p>
|
||
<p class="leftbar">
|
||
See also <a href="#rule5">Rule 5</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule22">
|
||
<h2 id="rule-22">Rule 22</h2>
|
||
</div>
|
||
<p>Catch 22:</p>
|
||
<p>Your source code, data files, remarks and program output <strong>MUST NOT</strong>
|
||
identify the authors of your code. The <a href="../judges.html">judges</a> <strong>STRONGLY PREFER</strong> to
|
||
<strong>NOT</strong> know who is submitting entries to the IOCCC.</p>
|
||
<p>Even if you are a previous IOCCC winner, catch 22 still applies.</p>
|
||
<p>Identifying the author(s) of your submission in an obvious way anywhere
|
||
within your code, data, remarks or program output (unless you are
|
||
<strong>Peter Honeyman</strong> or pretending to be <strong>Peter Honeyman</strong>) will be grounds
|
||
for disqualification of your submission.</p>
|
||
<p class="leftbar">
|
||
And don’t assume that we won’t be able to determine your name even if it’s not
|
||
obvious, because you stand a significant chance of violating this rule if you
|
||
do.
|
||
</p>
|
||
<p>Yes, Virginia, <strong>WE REALLY MEAN IT!</strong></p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule23">
|
||
<h2 id="rule-23">Rule 23</h2>
|
||
</div>
|
||
<p>This prime rule number is reserved for future use.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule24">
|
||
<h2 id="rule-24">Rule 24</h2>
|
||
</div>
|
||
<p>Even though 24 is not prime, you should still see <a href="#rule23">Rule 23</a>.</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule25">
|
||
<h2 id="rule-25">Rule 25</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
The <a href="rules.html">IOCCC rule set</a> needs more than 5^2 rules: see <a href="#rule26">Rule 26</a>.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule26">
|
||
<h2 id="rule-26">Rule 26</h2>
|
||
</div>
|
||
<blockquote>
|
||
<p>“The quick brown fox jumps over the lazy dog”.<br>
|
||
“Pack my box with five dozen liquor jugs.”<br>
|
||
“How vexingly quick daft zebras jump!”<br>
|
||
“Sphinx of black quartz, judge my vow.”<br>
|
||
“Waltz, bad nymph, for quick jigs vex.”<br>
|
||
“Mr. Jock, TV quiz PhD, bags few lynx.”<br>
|
||
“abcdefg, hijklmnop, qrstu&v, wxy&z.”</p>
|
||
</blockquote>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule27">
|
||
<h2 id="rule-27">Rule 27</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
Unless otherwise needed, <a href="#rule27">Rule 27</a> is reserved for something cubic. :-)
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="rule28">
|
||
<h2 id="rule-28">Rule 28</h2>
|
||
</div>
|
||
<p class="leftbar">
|
||
<a href="#rule28">Rule 28</a> is a perfect way to end the list of <a href="rules.html">IOCCC rules</a>
|
||
as we do <strong>NOT</strong> plan to have <strong>496</strong> rules. :-)
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<div id="more-information">
|
||
<div id="information">
|
||
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
||
</div>
|
||
</div>
|
||
<p class="leftbar">
|
||
For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.
|
||
</p>
|
||
<p class="leftbar">
|
||
<strong>Be SURE</strong> to review the <a href="index.html">IOCCC Rules and Guidelines</a> as they
|
||
may (and <strong>often do</strong>) change from year to year.
|
||
</p>
|
||
<p class="leftbar">
|
||
<strong>PLEASE</strong> be sure you have the current <a href="rules.html">IOCCC rules</a> and
|
||
<a href="guidelines.html">IOCCC guidelines</a> prior to submitting to the contest.
|
||
</p>
|
||
<p>See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
|
||
<p class="leftbar">
|
||
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
|
||
FAQ on “<a href="../faq.html#try_mastodon">Mastodon</a>”
|
||
for more information. Please do note that unless
|
||
you are mentioned by us you will <strong>NOT</strong> get a notification from the app <em>so you
|
||
should refresh the page <strong>even if you do follow us</strong></em>.
|
||
</p>
|
||
<p class="leftbar">
|
||
Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a> in general.
|
||
</p>
|
||
<p class="leftbar">
|
||
Consider joining the IOCCC discord community via this link:
|
||
<a href="https://discord.gg/Wa42Qujwnw">https://discord.gg/Wa42Qujwnw</a>
|
||
</p>
|
||
<p class="leftbar">
|
||
See the
|
||
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>”
|
||
and the
|
||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
|
||
as that FAQ has important details on
|
||
<a href="register.html">how to register</a>
|
||
as well as
|
||
<a href="submit.html">how to upload your submission</a> for the IOCCC.
|
||
</p>
|
||
<p>Jump to: <a href="#">top</a></p>
|
||
<p><strong>Leonid A. Broukhis</strong><br>
|
||
<strong>chongo (Landon Curt Noll) <code>/\cc/\</code></strong></p>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<p>Jump to: <a href="#">top</a>
|
||
<!-- AFTER: last line of markdown file: next/rules.md --></p>
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.default.html -->
|
||
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
|
||
<div id="copyright"><h3>Copyright © 1984-2024 by Landon Curt Noll:
|
||
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
|
||
<p>
|
||
This work is <b>licensed by Landon Curt Noll</b> under
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
|
||
target="_blank"
|
||
rel="license noopener noreferrer"
|
||
style="display:inline-block;">CC BY-SA 4.0</a></b>.
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../png/cc.png"
|
||
alt="cc inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../png/by.png"
|
||
alt="person inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../png/sa.png"
|
||
alt="arrow looping back on itself inside circle symbol"><br>
|
||
You should <b>carefully review</b> the
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
|
||
before using the licensed material.<br>
|
||
You may wish to review the
|
||
<b><a href="../license.html"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
|
||
of <b>CC BY-SA 4.0</b>.<br>
|
||
</p>
|
||
</div>
|
||
|
||
<div id="coda"><h3>Coda</h3>
|
||
<p>
|
||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2Fnext%2Frules.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.default.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|