Updated with an analyzing class to get a sense of how close my algorithm is to optimal