019f8fd211
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15c
git-subtree-split:24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
47 lines
1,000 B
Python
47 lines
1,000 B
Python
from math import floor
|
|
|
|
def find_rotation(xs):
|
|
if xs[0] < xs[-1]:
|
|
return xs[0]
|
|
beg, end = 0, len(xs) - 1
|
|
found = False
|
|
count = 10
|
|
while not found and count >= 0:
|
|
i = beg + floor((end - beg) / 2)
|
|
if xs[beg] < xs[i]:
|
|
beg = i
|
|
i = beg + floor((end - beg) / 2)
|
|
elif xs[beg] > xs[i]:
|
|
end = i
|
|
found = xs[i - 1] > xs[i]
|
|
count -= 1
|
|
return xs[i]
|
|
|
|
|
|
xs = [(['ptolemaic',
|
|
'retrograde',
|
|
'supplant',
|
|
'undulate',
|
|
'xenoepist',
|
|
'zebra',
|
|
'asymptote',
|
|
'babka',
|
|
'banoffee',
|
|
'engender',
|
|
'karpatka',
|
|
'othellolagkage',
|
|
], "asymptote"),
|
|
(['asymptote',
|
|
'babka',
|
|
'banoffee',
|
|
'engender',
|
|
'karpatka',
|
|
'othellolagkage',
|
|
], "asymptote"),
|
|
]
|
|
|
|
for x, expected in xs:
|
|
result = find_rotation(x)
|
|
print(x, result)
|
|
assert result == expected
|
|
print("Success!")
|