A recent interview challenge I did, which I've now since refactored based on what I learned from reading the Well Grounded Rubyist.