When learning a new programming language, I like the idea of having a familiar program or algorithm to reimplement in the new language. My personal favorite is a little game that I prosaically call 543. I have no idea if there is an actual name for this game as it was taught to me in a bar. 543 is a two-player deterministic board game with very simple rules. It is perfect for the minimax algorithm - there's enough complexity in minimax to use a fair amount of a language, but it can be written in a few hours if so motivated.
The rules above are for the basic version, but the number of pieces and the number of rows are variable. This makes for interesting optimizations, such as alpha-beta pruning. All languages handle the basic 12 piece board easily, but as we increase the number of pieces, the number of moves grows exponentially. I'm interested to see how Ruby, JavaScript, Java, and Scala all scale upward. I'll try to provide some data there too.
Coming soon