ohhhh boy, figuring out how to have the ball decide which path to take took me so long. Between bugs, faulty assumptions and non-deterministic physics, there where a lot of headaches involved. The final implementation uses checkpoints to gauge which direction is desirable at any given point and the balls physics isn't actually simulated when the ball actually takes its shot, it just follows the path of the shot it decided to take.
The most obvious place the checkpoint system has issues is the level with two possible paths. There's actually only 1 checkpoint stretched between the two paths, so if you block the bottom path from the right side the ball will reach the checkpoint via the bottom path and wont want to go around.
The ideal solution would probably be to use a path finding algorithm to determine the shortest path to the hole (taking the size of the ball into account), it would also have draw backs, but would probably be a big improvement. Anyway, hindsight is 20/20. I'm glad you enjoyed it!