diff --git a/graph/graph.js b/graph/graph.js new file mode 100644 index 0000000..e69de29 diff --git a/graph/graph.py b/graph/graph.py new file mode 100644 index 0000000..44d1690 --- /dev/null +++ b/graph/graph.py @@ -0,0 +1,94 @@ +""" +graph.py create an accessible graph +""" +import json +import sys +from bs4 import BeautifulSoup as bs + +def original(graph): + html = "" + return html + +def flatten(graph): + new = list() + for n in graph: + new.append(n) + if "subitems" in n: + for m in n["subitems"]: + new.append(m) + return new + +def sntn(graph, short_name): + for n in flatten(graph): + if n["short_name"] == short_name: + return n["name"] + return None + +def connections_to(graph): + def _conns(node): + html = f"
  • " + f"{node['name']}" + if "cons" in node: + html += "" + html += "
  • " + return html + + html = "" + return html + +def get_reverse_connections(sn, graph): + cons = list() + for n in flatten(graph): + if "cons" in n and sn in n["cons"]: + cons.append(n["short_name"]) + return cons + +def connections_from(graph): + def _conns(node): + html = f"
  • " + f"{node['name']}" + html += "
  • " + return html + + html = "" + return html + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Must specify .json file") + exit() + f = open(sys.argv[1], "r") + graph = json.loads(f.read()) + html = "" + html += "

    Graph

    " + html += "

    The ideal solution to this would actually be to turn the graph into a 3D braille model so it can be printed. Due to conditions of remoteness and the time required to do such a task though, this is not possible right now.

    " + html += "

    Please do not navigate to connections manually. Use the links.

    " + html += "

    Nodes of Graph

    " + html += original(graph) + html += "

    Graph Connections (to)

    " + html += connections_to(graph) + html += "

    Graph Connections (form)

    " + html += connections_from(graph) + html += "" + soup = bs(html, "html.parser") + print(soup.prettify()) diff --git a/graph/micro.json b/graph/micro.json new file mode 100644 index 0000000..a6b55a0 --- /dev/null +++ b/graph/micro.json @@ -0,0 +1,80 @@ +[ + { + "name": "PC", + "short_name": "pc", + "cons": ["add1", "addr"] + }, + { + "name": "Add (1)", + "short_name": "add1", + "cons": ["add2"] + }, + { + "name": "4", + "short_name": "4", + "cons": ["add1"] + }, + { + "name": "Add (2)", + "short_name": "add2", + "cons": ["pc"] + }, + { + "name": "Instruction memory", + "short_name": "insmem", + "subitems": [ + { + "name": "Address", + "short_name": "addr" + }, + { + "name": "Insturction", + "short_name": "instr", + "cons": ["reg1", "reg2", "reg3", "alu"] + } + ] + }, + { + "name": "Registers", + "short_name": "regs", + "cons": ["alu", "alu", "data2"], + "subitems": [ + { + "name": "Data", + "short_name": "data" + }, + { + "name": "Register #1", + "short_name": "reg1" + }, + { + "name": "Register #2", + "short_name": "reg2" + }, + { + "name": "Register #3", + "short_name": "reg3" + } + ] + }, + { + "name": "ALU", + "short_name": "alu", + "cons": ["add2", "data"] + }, + { + "name": "Data Memory", + "short_name": "datamem", + "cons": ["data"], + "subitems": [ + { + "name": "Address", + "short_name": "addr2" + }, + { + "name": "Data", + "short_name": "data2" + } + ] + } +] diff --git a/graph/test.html b/graph/test.html new file mode 100644 index 0000000..3696a3b --- /dev/null +++ b/graph/test.html @@ -0,0 +1,551 @@ + + + + + + +

    + Graph +

    +

    + The ideal solution to this would actually be to turn the graph into a 3D braille model so it can be printed. Due to conditions of remoteness and the time required to do such a task though, this is not possible right now. +

    +

    + Please do not navigate to connections manually. Use the links. +

    +

    + Nodes of Graph +

    + +

    + Graph Connections (to) +

    + +

    + Graph Connections (form) +

    + + + diff --git a/initial-setup.sh b/initial-setup.sh new file mode 100755 index 0000000..2958361 --- /dev/null +++ b/initial-setup.sh @@ -0,0 +1,6 @@ +# Initial setup once run through pdftotext + +# replace all weird boxes with Markdown bullets +sed -i 's//*/g' $1 +# replace all characters (idk why they show up like this) with Markdown's h2 +sed -i 's/ /## /' $1 diff --git a/tree.py b/tree.py deleted file mode 100644 index 40c4475..0000000 --- a/tree.py +++ /dev/null @@ -1,1083 +0,0 @@ -from bs4 import BeautifulSoup as BS - -""" -tree = [ - ("s", [ - ("a", [("b", [])]), - ("d", []), - ("c", [ - ("e", - [ - ("f", [("h", [])]), - ("g", [("i", [])]), - ] - )], - )]) -] -""" -""" -tree = [ - ("z (root, anscestor of a)", [ - ("y", [("x (leaf)", []), ("w (leaf)", [])]), - ("v (anscestor of a)", [("u (leaf)", [])]), - ("t (anscestor of a, parent of a)", - [("s (sibling of a, leaf)", []), ("r (sibling of a, leaf)", []), ("a (descendant of a, anscestor of a)", [ - ("q (child of a, desandant of a)", [ - ("o (decendant of a, leaf)", []), - ("n (decendant of a, leaf)", []), - ("m (decendant of a, leaf)", []), - ]), - ("p (child of a, desendant of a, leaf)" , []) - ])]), - ]) -] -""" -""" -tree = [ - ("4 (depth 0)", [ - ("1 (depth 1)", [ - ("0 (depth 2)", []), - ("0 (depth 2)", []), - ]), - ("3 (depth 1)", [ - ("2 (depth 2)", [ - ("1 (depth 3)", [ - ("0 (depth 4)", []), - ]), - ("0 (depth 3)", []), - ]), - ("0 (depth 2)", []), - ]), - ]) -] -""" -''' -tree = [ - ("no name", [ - ("1", [ - ("1", []), - ("2", []), - ]), - ("2", []), - ("3", [ - ("1", []), - ("2", []), - ("3", []), - ]), - ]) -] -''' - -''' -tree = [ - ("z", [ - ("v (subtree rooted at v)", [ - ("y (subtree rooted at v, left subtree of v)", [ - ("v (subtree rooted at v, left subtree of v", []), - ("u (subtree rooted at v, left subtree of v", []), - ]), - ("x (subtree rooted at v, right subtree of v)", [ - ("w (subtree rooted at v, right subtree of v)", []), - ]), - ]), - ("a", [("b", []), ("c", [])]), - ]) -] -''' - -''' -tree = [ - ("v (3)", [ - ("a (2)", [ - ("e (1)", [ - ("g (0)", []), - ("h (0)", []), - ]), - ("f (1)", [ - ("i (0)", []), - ]), - ]), - ("b (1)", [ - ("c (0)", []), - ("d (0)", []), - ]), - ]) -] -''' - -''' -tree = [ - ("A", [ - ("B", [ - ("D", []), - ("E", []), - ]), - ("C", [ - ("F", []), - ]), - ]) -] -''' - -''' -tree = [ - ("5", [("3", []), ("6", [])]) -] -tree = [ - ("5", [ - ("3", [ - ("2", []), - ("6", []), - ]), - ("8", []), - ]) -] - -tree = [ - ("5", [ - ("10 (right)", [ - ("20 (right)", [ - ("30 (right)", [ - ("25 (left)", []), - ]) - ]), - ]), - ]) -] - -tree = [ - ("5", []) -] - -tree = [ - ("500", [ - ("200", [ - ("100", []), - ("300", [ - ("250", []), - ("350", []), - ]), - ]), - ("700", [ - ("600", [ - ("650 (keys in this subtree would be >600 , <700)", []), - ("560", []), - ]), - ("800", []), - ]), - ]) -] -''' - -''' -tree = [ - ("3", [ - ("2", []), - ("8", [ - ("5", [ - ("4", []), - ("6", [ - ("7 (right)", []), - ]), - ]), - ("9", []), - ]), - ]) -] -''' - -''' -tree = [ - ("5", [ - ("8 (right)", [ - ("10 (right)", []), - ]), - ]) -] -''' - -''' -tree = [ - ("5", [ - ("2", [ - ("1", []), - ("3", []), - ]), - ("7", [ - ("6", []), - ("8", []), - ]), - ]) -] -''' - -''' -tree = [ - ("1", [ - ("2 (right)", [ - ("3 (right)", [ - ("4 (right)", [ - ("5 (right)", [ - ("6 (right)", [ - ("7 (right)", [ - ("8 (right)", []), - ]), - ]), - ]), - ]), - ]), - ]), - ]) -] -''' - -tree = [ - ("5", [ - ("3", [ - ("2 (left)", []), - ]), - ("8", [ - ("7", []), - ("9", []), - ]), - ]), -] - -''' -tree = [ - ("5", [ - ("3", [ - ("1 (left)", []), - ]), - ("10", []), - ]) -] -''' - -''' -tree = [ - ("5", [ - ("1", []), - ("10", []) - ]), -] -''' - -#tree = [("1", [])] - -''' -tree = [ - ("4", [ - ("2", []), - ("10", [ - ("7 (left)", [ - ("6", [ - ("5 (left)", []), - ]), - ("8", []), - ]), - ]), - ]), -] -''' - -''' -tree = [ - ("4", [ - ("2", []), - ("7", [ - ("6", [ - ("5 (left", []), - ]), - ("8", []), - ]), - ]), -] -''' - -''' -tree = [ - ("20", [ - ("6", [ - ("2", []), - ("10", [ - ("7", [ - ("8 (right)", []), - ]), - ("12", []), - ]), - ]), - ("...", []), - ]), -] -''' - -''' -tree = [ - ("30", [ - ("2", [ - ("1", []), - ("6", [ - ("...", []), - ("14", [ - ("11", [ - ("7", [ - ("9 (right)", [ - ("8", []), - ("10", []), - ]), - ]), - ("12", []), - ]), - ("...", []), - ]), - ]), - ]), - ("...", []), - ]) -] -''' - -''' -tree = [ - ("30", [ - ("2", [ - ("1", []), - ("7", [ - ("...", []), - ("14", [ - ("11", [ - ("9", [ - ("8", []), - ("10", []), - ]), - ("12", []), - ]), - ("...", []), - ]), - ]), - ]), - ("...", []), - ]), -] -''' - -''' -tree = [ - ("node", [ - ("node", [ - ("node", []), - ("node", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), -] -''' - -''' -tree = [ - ("node", [ - ("node", [ - ("node", [ - ("...", [ - ("node", [ - ("node", [ - ]), - ]), - ]), - ]), - ]) - ]), -] -''' - -''' -tree = [ - ("node", [ - ("node", [ - ("node", [ - ("node", []), - ("node", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), - ("node", [ - ("node", [ - ("node (right)", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), - ]) -] -''' - -''' -tree = [ - ("node", [ - ("node (right)", [ - ("node (right)", [ - ("node (right)", [ - ("node (right)", []), - ]), - ]), - ]), - ]), -] -''' - -''' -tree = [ - ("1", [ - ("2", []), - ("2", []), - ]), -] -''' - -''' -tree = [ - ("5", [ - ("3", [ - ("2", []), - ("4", []), - ]), - ("7", [ - ("6 (left)", []), - ]), - ]), -] -''' - -''' -tree = [ - ("4", [ - ("2", [ - ("1", []), - ("3", []), - ]), - ("6", [ - ("5", []), - ("7", []), - ]), - ]), -] -''' - -""" -tree = [ - ("root node", [ - ("left subtree (7 nodes)", [ - ("node", [ - ("node", [ - ("node (left)", []), - ]), - ("node", []), - ]), - ("node", [ - ("node (left)", []), - ]), - ]), - ("right subtree (31 nodes)", [ - ("node", [ - ("node", [ - ("node", [ - ("node", []), - ("node", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), - ("node", [ - ("node", [ - ("node", []), - ("node", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), - ]), - ("node", [ - ("node", [ - ("node", [ - ("node", []), - ("node", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), - ("node", [ - ("node", [ - ("node", []), - ("node", []), - ]), - ("node", [ - ("node", []), - ("node", []), - ]), - ]), - ]), - ]), - ]), -] -""" - -tree = [ - ("5", [ - ("3", [ - ("1", []), - ("4", []), - ]), - ("7", [ - ("6", []), - ("8", []), - ]), - ]), -] - -tree = [ - ("3", [ - ("1", []), - ("5", [ - ("4", []), - ("7", [ - ("6", []), - ("8", []), - ]), - ]), - ]), -] - -''' -tree = [ - ("v (root; h=k)", [ - ("u (h=k-1)", [ - ("left left (h=k-1)", [ - ("T1 (h=h-2)", [ - ("w", []), - ]), - ]), - ("T2 (h=k-2)", []), - ]), - ("T3 (h=k-2)", []), - ]), -] -''' - -''' -tree = [ - ("root", [ - ("left", [ - ("...", []), - ]), - ("right", [ - ("right left", [ - ("...", [ - ("w", []), - ]), - ]), - ("right right", [ - ("...", []), - ]), - ]), - ]), -] -''' -''' -tree = [ - ("v", [ - ("left", [ - ("left left", [ - ("...", []), - ]), - ("left right", [ - ("...", [ - ("w\\*", []), - ]), - ]), - ]), - ("right", [ - ("...", []), - ]), - ]), -] -''' - -''' -tree = [ - ("v (root)", [ - ("T1 (left; h=k-2)", []), - ("node (right; h=k)", [ - ("T2 (right left; h=k-2)", [ - ("w", []), - ]), - ("T3 (right right)", [ - ]), - ]), - ]), -] -''' - -''' -tree = [ - ("v (h=k)", [ - ("u (h=k-1)", [ - ("T1 (h=k-2)", []), - ("w (h=k-2)", [ - ("T2 (h=k-3)", [ - ("Insertion here or... one other place", []), - ]), - ("T3 (h=k-3)", [ - ("Other possible insertion place.", []), - ]), - ]), - ]), - ("T4 (h=k-2)", []), - ]), -] -''' - -''' -tree = [ - ("a", [ - ("c (h=k)", [ - ("b", [ - ("T1", []), - ("T2", [ - ("possible insertion", []), - ]), - ]), - ("T3 (h=k-3)", [("possible insertion (not part of height)", [])]), - ]), - ("T4 (h=k-2)", []), - ]), -] -''' - -''' -tree = [ - ("c", [ - ("b (h=k-1)", [ - ("T1 (h=k-2)", []), - ("T2 (h=k-2)", [ - ("possible insertion point", []), - ]), - ]), - ("a (h=k-1)", [ - ("T3 (h=k-2)", [ - ("possible insertion", []), - ]), - ("T4 (h=k-2)", []), - ]), - ]), -] -''' - -''' -tree = [ - ("X1", [ - ("...", []), - ("node", [ - ("p (left)", [ - ("X2 (arrow to X1)", [ - ("... (right)", []), - ]), - ]), - ]), - ]), -] -''' - -''' -tree = [ - ("root", [ - ("... (g; green)", [ - ("... (r; red)", [ - ("continues on with no detail", []), - ("o (orange)", [ - ("continues on with no detail", []), - ("node", [ - ("b (blue; left)", [ - ("continues on with no detail", []), - ("continues oN with no detail", []), - ]), - ]), - ]), - ]), - ("continues on with no detail", []), - ]), - ("continues on with no detail", []), - ]), -] -''' - -''' -tree = [ - ("node", [ - ("node", [ - ("...", []), - ("...", [ - ("5 (left)", []), - ]), - ]), - ("...", [ - ("14 (right; deleted)", []), - ]), - ]), -] -''' - -''' -tree = [ - ("1", [ - ("2", [ - ("4", [ - ("8", []), - ("9", []), - ]), - ("5", [ - ("10", []), - ("11", []), - ]), - ]), - ("3", [ - ("6", [ - ("12", []), - ("13", []), - ]), - ("7", [ - ("14", []), - ("15", []), - ]), - ]), - ]), -] -''' - -''' -tree = [ - ("1", [ - ("2", [ - ("4", [ - ("8", [ - "14", "15" - ]), - "9" - ]), - ("5", [ - ("10 (left)", [ - ("16 (left)", [ - "20", "21" - ]), - ]), - ]), - ]), - ("3", [ - ("6", [ - ("11", [ - "17", ("18", ["22 (right)"]) - ]), - "12" - ]), - ("7", [("13 (right)", ["19"])]), - ]), - ]), -] -''' - -''' -tree = [ - ("root", [ - "child (right)" - ]), -] -''' - -''' -tree = [ - ("root", [ - ("child", [ - ("grandchild", [ - ("great granchild", []), - ("great granchild", []), -]), - ("grandchild", [ - ("great granchild", []), - ("great granchild", []), - ]), - ]), - ("child", [ - ("grandchild", [ - ("great granchild", []), - ("great granchild", []), - ]), - ("grandchild", [ - ("great granchild", []), - ("great granchild", []), -]), - ]) - ]) -] -''' - -''' -tree = [ - ("...", [ - ("node at arbitrary depth", [ - "child node", - "child node" - ]), - ("node at arbitrary depth", [ - "child node", - "child node" - ]), - ("node at arbitrary depth", [ - "child node", - "child node", - ]), - ("node at arbitrary depth", [ - "child node (left)" - ]), - ]), -] -''' - -''' -tree = [ - ("1", [ - ("3 (highlighted arrow to 2)", [ - ("2", [ - ("7", []), - ]), - ("9", []), - ]), - ("6 (highlighted connection to 5)", [ - ("5", []), - ("8", []), - ]), - ]) -] -''' - -''' -tree = [ - ("root (complete tree)", [ - ("... (anbiguous number of node/depth)", [ - ("10", [ - ("12", ["..."]), - ("20", ["..."]) - ]) - ]), - ("... (anbiguous number of node/depth)", [ - ("11", [ - ("13", ["..."]), - ("19", ["..."]), - ]) - ]), - ]), -] -''' - -''' -tree = [ - ("root", [ - ("child", [ - ("grandchild", [ - "great grandchild", - "great grandchild", - ]), - ("grandchild", [ - "great grandchild", - "great grandchild", - ]), - ]), - ("child", [ - ("grandchild", [ - "inserted node" - ]), - ("grandchild", []), - ]), - ]), -] -''' - -''' -tree = [ - ("1", [ - ("2", [ - "..." - ]), - ("3", [ - ("6", [ - ("10 (left)", []), - ]), - ("8", []), - ]), - ]) -] -''' - -''' -tree = [ - ("?", [ - ("7", [ - ("10", []), - ("12", []), - ]), - ("6 (arrow towards root)", [ - ]), - ]), -] -''' - -''' -tree = [ - ("2", [ - ("4", [ - ("7", []), - ("8", []), - ]), - ("3", [ - ("5 (left)", []), - ]), - ]), -] -''' - -''' -tree = [ - ("0", [ - ("1", [ - ("3", [ - ("7", []), - ("8", []), - ]), - ("4", [ - ("9", []), - ("10", []), - ]), - ]), - ("2", [ - ("5", [ - ("11 (left)", []), - ]), - ("6", []), - ]), - ]), -] -''' - -''' -tree = [ - ("2", [ - ("7", [ - "8", "10" - ]), - ("6", [ - ("9", []), - ("1", []), - ]), - ]), -] -''' - -''' -tree = [ - ("1 (2 is crossed out, arrow to 2)", [ - ("7", [ - "8", "10" - ]), - ("2 (6 is crossed out, arrow to 6)", [ - "9", "6 (1 is crossed out)" - ]), - ]), -] -''' - -''' -tree = [ - ("7", [ - ("8", [ - "11", "10" - ]), - ("9", [ - ]), - ]), -] -''' - -tree = [ - ("0", [ - ("1", [ - ("3", [ - ("7", [ - ("15", []), - ("16", []), - ]), - ("8", [ - ("17", []), - ("18", []), - ]), - ]), - ("4", [ - ("9 (label: last internal node)", [ - ("19", []), - ("20", []), - ]), - ("10", []), - ]), - ]), - ("2", [ - ("5", [ - ("11", []), - ("12", []), - ]), - ("6", [ - ("13", []), - ("14", []), - ]), - ]), - ]), -] - -ID = "t8" - -def _generate_tree(tup): - html = "" - html += "
  • " - if type(tup) == str: - html += "{0}
  • ".format(tup, ID, tup.split(" ")[0]) - return html - html += "{0}".format(tup[0], ID, tup[0].split(" ")[0]) - if len(tup[1]) > 0: - html += "" - html += "" - return html - -def generate_tree(treeobj): - html = "" - return html - -print("") -bs = BS(generate_tree(tree[0]), "html.parser") -print(bs.prettify()) -print("")