Иметь ДВА класса на Java для 8 Решить головоломку?

Я пытаюсь решить 8 головоломок с помощью A* в Java. Я прочитал об этом здесь Решение 8 головоломок с помощью алгоритма A*.

Я создаю доску типа данных с таким API

    public Board(int[][] tiles)            // create a board from an n-by-n array of tiles,
                                           // where tiles[row][col] = tile at (row, col)
    public String toString()               // string representation of this board
    public int tileAt(int row, int col)    // tile at (row, col) or 0 if blank
    public int size()                      // board size n
    public int hamming()                   // number of tiles out of place
    public int manhattan()                 // sum of Manhattan distances between tiles and goal
    public boolean isGoal()                // is this board the goal board?
    public boolean equals(Object y)        // does this board equal y?
    public Iterable<Board> neighbors()     // all neighboring boards
    public boolean isSolvable()            // is this board solvable?

    public static void main(String[] args) // unit testing (required)
}

(согласно) https://www.cs.princeton.edu/courses/archive/spr18/cos226/assignments/8puzzle/index.html.

Я не понимаю, почему мне нужно иметь ДВА Java-класса, Board и Solver. Я понимаю, что класс Board будет иметь бесчисленное количество методов для хамминга, манхэттенского расстояния и т.д. Но почему? Я знаю, что будет создано несколько объектов на доске, каждый из которых будет представлять различное состояние головоломки "8 Решений" с различными присутствующими плитками, но зачем мне два класса? Как именно класс решателя будет решать и реализовывать / использовать класс Board? Спасибо.

0 ответов

Другие вопросы по тегам