Thinking on the problem

First look at the problem kind of disappoints me. It is, you know, kind of easy. Frankly, I believe that a capable coder can build something usable (even relatively reliable) in about 2 days of intensive coding, or even 2 days of code-and-Age-Of-Empire-II (why Empire II? Because ACM has just cleaned up the server room, and a copy of oh-so-old Empire II was in there! Gosh, it brings back so many sweet memories).

Thus, any person with some understandings of programming should be able to design something, let's see, functional (aka. run and sort of do what expected, not non-side-effect functional). Thus, I would say that the contest is no longer about fulfill the expectation (which is kind of trivial), but about exceeding it. And a good suit for demonstration (and, of course, a comprehensible demonstration).

Why am I writing those here? First, because I don't want to waste a couple of bytes on my HD to store those things; neither do I want to kill the trees to write them down (programmers take this kind of note should be executed for harming the environment). So, I want to waste some of the server's disk space to store this note here :D. Secondly, let's hope everyone else will do something similar, and have a healthy competition going on, with even some pre-scoring debates if possible.

Anyway, for myself, my own guideline for the design would include:

  • abstraction: how far away can I make logic code from dirty code? I would love to write logic code in, let's see, Ocaml or F# or, grasp, Scheme :D. Okay, granted, you don't need Scheme to write this. Elegance and power is for real challenge, eh?
  • reusability: I would assume that this is a part of a grander scheme (small s) of things, so I want to have a design that can be extend naturally to other parts
  • creativity: I hate UML for some reason that I myself don't know (as someone says, irrational hatred). Thus, I am considering employing some other scheme of presentation. Something powerful enough to express the whole procession (plus possible use cases) in one slide, but simple enough to be explained in 3 minutes (2 minutes for explaining the slide, and 10 minutes for lame jokes. I am preparing a huge list of lame jokes for the demonstration).
  • Size: Okay, it is easy to write 10K lines of code to do this. Let's figure out how to solve it in 500 lines of code. Granted, this isn't LISP, so 500-line is kind of impossible. But, as short as possible
  • Stupidity: It's everywhere, admittedly. Let's put some into the design, so that the judges will have things to ask about, and I have some chances to throw out even more lame jokes (Agreed, I have put too many of them in this blog already).

Long list. Let's see what I can get before midnight tonight. Hm, no homework, no test, nothing tomorrow, let's pull an all-night nethack. I mean, all-night design (and possibly nethack and/or Empire II. Hm, I think there must be a copy of Age of Mythology lying around in ACM room, can someone try to find that for me? I want to replay that game!!!!).

~!

Hello!
Look forward to exciting & learning week !