stolen ruby solution to problem 1