Frequently asked questions about the ICFP Programming Contest 2001

Q34: What about stderr ?

A: You can output whatever you want on stderr, we will ignore it.

Q33: The time limit will be the first command-line argument; what other command-line arguments are there ?

A: We will only run your program with one command-line argument, the time limit. But you may want to accept more (optional) arguments for your own use, such as -debug, -verbose, --version, or whatever; this is allowed even if we won't be using them.

Q32: Is <B><I></B></I> considered "properly nested" ?

A: No. A parenthesis was added to the spec to make this clear.

Q31: Ugh! SML/NG is not an XML. In XML, [whatever] is not allowed.

A: True. We did it on purpose. Not everyone (yet) has an XML parser in a drawer just waiting to be used, and SML/NG is very easy to parse anyway.

Q30: How fast can we assume standard output to be ? Disk file ? 9600 bit/s serial line ?

A: You can assume that the speed of writing to stdout is at least 1 MB/s. You cannot assume that stdout is a regular file (i.e. seek() may or may not work).

Q29: What about the license of the code submitted ? Does it have to bear a particular license ?

A: The Judges have not sought legal advice. Therefore, although we believe the following policy to be reasonable, it should not be considered binding. You submit your source code at your own risk.

You must submit source code for your entry to be considered. You give us rights to look at your source code, and to display all or parts of it for the edification of ICFP attendees, and to publish it on the Web along with the contest results. However, you retain all other rights; in particular, we do not have the right to use your source code to build products, etc.

Also, you must of course have the right to give us the source code you send to us. It is your responsibility not to send us proprietary source code.

Q28: What entities are supported by SML/NG in addition to &lt; and &gt; ?

A: The specification doesn't say anything about entities. &lt; and &gt; are given as examples of regular text that can occur in a document. You cannot assume that a & character will have a matching semicolon after it.

Q27: Can my program launch some background process(es) and leave them running after the file is processed ?

A: If you still have any running process after the time limit is up, we'll consider that your program has exceeded the time limit.

Q26: Can my program create and use files in /tmp ?

A: Sure, that's what /tmp is for. But do not assume that the files will be preserved between runs of your program.

Q25: Where is the complete spec of SML/NG ? Where is the W4C Web page ?

A: The W4C is a figment of our imagination.

Q24: What is the default size ? What is the default color ?

What is the size (color) of characters that are not in the range of any size (color) tags ?

A: As stated in the spec, your program cannot make any assumption about the size (color) of these characters, so it should avoid enclosing them in any size (color) tags.

Q23: If the buildme fails, will you run the runme anyway ?

My runme script falls back to a provided binary even if the locally built binary is missing.

A: The testing process is not entirely automated. You should put such special instructions in the README file, which we will read.

Q22: Can you clarify criterion 4 ? How close would the programs have to be for speed to be relevant ?

A: The judging criteria are not firmly determined yet, but a program that consistently beats all others for size would be the winner, even if it is much slower than the competition.

Q21: Where should we send questions and bug reports ?

A: Please send your questions and remarks to

Q20: When you run the buildme script, will you be in the root directory of the submission ?

A: Yes, we will run buildme as ./buildme. Same for runme.

Q19: Can we assume that the document will fit into memory ?

A: The document will be no bigger than 5 megabytes; the machine has 256 megabytes of RAM and almost a gigabyte of swap space. If your data structures are not too wasteful, it should fit.

Q18: What happens when the first character of a document is a whitespace character ?

A: The specification says "if the previous output character was a SPC decorated ..."; this condition should be understood as false if there was no previous character.

Q17: What's wrong with the validator ?

A: Nothing. The bug is in HTML forms: they ignore leading and trailing space characters in text fields. If your documents start or end with whitespace, it is better to enclose the documents in double quotes before you submit them to the validator.

Q16: If two underlined whitespace characters of different colors follow each other, what color should be the resulting space ?

A: Section 2.2 of the spec is slightly ambiguous on this subject, but the more formal specification of section 3 is quite clear: whitespace characters are not collapsed (i.e. they generate separate space characters in the output) if they have different sizes, if (at least) one of them is in TT, if they have different levels of underline, or if they have nonzero underline and different colors. So the answer to the question is: there will be two adjacent spaces, one of each color.

Q15: Will the program always have legal SML/NG documents as input ? Do we need to detect syntax errors in the output ?

A: We will only test the programs with correct documents, so "garbage in, garbage out" is perfectly acceptable.

Q14: What has changed between the versions of the spec ?

A: Check out the news page.

Q13: How many megabytes is "a few" megabytes ? Up to a gigabyte ?

A: No. We will not run your program on anything bigger than 5 megabytes (i.e. 5*2^20 bytes).

Q12: Can we have an example SML/NG file ?

A: in addition to the examples given in the task spec, here is a sample SML/NG file.

Q11: Is the time specified when the program has to finish computation and start producing output, or is it the time when all output must be finished?

A: The specified time is for doing all the work, including input and output. It would be easy to output your first character before even looking at the input.

Q10: How does the U level stuff work ?

Is A = "<U><U><U><U>foo</U>bar</U></U></U>" equivalent to B = "<U><U><U>foobar</U></U></U>" or to C = "<U><U><U>foo</U>bar</U></U>" ?

A: A is of course equivalent to B, as section 3 of the spec clearly implies. You can use the validator page to check this.

Q9: Will language X be installed on your test machine ?

A: Check the machine configuration. If your favorite language is not there, and there's a RPM that works on Red Hat 7.1, just drop us a note with the URL of the RPM and we'll try to install it on the machine. In any case, your best bet is to submit a self-contained program (maybe including the run-time support files for your language).

Q8: When and where the competition results will be published?

A: On September 4th, at the ICFP conference and shortly thereafter on this Web site.

Q7: Don't you think this is sending the wrong message about programming ?

Programming should be about correctness and elegance, not about writing something in a hurry. Correctness is more and more important, for example in life-support systems and drive-by-wire automobiles, where there is no room for error.

A: There is no room for error in this contest either. The first thing the judges will do is test the programs and eliminate any entry that does not give correct results on all tests. Besides, the task will be simple enough that 3 days will be enough time to write, debug, and do some tweaking on your program, and get a normal amount of sleep. It was already the case for the previous years, and we see no reason to change.

Q6: What is the prize for "lightning division" ?

A: There is no special prize set aside for the lightning division, but lightning entries will be particularly worthy of consideration for the special prize. And of course it is possible for a lightning entry to win one of the first two prizes.

Q5: Is it possible to submit both a lightning entry and a regular 3-day entry ?

A: Yes.

Q4: Can I use any language I choose ?

A: Yes, as long as we can run your program on our machine. That's why prefer submissions made as stand-alone programs.

Q3: Is there any way to receive messages sent previous to my subscribing to the list?

A: No message has been sent to the list yet. The list was set up only for sending the task description to the participants.

Q2: What is the registration fee ?

A: Participation in this contest is free. There is no registration fee.

Q1: Is it correct that this time no formal registration for the ICFP is needed ?

A: Yes, it is correct. The only thing you need to participate is to submit an entry before the deadline.

Q0: Are \000 considered valid characters in text ?

A: No. Only printable ASCII characters and SPC, TAB, CR, LF can appear in a document.