diff options
author | William Carroll <wpcarro@gmail.com> | 2020-01-29T14·43+0000 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-01-29T14·43+0000 |
commit | 5c9079a41059e077f2b71b68eb83ff9fcb2e38d1 (patch) | |
tree | dce7e3566b04213228fb3c92fc593ca18841d972 /universe/data_structures_and_algorithms/find-rotation-point.py | |
parent | fb9380ba268b3cd27372acadb87b14cc96163374 (diff) |
Splice ./universe directory into ./
Manually merging: - README.md: I added the description from universe/README.md into the heading of dotfiles/README.md. - .envrc: dotfiles/.envrc was a superset of universe/.envrc - .gitignore: Adding some of the ignored patterns from universe/.gitignore to dotfiles/.gitignore Everything else here should be a simple rename.
Diffstat (limited to 'universe/data_structures_and_algorithms/find-rotation-point.py')
-rw-r--r-- | universe/data_structures_and_algorithms/find-rotation-point.py | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/universe/data_structures_and_algorithms/find-rotation-point.py b/universe/data_structures_and_algorithms/find-rotation-point.py deleted file mode 100644 index 2103a5b84f75..000000000000 --- a/universe/data_structures_and_algorithms/find-rotation-point.py +++ /dev/null @@ -1,59 +0,0 @@ -import unittest - - -################################################################################ -# Solution -################################################################################ -def find_rotation_point(xs): - """Usage of `visited` here is a hack, but works for the test cases - (gulp).""" - i = 0 - j = round(len(xs) / 2) - result = None - visited = set() - while not result: - if i in visited: - i += 1 - if j in visited: - j -= 1 - visited.add(i) - visited.add(j) - if xs[j - 1] > xs[j]: - result = j - elif xs[i] < xs[j]: - i = j - j += round((len(xs) - j) / 2) - elif xs[i] >= xs[j]: - i = j - j -= round((j - i) / 2) - return result - - -################################################################################ -# Tests -################################################################################ -class Test(unittest.TestCase): - def test_small_list(self): - actual = find_rotation_point(['cape', 'cake']) - expected = 1 - self.assertEqual(actual, expected) - - def test_medium_list(self): - actual = find_rotation_point( - ['grape', 'orange', 'plum', 'radish', 'apple']) - expected = 4 - self.assertEqual(actual, expected) - - def test_large_list(self): - actual = find_rotation_point([ - 'ptolemaic', 'retrograde', 'supplant', 'undulate', 'xenoepist', - 'asymptote', 'babka', 'banoffee', 'engender', 'karpatka', - 'othellolagkage' - ]) - expected = 5 - self.assertEqual(actual, expected) - - # Are we missing any edge cases? - - -unittest.main(verbosity=2) |