Guest User

Untitled

a guest
Sep 18th, 2019
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | None | 0 0
  1. from anytree.importer import DictImporter
  2. from anytree.search import findall
  3. from anytree import Node
  4.  
  5. def check(a: str, b: str, tree: dict) -> bool:
  6.     root = DictImporter(nodecls=Node).import_(tree)
  7.     nodes = findall(root, filter_=lambda node: node.name in (a, b))
  8.  
  9.     # idk what to do if there are more than 2 nodes...
  10.     if len(nodes) != 2:
  11.         return False
  12.  
  13.     # checks if the nodes are parent-child related
  14.     if nodes[0].parent == nodes[1] or nodes[1].parent == nodes[0]:
  15.         return True
  16.  
  17.     return False
  18.  
  19. # -------------
  20.  
  21. tree = {
  22.         "name": "1",
  23.         "children": [
  24.             {
  25.                 "name": "2",
  26.                 "children": [
  27.                     {
  28.                         "name": "2.1",
  29.                         "children": [{"name": "3"}]
  30.                     },
  31.                     {
  32.                         "name": "2.2",
  33.                         "children": [
  34.                             {
  35.                                 "name": "2.2.1",
  36.                                 "children": [{"name": "3"}]
  37.                             }
  38.                         ]
  39.                     }
  40.                 ]
  41.             }
  42.         ]
  43.     }
  44.  
  45. # results in False
  46. print(check(a="2.1", b="3", tree))
Advertisement
Add Comment
Please, Sign In to add comment