2006 Esolang Contest

From Esolang
Jump to navigation Jump to search

The 2006 Esolang Contest was an attempt to show off programmer's capacity for masochism. With a small niche of people willingly submitting themselves to painful restrictions, miniscule command sets, theoretical computational models, mind-boggling logic operations, or simply waddling through a land riddled with scalding lava and landmines with the imminent threat of nuclear bomb strikes (also known as Malbolge).

In the grand tradition of Esolang contests and awards, this petered out before anyone finished judging it, all the entries may have been lost, and the administrator got busy with other things and hasn't been seen in the community more than a couple times since.

Reasons of origin

The Esolangs community is already composed of people that have deft programming or logic skills. Many (if not all) of these languages are painful to program in for some reason or another, and as human beings, we have triumphed the odds (or created a new hell, either way). Since the Esolangs community thrives on creating forms of masochism, why not fuel the drive for masochism with a perfect egotistical display of it -- a contest!

Purpose

The contest has a two-fold purpose. The first is to create a (more or less) equal setting for Esolang programmers to display their skills implementing certain algorithms. As of now, the prize is only bragging rights (unless someone has money or other objects of seeming worth to change that) but with it a chance to show that your brain can work with the toughest logic problems, the hardest constraints, the weirdest algorithms, or other logic-defying tests. The second purpose is for education. The Esolangs community has a very small coder-base, and algorithms or libraries coded for this community are always helpful. The hope is that code produced by this contest can be reused by other programmers for various purposes. Every programming language is only as powerful as the libraries implemented in it, so with libraries, maybe even our favorite little gems of masochism can be useful.

Process

Since I have no real idea of the participation the 2006 Esolang Contest (and maybe a renaming is in good order) will bring, I can't speculate about how the nature of the contest will truly be, but I have made a sort of abstract. My hope was that a set of people (I'm estimating from 5 to 10, hopefully including myself) would form the 'committee' of the project. This role of the committe would be to judge the entries and to make sure no foul conduct applies. Aside from the community, there are the participants. The role of the participants is, well... relatively self-explanatory. I'll explain how the contest is divided and the process of arbiting it in the 'Rules' section.

Rules

Process

Update: The times have now been announced and confirmed. Please be sure to adjust accordingly.

The 2006 Esolang Contest will be split up into categories based on the language. As of now, I'm speculating that we will have an entry for Brainfuck programs, Unlambda programs, INTERCAL (preferrably C-INTERCAL) programs, Befunge (Befunge-98) programs, and Malbolge programs. The commitee will create a pool of tasks for contestants to complete. It is then the choice of the contestant to choose a task from this pool of tasks to perform with their language of choice (denoted in preregistration). Registration for the contest starts on August 11 20:00 UTC and ends on August 21 19:00 UTC. During this registration period, the committee will compile a list of the confirmed registrants (and will notify you if for some reason you are being disallowed from participating) and post the list online at a certain location. On August 22 0:00 UTC, the committee will unveil the pool of tasks to compete with. Participants will have up to September 26 0:00 UTC to submit their entries. All dates and times will be posted relative of UTC time.

Judging

The entries for the contest will be judged according to the following categories:

Category Description
Speed The amount of time it takes for the program to execute and terminate. Programs requesting input will be judged upon the basis of only one input cycle.
Size The size of the source also plays another factor. Concise coding is as much of an art as effective coding. Points will be given to creative uses of contraction. But do not make the program so small as to obfuscate it. You will lose points for that.
Comments Yes, comments are required in the code, and the more helpful they are the better. The reason for including comments is twofold. One, since one aim of this competition is to produce reusable useful code in Esolangs, commented code is helpful for other programmers using a chunk of code. Two, Comments serve as a deterrant from cheating, using things such as compilers or parsers. You need to be intimately familiar with your code. Do not comment overmuch, do not comment too sparsely. Useful comments make useful programs.
Complexity Of course, being an Esolang contest, the difficulty is in writing functional and complex code. While the committee only creates a guideline for a certain division of the competition, it is up to the participant to decide how complex the program shall be. If the theme is text editors and you create Emacs well..., that makes for a great score, no? ;)
Presentation Lastly, you have presentation. Esolangs being what they are, creative interfaces to programs is the last thing you'd expect. Therefore this category is added in. A program with a creative/intuitive interface created in an Esolang gets a higher score.


Committee members will be assigned numbers by one committee member not participating in the judging. Using a program (hopefully created in an Esolang itself), these judges will submit their judge numbers and their scores to the program, which will simply tally the result and announce the top three winners in each division and the margin of seperation in score between the places.

