File tree Expand file tree Collapse file tree 8 files changed +54
-48
lines changed
Expand file tree Collapse file tree 8 files changed +54
-48
lines changed Original file line number Diff line number Diff line change 2222 bmh_search.search(string, substring) -> list[integers]
2323 bmh_search.search(string, substring) -> list[empty]
2424"""
25+
26+
2527def search (text , pattern ):
2628 m = len (pattern )
2729 n = len (text )
@@ -44,5 +46,5 @@ def search(text, pattern):
4446 if j == - 1 :
4547 offsets .append (i + 1 )
4648 k += bmbc [ord (text [k ])]
47-
49+
4850 return offsets
Original file line number Diff line number Diff line change 2121
2222import hashlib
2323
24- def search (s ,sub ):
25- n , m = len (s ), len (sub )
26- hsub , hs = hashlib .md5 (sub ), hashlib .md5 (s [0 :m ])
27-
28- for i in range (n - m + 1 ):
29- if hs .hexdigest () == hsub .hexdigest ():
30- if s [i :i + m ] == sub :
31- return i
32- news = s [i + 1 :i + m + 1 ]
33- hs = hashlib .md5 (news )
34-
35- return False
24+
25+ def search (s , sub ):
26+ n , m = len (s ), len (sub )
27+ hsub , hs = hashlib .md5 (sub ), hashlib .md5 (s [0 :m ])
28+
29+ for i in range (n - m + 1 ):
30+ if hs .hexdigest () == hsub .hexdigest ():
31+ if s [i :i + m ] == sub :
32+ return i
33+ news = s [i + 1 :i + m + 1 ]
34+ hs = hashlib .md5 (news )
35+
36+ return False
Original file line number Diff line number Diff line change 1- """
2- knuth.py
3- Implementation of the Fisher-Yates/Knuth shuffle
4-
5- Pre: Takes any list, unshuffled
6- Post: Returns list shuffled randomly
1+ """
2+ knuth.py
3+ Implementation of the Fisher-Yates/Knuth shuffle
4+
5+ Pre: Takes any list, unshuffled
6+ Post: Returns list shuffled randomly
77
8- Time Complexity: n
9- Space Complexity: n
8+ Time Complexity: n
9+ Space Complexity: n
1010
11- Pseudocode: http://en.wikipedia.org/wiki/Fisher%E1%80%93Yates_shuffle
11+ Pseudocode: http://en.wikipedia.org/wiki/Fisher%E1%80%93Yates_shuffle
1212
1313"""
1414import random
1515
1616
1717def shuffle (li ):
18- random .seed ()
19- for i in xrange (len (li ) - 1 , 0 , - 1 ):
20- j = random .randint (0 , i )
21- li [i ], li [j ] = li [j ], li [i ]
22- return li
18+ random .seed ()
19+ for i in xrange (len (li ) - 1 , 0 , - 1 ):
20+ j = random .randint (0 , i )
21+ li [i ], li [j ] = li [j ], li [i ]
22+ return li
Original file line number Diff line number Diff line change 99 If list is not in order, picks two elements at random and swaps them.
1010 Repeat.
1111
12- Pre:
12+ Pre:
1313
1414 Time Complexity: O(n * n!)
1515
2424
2525import random
2626
27+
2728def sort (seq ):
28- if len (seq ) == 1 : return seq
29+ if len (seq ) == 1 :
30+ return seq
2931 random .seed ()
3032 while not is_sorted (seq ):
3133 if len (seq ) == 2 :
3234 i = 0
3335 j = 1
3436 else :
35- i = random .randint (0 , len (seq )- 2 )
36- j = random .randint (i , len (seq )- 1 )
37+ i = random .randint (0 , len (seq ) - 2 )
38+ j = random .randint (i , len (seq ) - 1 )
3739 seq [i ], seq [j ] = seq [j ], seq [i ]
3840 return seq
3941
4042
4143def is_sorted (seq ):
4244 for i in xrange (1 , len (seq )):
43- if seq [i - 1 ] > seq [i ]:
45+ if seq [i - 1 ] > seq [i ]:
4446 return False
4547 return True
Original file line number Diff line number Diff line change 1010 before/after the other.
1111
1212 Pre: An unsorted list elements that can be compared.
13-
13+
1414 Post: A sorted list of elements in ascending order.
1515
1616 Time Complexity: O(n^2)
2323 cocktail_sort.sort(list) -> sorted_list
2424"""
2525
26+
2627def sort (seq ):
2728 lower_bound = - 1
28- upper_bound = len (seq )- 1
29+ upper_bound = len (seq ) - 1
2930 swapped = True
3031 while swapped :
3132 swapped = False
3233 lower_bound += 1
3334 for i in range (lower_bound , upper_bound ):
34- if seq [i ] > seq [i + 1 ]:
35- seq [i ], seq [i + 1 ] = seq [i + 1 ], seq [i ]
35+ if seq [i ] > seq [i + 1 ]:
36+ seq [i ], seq [i + 1 ] = seq [i + 1 ], seq [i ]
3637 swapped = True
3738 if not swapped :
3839 break
3940 swapped = False
4041 upper_bound -= 1
4142 for i in range (upper_bound , lower_bound , - 1 ):
42- if seq [i ] < seq [i - 1 ]:
43- seq [i ], seq [i - 1 ] = seq [i - 1 ], seq [i ]
43+ if seq [i ] < seq [i - 1 ]:
44+ seq [i ], seq [i - 1 ] = seq [i - 1 ], seq [i ]
4445 swapped = True
4546 return seq
46-
Original file line number Diff line number Diff line change @@ -32,18 +32,20 @@ def test_kmpsearch(self):
3232 self .assertIs (rv1 , 9 )
3333 self .assertFalse (rv2 )
3434
35+
3536class TestRabinKarpSearch (unittest .TestCase ):
3637 """
3738 Tests Rabin-Karp search on string "ABCDEFGHIJKLMNOP"
3839 """
3940
4041 def test_rabinkarpsearch (self ):
4142 self .string = "ABCDEFGHIJKLMNOP"
42- rv1 = rabinkarp_search .search (self .string ,"MNOP" )
43- rv2 = rabinkarp_search .search (self .string ,"BCA" )
44- self .assertIs (rv1 ,12 )
43+ rv1 = rabinkarp_search .search (self .string , "MNOP" )
44+ rv2 = rabinkarp_search .search (self .string , "BCA" )
45+ self .assertIs (rv1 , 12 )
4546 self .assertFalse (rv2 )
4647
48+
4749class TestBMHSearch (unittest .TestCase ):
4850 """
4951 Tests BMH search on string "ABCDE FG ABCDEABCDEF"
@@ -53,7 +55,5 @@ def test_bmhsearch(self):
5355 self .string = "ABCDE FG ABCDEABCDEF"
5456 rv1 = bmh_search .search (self .string , "ABCDEA" )
5557 rv2 = bmh_search .search (self .string , "ABCDER" )
56- self .assertIs (rv1 [0 ],9 )
58+ self .assertIs (rv1 [0 ], 9 )
5759 self .assertFalse (rv2 )
58-
59-
Original file line number Diff line number Diff line change 11import unittest
22from ..shuffling import knuth
33
4+
45class ShufflingAlgorithmTestCase (unittest .TestCase ):
56 """
67 Shared code for shuffling unit tests.
78 """
89
910 def setUp (self ):
10- self .sorted = range (10 )
11+ self .sorted = range (10 )
1112
1213
1314class TestKnuthShuffle (ShufflingAlgorithmTestCase ):
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ class SortingAlgorithmTestCase(unittest.TestCase):
77 """
88 Shared code for a sorting unit test.
99 """
10-
10+
1111 def setUp (self ):
1212 self .input = range (10 )
1313 random .shuffle (self .input )
@@ -101,6 +101,7 @@ def test_combsort(self):
101101 self .output = comb_sort .sort (self .input )
102102 self .assertEqual (self .correct , self .output )
103103
104+
104105class TestCocktailSort (SortingAlgorithmTestCase ):
105106 """
106107 Tests Cocktail sort on a small range from 0-9
@@ -109,4 +110,3 @@ class TestCocktailSort(SortingAlgorithmTestCase):
109110 def test_cocktailsort (self ):
110111 self .output = cocktail_sort .sort (self .input )
111112 self .assertEqual (self .correct , self .output )
112-
You can’t perform that action at this time.
0 commit comments