-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrack_man.py
89 lines (68 loc) · 2.57 KB
/
track_man.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import serial
class Car:
def __init__(self, car_id):
self.car_id = car_id
self.track_time = 9.999
self.position = 7
def __repr__(self):
return "car id: {} time: {} position: {}".format(self.car_id, self.track_time, self.position)
def gimme_test_data():
return open("track_data.txt", mode="r")
def gimme_real_data():
ser = serial.Serial(port="COM4", baudrate=9600)
ser.open()
return ser
def generate_heat_map(heat_filename):
heat_map = {}
car_file = open(heat_filename, mode="r")
car_map = car_file.readlines()
for i, race in enumerate(car_map):
race = race.rstrip()
race_data = race.split(',')
heat = i
heat_map[heat] = {}
for j, car in enumerate(race_data):
car_id = car
track_id = chr(ord('A') + j)
heat_map[heat][track_id] = Car(car_id)
return heat_map
def main():
heat_map = generate_heat_map("car_layout.txt")
try:
f = gimme_test_data()
except:
print("Can't find the droid you were looking for!")
return
heat = 0
input_data = "foo"
while heat < len(heat_map):
input_data = f.readline()
if '@' in input_data:
print("\nHeat {}\n---------".format(heat + 1))
car_list = []
positions = input_data[1:].split(',')
for position in positions:
track_id = position[0]
track_time = round(float(position[2:7]), 3)
position = ord(position[7]) - 32
car = heat_map[heat][track_id]
car.track_time = track_time
car.position = position
car_list.append([car, track_id])
car_list = sorted(car_list, key=lambda x: x[0].position)
for elem in car_list:
car = elem[0]
track_id = elem[1]
print("Car {}, Track {}, Time {}, Position {}".format(car.car_id, track_id, car.track_time, car.position))
heat += 1
print("")
total_car_times = {}
for heat in heat_map:
for track_id, car in heat_map[heat].items():
if car.car_id not in total_car_times:
total_car_times[car.car_id] = car.track_time
else:
total_car_times[car.car_id] += car.track_time
for car_id in sorted(total_car_times, key=total_car_times.get):
print("Car: {}, total time {:.3f}, average time {:.3f}".format(car_id, total_car_times[car_id], total_car_times[car_id] / len(heat_map)))
main()