Dynamic programming solution for cross river algorithm
You have a small bug. Consider a river like ******.. such that the last spot is not landable. You can still cross the river by jumping beyond the end of the river from the last landable stone, but your code thinks that you cannot.

The solution to this is to do a top down DP. Define dp(position, speed) to be true if you can cross the river starting from position with given speed. You want to find dp(0,0), which you can do easily with memoised recursion.