More tests
This commit is contained in:
parent
d580ea4c89
commit
c6d4af33bd
10
h2/mbc.py
10
h2/mbc.py
|
@ -190,15 +190,15 @@ def mbc_ch(points: Set[Point], flipper: callable) -> Set[Point]:
|
||||||
#left_point = min(on)
|
#left_point = min(on)
|
||||||
#right_point = max(on)
|
#right_point = max(on)
|
||||||
|
|
||||||
dist_to_line = lambda p: abs(intercept + slope * p.x - p.y)/sqrt(1 + slope**2)
|
#dist_to_line = lambda p: abs(intercept + slope * p.x - p.y)/sqrt(1 + slope**2)
|
||||||
left_point = min(pl, key = dist_to_line)
|
#left_point = min(pl, key = dist_to_line)
|
||||||
right_point = min(pr, key=dist_to_line)
|
#right_point = min(pr, key=dist_to_line)
|
||||||
|
|
||||||
#display_line_only(points, slope, intercept, [left_point, right_point])
|
#display_line_only(points, slope, intercept, [left_point, right_point])
|
||||||
|
|
||||||
|
|
||||||
#left_point = next(p for p in pl if sidedness(slope, intercept, p, flipper) == Side.ON)
|
left_point = next(p for p in pl if sidedness(slope, intercept, p, flipper) == Side.ON)
|
||||||
#right_point = next(p for p in pr if sidedness(slope, intercept, p, flipper) == Side.ON)
|
right_point = next(p for p in pr if sidedness(slope, intercept, p, flipper) == Side.ON)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import os.path
|
||||||
TimedResult = namedtuple("TimedResult", "algorithm points running_time")
|
TimedResult = namedtuple("TimedResult", "algorithm points running_time")
|
||||||
|
|
||||||
|
|
||||||
def time_it(f: callable, args: tuple = (), iterations=20):
|
def time_it(f: callable, args: tuple = (), iterations=1):
|
||||||
start = time()
|
start = time()
|
||||||
for i in range(iterations):
|
for i in range(iterations):
|
||||||
f(*args)
|
f(*args)
|
||||||
|
@ -128,5 +128,6 @@ print("quick:", time_it(quick_hull, args=(points,)))
|
||||||
print("mbch:", time_it(mbc, args=(points,)))
|
print("mbch:", time_it(mbc, args=(points,)))
|
||||||
"""
|
"""
|
||||||
|
|
||||||
do_square_tests(50)
|
if __name__ == '__main__':
|
||||||
do_square_tests(100)
|
for i in range(50, 1000, 50):
|
||||||
|
do_square_tests(i)
|
||||||
|
|
45
h2/util.py
45
h2/util.py
|
@ -1,5 +1,5 @@
|
||||||
import random
|
import random
|
||||||
from collections import namedtuple
|
from collections import namedtuple, defaultdict
|
||||||
from enum import Enum, auto
|
from enum import Enum, auto
|
||||||
from typing import Set
|
from typing import Set
|
||||||
from math import cos, sin, sqrt, pi
|
from math import cos, sin, sqrt, pi
|
||||||
|
@ -53,6 +53,49 @@ def gen_weird_point(lower : int = 0, upper: int = 10) -> Point:
|
||||||
return Point(random.uniform(-x, x), y)
|
return Point(random.uniform(-x, x), y)
|
||||||
|
|
||||||
|
|
||||||
|
def read_and_prep_data(filename):
|
||||||
|
|
||||||
|
data = open(filename).read()
|
||||||
|
lines = data.split('\n')
|
||||||
|
data = defaultdict(list)
|
||||||
|
|
||||||
|
for line in lines[1:]:
|
||||||
|
all_vars = line.split("\t\t")
|
||||||
|
name, points, time = all_vars
|
||||||
|
data[name.strip()].append([points, time[:8]])
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def gen_graph(data):
|
||||||
|
|
||||||
|
graham = data['graham']
|
||||||
|
quick = data['quick']
|
||||||
|
mbch = data['mbch']
|
||||||
|
gift = data['gift']
|
||||||
|
|
||||||
|
graham_x = [p[0] for p in graham]
|
||||||
|
graham_y = [p[1] for p in graham]
|
||||||
|
|
||||||
|
quick_x = [p[0] for p in quick]
|
||||||
|
quick_y = [p[1] for p in quick]
|
||||||
|
|
||||||
|
mbch_x = [p[0] for p in mbch]
|
||||||
|
mbch_y = [p[1] for p in mbch]
|
||||||
|
|
||||||
|
gift_x = [p[0] for p in gift]
|
||||||
|
gift_y = [p[1] for p in gift]
|
||||||
|
|
||||||
|
plt.plot(graham_x, graham_y)
|
||||||
|
plt.plot(quick_x, quick_y)
|
||||||
|
plt.plot(mbch_x, mbch_y)
|
||||||
|
plt.plot(gift_x, gift_y)
|
||||||
|
|
||||||
|
plt.legend(['graham', 'quick', 'mbch', 'gift'], loc='upper left')
|
||||||
|
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
def gen_triangular_point(left : Point, right : Point, top : Point):
|
def gen_triangular_point(left : Point, right : Point, top : Point):
|
||||||
r1 = random.uniform(0,1)
|
r1 = random.uniform(0,1)
|
||||||
r2 = random.uniform(0,1)
|
r2 = random.uniform(0,1)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user