Solving the NYTimes Pips puzzle with a constraint solver