#! /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")