Files
notes/CS1032/practical-2023-11-22/search.py
bluepython508 dc42625cf1 .
2024-01-22 10:56:12 +00:00

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")