It was my pleasure to run a small workshop style session at the
excellent
NDC-London conference.
I ran a fun C++ game which parodies the popular UK TV gameshow
Countdown.
-
In the TV version contestants take turns picking 9 random vowels/consonants
and finding the longest word in 30 seconds.
-
In my version contestants take turns picking 7 random tokens from 5 categories:
(keywords, identifiers, operators, punctuators, literals)
and writing the shortest C++ program using all 7 tokens in 8 minutes.
Contestants write their code in customized
cyber-dojo
sessions which automatically:
- checks which tokens have been used
- tells you the size of the program
- allows everyone to see all the submissions in the review
The rules:
- tokens must be the correct type; eg you cannot write "." or ... for a dot operator
- whitespace does not count towards the program's size
- additional tokens are allowed
- the program must compile
- the program is not executed
- warnings are allowed
In one round
Phil Nash selected these 7 tokens:
const vector tokens =
{
".", // operator
"switch", // keyword
"snafu", // identifier
",", // punctuator
"\"salmo\"", // literal
"goto", // keyword
"!", // operator
};
and the winning solution (54 characters long) was:
union X { X* x; };
X snafu() {
l: switch (X().x,!"salmo"); goto l;
}
In another round Hulgar Frydrych selected these 7 tokens:
const vector tokens =
{
"catch", // keyword
"->", // operator
"[", // punctuator
";", // punctuator
"--", // operator
"foobar", // identifier
"operator", // keyword
};
and the winning solution (53 characters long) was:
class c {
c operator->(){
foobar:
try{
}
catch(c x[]){
x--;
}
}
};
Can you create shorter versions?
No comments:
Post a Comment