2018-10-11 12:38:59 +00:00
|
|
|
import random
|
|
|
|
from time import time
|
|
|
|
|
|
|
|
import util
|
|
|
|
from gift_wrapper import rapper
|
|
|
|
from graham import graham_scan
|
|
|
|
from mbc import mbc
|
|
|
|
from quick_hull import quick_hull
|
|
|
|
|
2018-10-11 15:10:31 +00:00
|
|
|
random.seed(1337_420)
|
2018-10-11 13:54:52 +00:00
|
|
|
|
|
|
|
while True:
|
|
|
|
print("="*100)
|
2018-10-11 15:10:31 +00:00
|
|
|
points = {util.gen_point(-100, 100) for i in range(5)}
|
2018-10-11 13:54:52 +00:00
|
|
|
print("Points:", sorted(points))
|
|
|
|
|
|
|
|
# Sanity check
|
|
|
|
graham = set(graham_scan(points))
|
|
|
|
gift = set(rapper(points))
|
|
|
|
quick = quick_hull(points)
|
|
|
|
mbch = set.union(mbc(points))
|
|
|
|
|
|
|
|
print("graham:", sorted(graham))
|
|
|
|
print("gift :", sorted(gift))
|
|
|
|
print("quick :", sorted(quick))
|
|
|
|
print("mbch :", sorted(mbch))
|
|
|
|
|
|
|
|
if not gift == graham == quick == mbch:
|
|
|
|
util.display(points=points, hull=mbch)
|
2018-10-11 12:38:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
def time_it(f: callable, args: tuple = (), iterations=20):
|
|
|
|
start = time()
|
|
|
|
for i in range(iterations):
|
|
|
|
f(*args)
|
|
|
|
return time() - start
|
|
|
|
|
|
|
|
|
|
|
|
print("graham:", time_it(graham_scan, args=(points,)))
|
|
|
|
print("gift:", time_it(rapper, args=(points,)))
|
|
|
|
print("quick:", time_it(quick_hull, args=(points,)))
|
|
|
|
print("mbch:", time_it(mbc, args=(points,)))
|