Python в java преобразование для первого поиска Breath - PullRequest
0 голосов
/ 08 апреля 2020

Я практикую ручное преобразование из Python do Java, и ниже приведен код класса Node, который будет использоваться для BFS.

class Node(object):
    def __init__(self, value, parent, heuristic=None, changed=None, depth=0):
        self.value = value
        self.parent = parent
        self.children = []
        self.expanded = False
        self.heuristic = heuristic
        self.changed = changed
        self.depth = depth
        self.f_n = 0

    def iter_ancestors(self):
        a = self

        while a.parent is not None:
            a = a.parent
            yield a.value

    def ancestors(self):
      return list(self.iter_ancestors())

    def generate_children(self, goal_node=None):
        digits = [int(digit) for digit in str(self.value)]
        for i in range(len(digits)):
            # subtract 1 from 1-9
            if i != self.changed:
                if digits[i] in range(1, 10):
                    self.append_child(digits[i] - 1, i, digits, goal_node)
                # add 1 to digits 0-8
                if digits[i] in range(9):
                    self.append_child(digits[i] + 1, i, digits, goal_node)

    def append_child(self, child_value, index, digits, goal_node):
        # Create new child value in a very not-elegant way.
        if index == 0:
            new_value = '{0}{1}{2}'.format(child_value, digits[1], digits[2])
        if index == 1:
            new_value = '{0}{1}{2}'.format(digits[0], child_value, digits[2])
        if index == 2:
            new_value = '{0}{1}{2}'.format(digits[0], digits[1], child_value)

        new_child = Node(value=new_value, parent=self, changed=index, depth=(self.depth+1))

        self.children.append(new_child)

Может кто-нибудь преобразовать это в java ?

Что я сделал до сих пор:

import java.util.ArrayList;

public class Node {
    int value;
    Node parent;
    ArrayList<Node> children = new ArrayList<>();
    boolean expanded = false;
    int changed;
    int depth;
}

и застрял здесь ... Пожалуйста, помогите!

...