MAZE_GOAL = (0, 4)


PUZZLE_GOAL = (
    (0, 1, 2),
    (3, 4, 5),
    (6, 7, 8)
)


def is_goal_maze(state):
    return MAZE_GOAL == state


def is_goal_sudoku(state):
    y, x = 10, 10
    for i, s in enumerate(state):
        if 0 in s:
            (y, x) = (i, s.index(0))
            break
    return (y, x) == (10, 10)


def is_goal_queens(state):
    return sum(map(sum, state)) == len(state)


def is_goal_puzzle(state):
    return PUZZLE_GOAL == state