Tidy up structure of briefcase
I had a spare fifteen minutes and decided that I should tidy up my monorepo. The work of tidying up is not finished; this is a small step in the right direction. TL;DR - Created a tools directory - Created a scratch directory (see README.md for more information) - Added README.md to third_party - Renamed delete_dotfile_symlinks -> symlinkManager - Packaged symlinkManager as an executable symlink-mgr using buildGo
This commit is contained in:
parent
5ec5a6da8c
commit
fabf1c9334
89 changed files with 53 additions and 41 deletions
65
scratch/data_structures_and_algorithms/dft.py
Normal file
65
scratch/data_structures_and_algorithms/dft.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
from random import choice
|
||||
|
||||
|
||||
class Node(object):
|
||||
def __init__(self, value=None, left=None, right=None):
|
||||
self.value = value
|
||||
self.left = left
|
||||
self.right = left
|
||||
|
||||
|
||||
def p(node, indent=0):
|
||||
print(indent * ' ' + '|-' + str(node.value))
|
||||
if node.left is not None:
|
||||
p(node.left, indent=indent + 2)
|
||||
if node.right is not None:
|
||||
p(node.right, indent=indent + 2)
|
||||
|
||||
|
||||
# read trees (i.e. traversing, parsing)
|
||||
# write trees (i.e. generating, printing)
|
||||
def random(d=0):
|
||||
left = None
|
||||
right = None
|
||||
|
||||
if choice([True, False]):
|
||||
left = random(d + 1)
|
||||
|
||||
if choice([True, False]):
|
||||
right = random(d + 1)
|
||||
|
||||
return Node(
|
||||
value=d,
|
||||
left=left,
|
||||
right=right,
|
||||
)
|
||||
|
||||
|
||||
################################################################################
|
||||
# DFTs can be:
|
||||
# - imperative (mutable)
|
||||
# - functional (immutable)
|
||||
# - iterative
|
||||
# - recursive
|
||||
################################################################################
|
||||
|
||||
|
||||
# Iterative
|
||||
def traverse(node, f):
|
||||
stack = [(node, 0)]
|
||||
|
||||
while len(stack):
|
||||
node, depth = stack.pop()
|
||||
f(node, depth)
|
||||
print(depth)
|
||||
|
||||
if node.left is not None:
|
||||
stack.append((node.left, depth + 1))
|
||||
if node.right is not None:
|
||||
stack.append((node.right, depth + 1))
|
||||
|
||||
|
||||
print('----------------------------------------------------------------------')
|
||||
for _ in range(10):
|
||||
traverse(random(), lambda _, d: print(d))
|
||||
print()
|
Loading…
Add table
Add a link
Reference in a new issue