I know this one has been done to death, but here is another solution! I had a lot of fun figuring this one out.