To encourage people at CUSEC to learn to program, and have some fun doing it!
To solve the most problems while gaining the most points.
So far, there will be 10 small problems, and 3 large problems.
Two large 3 topping pizzas, and a lot of street cred!
Since this is for fun and a small prize, teams will be allowed. Here are the rules:
Each team may contain up to 3 members, no more.
Every team member must be a CUSEC attendee.
No person shall compete on more than one team.
Each team must have a name.
All scores are relative to the average. For example if the average length of a program is 50 characters, and your's is 15, you will get a better score.
Each solution will be automatically scored in the following categories:
Correctness of solution
Speed of execution
Number of characters in source code (excluding new-lines,
semicolons and whitespace)
Each solution will also be manually scored in the following:
Code style
Creativity
Solutions with the highest score win, and the team with the highest overall score wins the prize. If a team does not submit a solution to a problem, their score will be zero.
Your score will range from -5 to 5 in each category, if you are the worst (or close to it) your score will be -5, and if you are the best you will get a score of 5.
Your score will range from -15 to 15 in each category, if you are the worst (or close to it) your score will be -15, and if you are the best you will get a score of 15.
Each solution must:
Accept the following command-line arguments (see example for exact format):
--info, -i Print the version of your program, as well as
team members,
and the problem your solution is for
--iomode, -m Print the input/output mode that your program supports
--output <file> If your program is outputting to a file, it will output to the specified file
Accept input from a testing program, either through the standard input or from a file.
Output the correct answer to either the standard output, or to a file.
Include full source code.
Compile (if required) and run on my linux box. (Ubuntu Karmic)
Be executable from a script. Basically make sure your program is a binary, or include a shebang line for scripts (“#!/bin/sh”, “#!/usr/bin/python”)
Solutions for small problems must be written entirely by the team, no external libraries permitted other than libraries providing only the following:
File input/output (like Boost Filesystem Library, or libgio)
Common collection types (like lists, stacks, trees)
Threading
Logging
Contact me at programming@sellyourvote.ca to see if any other library is allowed
This is not meant to limit you from using built-in libraries in languages, like the standard template library, or java.util, but to level the playing field between languages like C versus java.
Code from these libraries will not be included in scoring.
Solutions for large problems may include external libraries, provided they come with the source code and will compile on my system. Please try to write as much of your own code as possible though, since part of the scoring is on creativity.
Code from these libraries, other than those permitted in small problems, will be included in scoring.
Send an email with your team name, as well as the names and emails of all team members to: programming@sellyourvote.ca
Each solution shall get three attempts to run on my computer, to sort of compilation issues, interpreter problems, etc.
Once a solution is deemed to be running, each team shall have three attempts to fix bugs in their program. Output from their program shall be returned to the team after each run. The run with the best score shall be used as the score for that solution.
Each submission will be sent to programming@sellyourvote.ca in any of the following formats:
.rar
.tar.gz
.tar.bz2
.lzma
.zip
The submission may not contain ANY executables. The only exceptions are the standard “./configure” and associated build tools and only then if required by your submission.
The submission archive should include a quick description of the program and how it works. If required, the archive should also include compilation instructions in a step by step manor.
$ solution --info
Solution
For: 1
Team Name: Some Team Name
Team Members: First Last,
First Last, First Last
Version: 1.0a
If your solution uses files:
$
solution --iomode
file
If your solution uses standard input/output
$
solution --iomode
stdio