Skip to content

Instantly share code, notes, and snippets.

@Benhgift
Created October 21, 2016 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Benhgift/13aef3e47418868ae27964dcc0165b65 to your computer and use it in GitHub Desktop.
Save Benhgift/13aef3e47418868ae27964dcc0165b65 to your computer and use it in GitHub Desktop.
from clint.textui import colored
from time import sleep
from random import randint
def s(divisor=1):
sleep(.5*divisor)
def get_diff_elems(list1, list2):
return [x == y for x, y in zip(list1, list2)]
def pprint_diff_list(diff, my_list, tab_level=0, state={'s':.3}):
if tab_level > 0:
print(tab_level*'\t', end='')
for i, elem in enumerate(my_list):
text = str(elem)
if not diff[i]:
text = colored.green(text)
print(text, end=' ')
print()
def print_recur_level(A, n, state):
s(state['s'])
print((len(A)-n+5) * ' ' + colored.red(str(len(A)-n)))
def _heap_perm_(n, A, state):
print_recur_level(A, n, state)
if n == 1:
print_recur_level(A, n, state)
yield A
else:
for i in range(n-1):
for hp in _heap_perm_(n-1, A, state):
print_recur_level(A, n, state)
yield hp
j = 0 if (n % 2) == 1 else i
A[j],A[n-1] = A[n-1],A[j]
for hp in _heap_perm_(n-1, A, state):
print_recur_level(A, n, state)
yield hp
def main():
state = {'s':.4}
s(state['s'])
print("hello CS350")
list_len = 5
prev_list = list(range(list_len))
for i, x in enumerate(_heap_perm_(list_len, list(range(list_len)), state)):
s(state['s'])
diff = get_diff_elems(prev_list, x)
pprint_diff_list(diff, x, 1, state)
prev_list = x[:]
if __name__=='__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment