diff --git a/README.md b/README.md new file mode 100644 index 0000000..bac5a89 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# graphs-and-tables + +Some tools I developed while doing transcritpions of slides for a blind student at SFU (Simon Fraser University). + diff --git a/giant-ass-table.py b/giant-ass-table.py new file mode 100644 index 0000000..b43d134 --- /dev/null +++ b/giant-ass-table.py @@ -0,0 +1,47 @@ +from bs4 import BeautifulSoup as BS + +table = list() + +with open("table.csv", "r") as f: + for row in f: + fil = list() + for cell in row.split(","): + if cell[:2] == "$$": + cell = cell.replace("$$", "") + cell = "{% katex %}" + cell + cell = cell + "{% endkatex %}" + fil.append(cell) + table.append(fil) + +def generate_table(table): + html = "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + + for row in table: + html += "" + for cell in row: + html += "" + html += "" + + html += "
ExponentFractionValue
DescriptionBit Representation/th>" + html += "expE{% katex %}2^{E}{% endkatex %}fracM{% katex %}M 2^{E}{% endkatex %}VDecimal
" + cell + "
" + return html + +print("") +bs = BS(generate_table(table), "html.parser") +print(bs.prettify()) +print("") diff --git a/table.csv b/table.csv new file mode 100644 index 0000000..efbeaaa --- /dev/null +++ b/table.csv @@ -0,0 +1,29 @@ +zero,0 000 00,0,-2,$$1/4$$,$$0/4$$,$$0/4$$,$$0/16$$,0,0.0 +Smallest positive denormalized,0 000 01,0,-2,$$1/4$$,$$1/4$$,$$1/4$$,$$1/16$$,$$1/16$$,0.0625 +,0 000 10,0,-2,$$1/4$$,$$2/4=1/2$$,$$2/4=1/2$$,$$2/16$$,$$2/16$$,0.125 +Largest positive denormalized,0 000 11,0,-2,$$1/4$$,$$3/4$$,$$3/4$$,$$3/16$$,$$3/16$$,0.1875 +Smallest positive normalized,0 001 00,1,-2,$$1/4$$,$$0/4$$,$$4/4=1$$,$$4/16$$,$$4/16$$,0.25 +,0 001 01,1,-2,$$1/4$$,$$1/4$$,$$5/4$$,$$5/16$$,$$5/16$$,0.3125 +,0 001 10,1,-2,$$1/4$$,$$2/4=1/2$$,$$6/4$$,$$6/16$$,$$6/16$$,0.375 +,0 001 11,1,-2,$$1/4$$,$$3/4$$,$$7/4$$,$$7/16$$,$$7/16$$,0.4375 +,0 010 00,2,-1,$$1/2$$,$$0/4$$,$$4/4=1$$,$$4/8$$,$$4/8$$,0.5 +,0 010 01,2,-1,$$1/2$$,$$1/4$$,$$5/4$$,$$5/8$$,$$5/8$$,0.625 +,0 010 11,2,-1,$$1/2$$,$$3/4$$,$$7/4$$,$$7/8$$,$$7/8$$,0.875 +One,0 011 00,3,0,1,$$0/4$$,$$4/4=1$$,$$4/4$$,$$4/4$$,1.0 +,0 011 01,3,0,1,$$1/4$$,$$5/4$$,$$5/4$$,$$5/4$$,1.25 +,0 011 10,3,0,1,$$2/4=1/2$$,$$6/4$$,$$6/4$$,$$6/4$$,1.5 +,0 011 11,3,0,1,$$3/4$$,$$7/4$$,$$7/4$$,$$7/4$$,1.75 +,0 100 00,4,1,2,$$0/4$$,$$4/4=1$$,$$8/4$$,$$8/4$$,2 +,0 100 01,4,1,2,$$1/4$$,$$5/4$$,$$10/4$$,$$10/4$$,2.5 +,0 100 10,4,1,2,$$2/4=1/2$$,$$6/4$$,$$12/4$$,$$12/4$$,3 +,0 100 11,4,1,2,$$3/4$$,$$7/4$$,$$14/4$$,$$14/4$$,3.5 +,0 101 00,5,2,4,$$0/4$$,$$4/4=1$$,$$16/4$$,$$16/4$$,4 +,0 101 01,5,2,4,$$1/4$$,$$5/4$$,$$20/4$$,$$20/4$$,5 +,0 101 10,5,2,4,$$2/4=1/2$$,$$6/4$$,$$24/4$$,$$24/4$$,6 +,0 101 11,5,2,4,$$3/4$$,$$7/4$$,$$28/4$$,$$28/4$$,7 +,0 110 00,6,3,8,$$0/4$$,$$4/4=1$$,$$32/4$$,$$32/4$$,8 +,0 110 01,6,3,8,$$1/4$$,$$5/4$$,$$40/4$$,$$40/4$$,10 +,0 110 10,6,3,8,$$2/4=1/2$$,$$6/4$$,$$48/4$$,$$48/4$$,12 +Largest positive normalized,0 110 11,6,3,8,$$3/4$$,$$7/4$$,$$56/4$$,$$56/4$$,14 ++ infinity,0 111 0,-,-,-,-,-,-,$$\infty$$,- +NaN,,-,-,-,-,-,-,NaN,- diff --git a/to.py b/to.py new file mode 100644 index 0000000..aee134b --- /dev/null +++ b/to.py @@ -0,0 +1,18 @@ +gid = "g12" +graph = { + "a": ["b"], + "b": ["a", "c"], + "c": ["b", "d", "e", "s"], + "d": ["c", "s"], + "e": ["c", "g"], + "f": ["h"], + "g": ["e", "h", "t"], + "h": ["f", "g", "t"], + "s": ["c", "d"], + "t": ["g", "h"], +} + +print("node|connections") +print("---|---") +for node,vertexes in graph.items(): + print("{1}|{2}".format(gid, node, ",".join(["{0}".format(v, gid) for v in vertexes]))) diff --git a/tree.py b/tree.py new file mode 100644 index 0000000..40c4475 --- /dev/null +++ b/tree.py @@ -0,0 +1,1083 @@ +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("")