-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathorderAndChaos.py
72 lines (56 loc) · 1.91 KB
/
orderAndChaos.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
import csv
import pygal
from board import Board
def make_win_chart():
order_wins = 0
chaos_wins = 0
with open("results/results.csv") as result_file:
reader = csv.reader(result_file, delimiter=",")
header = next(reader)
for row in reader:
if row[0] == "order":
order_wins += 1
elif row[0] == "chaos":
chaos_wins += 1
else:
raise KeyError("no match for " + row[0])
print(order_wins, ":", chaos_wins)
chart = pygal.Bar()
chart.y_labels = range(0, 1000, 100)
chart.add("order", order_wins)
chart.add("chaos", chaos_wins)
chart.render_to_file("results/wins.svg")
def make_order_move_count_chart():
order_wins_move = [0 for _ in range(37)]
chaos_wins_move = [0 for _ in range(37)]
with open("results/results.csv") as result_file:
reader = csv.reader(result_file, delimiter=",")
header = next(reader)
for row in reader:
if row[0] == "order":
order_wins_move[int(row[1])] += 1
elif row[0] == "chaos":
chaos_wins_move[int(row[1])] += 1
else:
raise KeyError("no match for " + row[0])
print(order_wins_move)
print(chaos_wins_move)
chart = pygal.Bar()
chart.add("No. moves to win", order_wins_move)
chart.render_to_file("results/moves.svg")
def run():
board = Board()
for move in range(36):
pos = board.add_a_random_piece()
if board.has_move_won(pos):
return ["order", move]
return ["chaos", 36]
if __name__ == "__main__":
with open("results/results.csv", "w") as result_file:
writer = csv.writer(result_file, delimiter=",")
writer.writerow(["winner", "moves"])
for _ in range(1000):
result = run()
writer.writerow(result)
make_win_chart()
make_order_move_count_chart()