Google Code Jam 2012
code.google.com
code.google.com
That being said, #4 is the only one that tripped me up - I'm think the solution is very simple and elegant but all I can think in my head is something along the lines of ray-tracing. Back to the drawing board!
Looking at go-hero.net, it's interesting how the successful, popular languages in the past compare against the TIOBE index; what people want to use versus what the _have_ to use.