Created
October 21, 2016 19:27
-
-
Save Benhgift/13aef3e47418868ae27964dcc0165b65 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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