.
This commit is contained in:
33
CS1032/practical-2023-11-22/search.py
Normal file
33
CS1032/practical-2023-11-22/search.py
Normal file
@@ -0,0 +1,33 @@
|
||||
#! /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")
|
||||
Reference in New Issue
Block a user