the Board.calculate_longest_road() method exceeds the maximum recursion depth so maybe Player.calculate_road_length() would be better after building each road.