The Tasks

  • OISC/MISC interpreter.
  • Uuencode implementation.
    • Should take binary data as input and create uuencoded data as output.
  • Compression program. (entry must include decompressor and compressor, one of which may be written in a conventional language).
    • This may use any compression algorithm, so long as it works.
  • Trigonometric functions (one or more of your choice, at least 3 decimal place precision)
    • sine, cosine, tangent, etc
  • Classic games (use your imagination)
    • Zork, Rogue, whatever
  • Algebraic evaluation (must be able to handle 5+ levels of parentheses, integer constants, and the basic math functions -+/*)
    • Infix notation is required ("a + b" etc.)
  • sed clone (as rigorous as you like, including at least POSIX Regular Expressions in substitution expressions.)
    • How the input is formed is up to you
  • some type of ASCII-art generator. (wordart generation or image conversion. In the case of images, must support at least a 320x240 8-bit raw grayscale image.)
    • Some example images: http://www.codu.org/esocomp/
    • Note that you may support 320x240 or more (at your option), 8-bit greyscale or better (at your option) and raw format or better (at your option).
    • The input is the image data itself
  • Logarithm calculator.

Licensing

If you have not realized yet from the implications above, the source code of any and all applicants in the competition will be released. Therefore, if for some reason you are not willing for other people to see your code, please do not enter the competition. Each application will, by default, be released under the MIT Software License. If you wish to use another license, simply add that in to your entry in the Contestants section. Only FSF approved licenses are allowed.

Interested persons

I don't want to restrict membership or anything, so remember that this is just a suggestion. The participants seem to be of a nice volume, and it keeps growing. It would help if we get more committee members as well so I can declare the dates of the competition. Any and all publicity will be helpful, so don't hesitate to Spread Esolang (TM).

Committee

If you are interested in being part of the committee, please place your name or handle and your E-mail address (or other form of reliable electronic communication) here. If you intend to join the committee you must have coding experience! I repeat, you must have coding experience!

Current committee applicants are:

Committee applications are CLOSED. As of now, the competition has begun.

When the revolution comes, committee members will be shot by Lament.

Magic Contestants

Magic contestants can and will do whatever they please, when they please.

  • Razor-X

Participants

Those willing to participate, regardless of programming language, please post your name or handle, your E-mail address (or other form of reliable electronic communication), and the language you wish to program in here. Please try and restrict it to one of the popular languages I mentioned above.

Current participants are:

Pikhq, + + + + + + + + + + + + + [ > + + + + + > + + + + + + + + > + + + + + + + + > + + + + + + + < < < < - ] > > + + . + + + + + . + + + + . > + . > + + + + + + . < - . < + + + + . < - . > > + + . + + + + + . + + + + . - - - - - - - - - - . > . < - . < . < - - - - - - - - - - - - - - - - - - . > > . + + + + + + + . < - - - - - - - - - - . > > + + + + . < < - . - - - . + + + + + . > + + + + + + . + + + . < < . > . > > . < - - - - . Brainfuck

Keymaker, my e-mail address in hex values: 74 75 6F 6D 6F 68 40 6D 61 69 6C 2E 63 6F 6D, brainfuck

nooga, x n o o g a at g m a i l dot c o m, Unlambda

ais523, INTERCAL (I can be reached via User talk:ais523 with as much reliability as any other means of electronic communication)

thematrixeatsyou, Befunge or TheSquare (look at brainfuck source on user page for email)

Rune, Befunge, rune?krokodille.com

Brian Raiter; breadbox [whirlpool] muppetlabs [spot] com; INTERCAL or Brainfuck

Lee Houghton; (email removed; apparently, scammers have decided that things such as "at" and "org" aren't signals to fall over and die), irc://irc.afternet.org/linc; Befunge, INTERCAL (and TriINTERCAL)

mtve, Befunge, please msg me on freenode

smokecfh, Brainfuck, please msg me on freenode

hedgehog, Brainfuck, @safe-mail.net

Safalra (user page) - BF, safalra [at] hotmail.com

DreamIsle - BrainFuck and/or Befunge - email: dav (haha) mil (lol) lar (AT) gm (lmao) ail (DOT) com

SMG thinks the Befunge category sounds fun; email gusano79 /*AT*/ earthlink /*DOT*/ net

CakeProphet Bard of the Cray 23:36, 21 Aug 2006 (UTC) -- Yeah.. BrainFuck... Talk page works fine...

Registration is CLOSED. As of now, the competition has begun.

Proposed rule changes

If you wish to make modifications to the rules, simply add your modifications here.

  • Approved as of August 10, 2006 UTC: A proposal has been presented to change the style of the contest. Rather than create a set of challenges for respective languages to meet for competitors in their languages, instead the committee will decide on a set of tasks and instead present those. The requirement for preregistration in your language of choice still holds. Please cast your vote in the IRC channel noted in the Contact section. Please send me a private message regarding your vote if you do not attend the room regularly. The vote is due in by 19:00 August 10, 2006 UTC.

Contact

You can find me lurking around #esoteric on irc.freenode.net, just holler about the competition or drop me an E-mail at Blarghmania (at) Gmail (dot) com

Requests for rules clarification

  • Specifically, what versions of INTERCAL are allowed? For instance, I'm wondering if I can use Backtracking INTERCAL (which is supported by the latest version of C-INTERCAL). ais523 13:43, 25 Aug 2006 (UTC)
Doesn't it say "INTERCAL (preferrably C-INTERCAL)"? I understand that one can use other versions of INTERCAL, not just C-INTERCAL, although that may incur some penalty. Which raises the question: why prefer C-INTERCAL over any of the other dialects?