diff options
author | Georg Brandl <georg@python.org> | 2010-12-30 17:22:33 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2010-12-30 17:22:33 (GMT) |
commit | 4cf83f4d128bd40ebe3b6e59ced4895f554d18de (patch) | |
tree | ccc6e4c3e03a711c45f4badf811314231d646d95 /Demo/threads/fcmp.py | |
parent | d1fc34d563a9fd06a78226b1bb4e56286c70e035 (diff) | |
download | cpython-4cf83f4d128bd40ebe3b6e59ced4895f554d18de.zip cpython-4cf83f4d128bd40ebe3b6e59ced4895f554d18de.tar.gz cpython-4cf83f4d128bd40ebe3b6e59ced4895f554d18de.tar.bz2 |
Remove some of the old demos. (Put a few somewhere else.)
Diffstat (limited to 'Demo/threads/fcmp.py')
-rw-r--r-- | Demo/threads/fcmp.py | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/Demo/threads/fcmp.py b/Demo/threads/fcmp.py deleted file mode 100644 index bc2e3ed..0000000 --- a/Demo/threads/fcmp.py +++ /dev/null @@ -1,64 +0,0 @@ -# Coroutine example: controlling multiple instances of a single function - -from Coroutine import * - -# fringe visits a nested list in inorder, and detaches for each non-list -# element; raises EarlyExit after the list is exhausted -def fringe(co, list): - for x in list: - if type(x) is type([]): - fringe(co, x) - else: - co.back(x) - -def printinorder(list): - co = Coroutine() - f = co.create(fringe, co, list) - try: - while 1: - print(co.tran(f), end=' ') - except EarlyExit: - pass - print() - -printinorder([1,2,3]) # 1 2 3 -printinorder([[[[1,[2]]],3]]) # ditto -x = [0, 1, [2, [3]], [4,5], [[[6]]] ] -printinorder(x) # 0 1 2 3 4 5 6 - -# fcmp lexicographically compares the fringes of two nested lists -def fcmp(l1, l2): - co1 = Coroutine(); f1 = co1.create(fringe, co1, l1) - co2 = Coroutine(); f2 = co2.create(fringe, co2, l2) - while 1: - try: - v1 = co1.tran(f1) - except EarlyExit: - try: - v2 = co2.tran(f2) - except EarlyExit: - return 0 - co2.kill() - return -1 - try: - v2 = co2.tran(f2) - except EarlyExit: - co1.kill() - return 1 - if v1 != v2: - co1.kill(); co2.kill() - return cmp(v1,v2) - -print(fcmp(range(7), x)) # 0; fringes are equal -print(fcmp(range(6), x)) # -1; 1st list ends early -print(fcmp(x, range(6))) # 1; 2nd list ends early -print(fcmp(range(8), x)) # 1; 2nd list ends early -print(fcmp(x, range(8))) # -1; 1st list ends early -print(fcmp([1,[[2],8]], - [[[1],2],8])) # 0 -print(fcmp([1,[[3],8]], - [[[1],2],8])) # 1 -print(fcmp([1,[[2],8]], - [[[1],2],9])) # -1 - -# end of example |