Results - 4th contest, saturday, august 11
Efficiency - 4
Code was on bios time... code was well-written and no complicated algorithms were involved
Elligance - 3
Pretty average as for elligance, could have been more logical in order/structure... but I still liked it
Portability - 2
I'm sure the code could be made much more portable, I had a hard time getting it to compile, nuff' said about that
Interface - 3
Average interface, nothing special... fletch's was much better
Alarmability - 4
I liked the wailing... it was more creative than some of the others; good alarm
(4+3+2+3+4) = 16/5 = 3.2
Effeciency - 3
For the most part his program was effecient, however
the time formatting methods brought this score down
because of the extra math and calculating that had
to be done on displaying times
Elligance - 5
Overall I feel his code was organized, logical, and
well-commented... 'nuff said
Portability - 1
I picked up right away that he decided to sacrifice
portability for interface; his code is Windows-
-dependant, I suppose it could be modified to work
on other platforms, but as it stands now, no.
Interface - 5
Of all the entries, his has the best interface!
(at the cost of portability and effeciency)
It's EASY TO USE, EASY TO READ, and worked
flawlessly... I especially liked the formatted
times! This was a big plus!
Alarmability - 4
I really liked this alarm, the flashing took me by
suprise :) It's not a 5, but still a good alarm
(3+5+1+5+4)/5 = 18/5 = 3.6
Effeciency - 3
His clock and alarm were simply time objects and he
checked them every second to see if they were the same;
this could have been better
Elligance - 3
The code was a little hard to read at first, but
I eventually made full sense of it, overall good
Portability - 5
I got his code to work on 3 operating systems;
Windows, Linux, OS/2... and I'm sure it would work
on others... looks very standard :)
Interface - 1
Having to set the alarm time and then the current
time, including the date was a bit frustrating,
it wasn't very nice looking or very easy to use
Alarmability - 2
Pretty average alarm; it doesn't even tell you it's
going off :/
(3+3+5+1+2)/5 = 14/5 = 2.8
Effeciency - 4
His program is small and threaded, I think his usage
of sleep functions is well-done and managed; and
both threads worked for me without having to change
anything (other than #define) :)
Elligance - 3
The program's small size helps keep the code easy to
read... but some order was not logical
Portability - 4
Like I said both threads worked, however I could not
get this to compile on my OS/2 system
Interface - 3
IMO a command-line argument for setting possibly
multiple alarms is a hassle although it is nice that
you actually can set multiple alarms
Alarmability - 3
Another average alarm, although it does let you know
when it is sounding and let's you terminate it
(4+3+4+3+3)/5 = 17/5 = 3.4
in alphabetical order
efficiency: 2. The methods he used to calculate time were a little excessive for their purposes.
elegance: 2.5. There was a lot of redundancy. GetAlarmTime() and GetInitTime() are very similar, except for a string and a variable. ParseInput used many if statements where one statement in a loop could do the same thing. sscanf() could have also handled this. On the plus side the functions use logical names and everything's indented so it's readable.
portability: 4. It compiles without problem. However, fflush(stdin) should not be used because it is non-standard and meant for output-streams only.
interface: 1.5. Date and time have to be fed into it in an unusual fashion. You must set the computer clock every time you use the program. It only shows the current time every so often, or when the alarm goes off. The only obvious way to stop it was to ctrl-break out of it. I like the idea of using the \r command to update the time, though.
alarmability: 2. It sends a repeating string of character beeps to stdout. On awindows machine this would play the chord sound (or whatever it's called) overand over again until the person being alarmed gets him/herself out of bed and ctrl-break's it. In linux beeps come out of the internal speaker. Unfortunately, due to the speed of modern CPUs the beeps all run together, producing a slight, barely noticable clicking noise (except for the last beep). A simple solution to this would be to slow down the beep frequency to a beep every quarter or half of a second.
(2+2.5+4+1.5+2)/5 = 12/5 = 2.4
efficiency: 3. No glaring problems. I didn't see the reason for using windows-specific commands, but they do the job well.
elegance: 3. Everything is organized well. He encapsulates many functions to make everything clearer. The one thing I didn't like was including the "Console.cpp" through the preprocessor command #include. Anything other than header files should be linked together, not included and compiled as one file.
Portability: 2. This program runs only on windows machines.
interface: 4.5. This interface is pretty much idiotproof. It makes it obvious what should be done to set the time and alarm. My only problem with it is when a person is in a 40x25 text mode. The text on the program doesn't wrap, so the commands to set time and exit are obscured. (However, the chances of being in a 40x25 text mode are slim. To see it in dos, type "mode 40". To return to 80x25, type "mode 80")
Alarmability: 4. While the alarm beeps are strung out in pretty much the same fashion as the other programs, under windows the beeps can't run together. I also liked the idea of flooding the screen display with red and white colors. That's definitely cymbals for the eyes.
(3+3+2+4.5+4)/5 = 16.5/5 = 3.3
efficiency: 3. No glaring problems.
elegance: 3. While int main() was used for most of the program, the program was short enough so that there wasn't a problem with readability. He also should have used stderr to output errors instead of stdout.
portability: 4.5. The program was portable enough, except for a problem handling CTRL-C in linux.
interface: 3. No great effort was made here, but it worked well enough.
alarmability: 2. It sends a repeating string of character beeps to stdout. (see *ClownPimp*'s alarmability entry for details)
(3+3+4.5+3+2) = 15.5/5 = 3.1
efficiency: 3.5. No glaring problems. The usage of the bios clock allows the compiler to show mili-seconds and micro-seconds as well as hour, minute, and seconds. (I should also mention that it worked even in a dosemu box inside linux).
elegance: 1.5. Everything is modular, making it clear what each function does. But variable and function names make it hard to tell what they're used for. And the indenting scheme is badly done, imho. There are also large amounts of redundancy, particularly when using gotoxy() and printf() over and over.
portability: 1. This program might work on other dos compilers besides turbo c, but it doesn't work on any modern compiler (gcc, VC++, Borland v5.5).
Interface: 4.5. The interface here makes itself clear what's happening, and which buttons to push. My only problem with it is its usage of scanf(). If it receives a non-number string in one of the prompts, the program effectively stalls.
Alarmability: 3.5. This program uses the bios speaker creatively to emit a screeching noise from the speaker. This could have been improved by allowing durations of large amounts of time, or by keeping the speaker on until the sleeper wakes up and slams his fist on the keyboard.
(3.5+1.5+1+4.5+3.5)/5 = 14/5 = 2.8
and now for scoring...
clownpimp:(2.8 + 2.4)/2 = 2.6
fletch:(3.6 + 3.3)/2 = 3.45
goose: (3.1 + 3.4)/2 = 3.25
vasanth: (3.2 + 2.8)/2 = 3
good luck next time, clownpimp, goose, and vasanth!