34 lines
846 B
Python
34 lines
846 B
Python
#! /usr/bin/env python3
|
|
|
|
def sort(list):
|
|
if len(list) <= 1: return list
|
|
pivot = list.pop()
|
|
return sort([v for v in list if v < pivot]) + [v for v in list if v == pivot] + [pivot] + sort([v for v in list if v > pivot])
|
|
|
|
def search(list, elem, start=0):
|
|
if list == [elem]:
|
|
return start
|
|
elif len(list) <= 1:
|
|
return None
|
|
i = len(list) // 2
|
|
pivot = list[i]
|
|
if elem > pivot:
|
|
return search(list[i:], elem, start = i + start)
|
|
elif elem < pivot:
|
|
return search(list[:i], elem, start=start)
|
|
elif elem == pivot:
|
|
return i + start
|
|
|
|
raise ValueError("Got NaN!")
|
|
|
|
if __name__ == '__main__':
|
|
l = []
|
|
while line := input('> '):
|
|
l.append(line)
|
|
|
|
i = search(sort(l), input('Goal: '))
|
|
if i:
|
|
print(f"Found at {i}")
|
|
else:
|
|
print("Not present")
|