-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvariables.py
114 lines (91 loc) · 28.4 KB
/
variables.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# 150 VERTICES
vertices = [(0, 0, 0, 0), (0, 0, 0, 2), (0, 0, 1, 3), (0, 0, 2, 0), (0, 0, 3, 1), (0, 0, 3, 3), (0, 1, 0, 3), (0, 1, 1, 4), (0, 1, 3, 0), (0, 1, 3, 4), (0, 1, 4, 1), (0, 1, 4, 3), (0, 2, 0, 0), (0, 2, 4, 4), (0, 3, 0, 1), (0, 3, 0, 3), (0, 3, 1, 0), (0, 3, 1, 4), (0, 3, 3, 0), (0, 3, 4, 1), (0, 4, 1, 1), (0, 4, 1, 3), (0, 4, 2, 4), (0, 4, 3, 1), (0, 4, 4, 2), (0, 4, 4, 4), (1, 0, 0, 3), (1, 0, 1, 4), (1, 0, 3, 0), (1, 0, 3, 4), (1, 0, 4, 1), (1, 0, 4, 3), (1, 1, 0, 4), (1, 1, 1, 5), (1, 1, 3, 5), (1, 1, 4, 0), (1, 1, 5, 1), (1, 1, 5, 3), (1, 2, 4, 5), (1, 2, 5, 4), (1, 3, 0, 0), (1, 3, 0, 4), (1, 3, 1, 5), (1, 3, 4, 0), (1, 3, 5, 1), (1, 4, 0, 1), (1, 4, 0, 3), (1, 4, 1, 0), (1, 4, 2, 5), (1, 4, 3, 0), (1, 4, 4, 5), (1, 4, 5, 2), (1, 4, 5, 4), (1, 5, 1, 1), (1, 5, 1, 3), (1, 5, 2, 4), (1, 5, 3, 1), (1, 5, 4, 2), (1, 5, 4, 4), (2, 0, 0, 0), (2, 0, 4, 4), (2, 1, 4, 5), (2, 1, 5, 4), (2, 2, 5, 5), (2, 4, 0, 4), (2, 4, 1, 5), (2, 4, 4, 0), (2, 4, 5, 1), (2, 4, 5, 5), (2, 5, 1, 4), (2, 5, 2, 5), (2, 5, 4, 1), (2, 5, 4, 5), (2, 5, 5, 2), (2, 5, 5, 4), (3, 0, 0, 1), (3, 0, 0, 3), (3, 0, 1, 0), (3, 0, 1, 4), (3, 0, 3, 0), (3, 0, 4, 1), (3, 1, 0, 0), (3, 1, 0, 4), (3, 1, 1, 5), (3, 1, 4, 0), (3, 1, 5, 1), (3, 3, 0, 0), (3, 4, 0, 1), (3, 4, 1, 0), (3, 5, 1, 1), (3, 5, 5, 5), (4, 0, 1, 1), (4, 0, 1, 3), (4, 0, 2, 4), (4, 0, 3, 1), (4, 0, 4, 2), (4, 0, 4, 4), (4, 1, 0, 1), (4, 1, 0, 3), (4, 1, 1, 0), (4, 1, 2, 5), (4, 1, 3, 0), (4, 1, 4, 5), (4, 1, 5, 2), (4, 1, 5, 4), (4, 2, 0, 4), (4, 2, 1, 5), (4, 2, 4, 0), (4, 2, 5, 1), (4, 2, 5, 5), (4, 3, 0, 1), (4, 3, 1, 0), (4, 4, 0, 2), (4, 4, 0, 4), (4, 4, 1, 5), (4, 4, 2, 0), (4, 4, 4, 0), (4, 4, 5, 1), (4, 5, 1, 2), (4, 5, 1, 4), (4, 5, 2, 1), (4, 5, 2, 5), (4, 5, 4, 1), (4, 5, 5, 2), (5, 1, 1, 1), (5, 1, 1, 3), (5, 1, 2, 4), (5, 1, 3, 1), (5, 1, 4, 2), (5, 1, 4, 4), (5, 2, 1, 4), (5, 2, 2, 5), (5, 2, 4, 1), (5, 2, 4, 5), (5, 2, 5, 2), (5, 2, 5, 4), (5, 3, 1, 1), (5, 3, 5, 5), (5, 4, 1, 2), (5, 4, 1, 4), (5, 4, 2, 1), (5, 4, 2, 5), (5, 4, 4, 1), (5, 4, 5, 2), (5, 5, 2, 2), (5, 5, 2, 4), (5, 5, 3, 5), (5, 5, 4, 2), (5, 5, 5, 3), (5, 5, 5, 5)]
vertex_ranks = [0, 1, 2, 1, 2, 3, 2, 3, 2, 4, 3, 4, 1, 5, 2, 3, 2, 4, 3, 4, 3, 4, 5, 4, 5, 6, 2, 3, 2, 4, 3, 4, 3, 4, 5, 3, 4, 5, 6, 6, 2, 4, 5, 4, 5, 3, 4, 3, 6, 4, 7, 6, 7, 4, 5, 6, 5, 6, 7, 1, 5, 6, 6, 7, 5, 6, 5, 6, 8, 6, 7, 6, 8, 7, 8, 2, 3, 2, 4, 3, 4, 2, 4, 5, 4, 5, 3, 4, 4, 5, 9, 3, 4, 5, 4, 5, 6, 3, 4, 3, 6, 4, 7, 6, 7, 5, 6, 5, 6, 8, 4, 4, 5, 6, 7, 5, 6, 7, 6, 7, 6, 8, 7, 8, 4, 5, 6, 5, 6, 7, 6, 7, 6, 8, 7, 8, 5, 9, 6, 7, 6, 8, 7, 8, 7, 8, 9, 8, 9, 10]
vertex_rank_parities = [0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0]
# 344 EDGES
# - 240 of length sqrt(2)
# - 104 of length 2
edges = [[0, 1], [1, 2], [0, 3], [3, 4], [4, 5], [2, 5], [1, 6], [2, 7], [6, 7], [3, 8], [5, 9], [7, 9], [8, 10], [4, 10], [10, 11], [5, 11], [0, 12], [9, 13], [11, 13], [12, 14], [14, 15], [6, 15], [12, 16], [7, 17], [15, 17], [16, 18], [8, 18], [18, 19], [10, 19], [14, 20], [16, 20], [20, 21], [15, 21], [17, 22], [21, 22], [18, 23], [20, 23], [19, 24], [23, 24], [13, 25], [22, 25], [24, 25], [1, 26], [2, 27], [26, 27], [3, 28], [27, 29], [5, 29], [28, 30], [4, 30], [30, 31], [5, 31], [26, 32], [6, 32], [27, 33], [7, 33], [32, 33], [29, 34], [9, 34], [33, 34], [8, 35], [28, 35], [35, 36], [10, 36], [30, 36], [36, 37], [31, 37], [11, 37], [13, 38], [34, 38], [37, 39], [13, 39], [12, 40], [15, 41], [32, 41], [17, 42], [33, 42], [41, 42], [18, 43], [35, 43], [36, 44], [43, 44], [19, 44], [40, 45], [14, 45], [15, 46], [45, 46], [40, 47], [16, 47], [22, 48], [42, 48], [47, 49], [18, 49], [25, 50], [38, 50], [48, 50], [24, 51], [44, 51], [39, 52], [25, 52], [51, 52], [47, 53], [45, 53], [20, 53], [46, 54], [21, 54], [53, 54], [54, 55], [22, 55], [53, 56], [23, 56], [49, 56], [24, 57], [56, 57], [55, 58], [25, 58], [57, 58], [0, 59], [29, 60], [31, 60], [34, 61], [60, 61], [60, 62], [37, 62], [39, 63], [62, 63], [38, 63], [61, 63], [41, 64], [46, 64], [42, 65], [64, 65], [43, 66], [49, 66], [66, 67], [44, 67], [52, 68], [63, 68], [50, 68], [54, 69], [64, 69], [69, 70], [48, 70], [55, 70], [65, 70], [66, 71], [56, 71], [58, 72], [50, 72], [70, 72], [71, 73], [51, 73], [57, 73], [67, 73], [73, 74], [58, 74], [52, 74], [59, 75], [75, 76], [26, 76], [59, 77], [76, 78], [27, 78], [77, 79], [28, 79], [79, 80], [30, 80], [59, 81], [32, 82], [76, 82], [33, 83], [82, 83], [78, 83], [35, 84], [79, 84], [80, 85], [84, 85], [36, 85], [40, 86], [81, 86], [86, 87], [45, 87], [86, 88], [47, 88], [88, 89], [53, 89], [87, 89], [68, 90], [74, 90], [72, 90], [77, 91], [75, 91], [91, 92], [76, 92], [78, 93], [92, 93], [91, 94], [79, 94], [94, 95], [80, 95], [60, 96], [93, 96], [95, 96], [75, 97], [81, 97], [97, 98], [76, 98], [77, 99], [81, 99], [93, 100], [83, 100], [99, 101], [79, 101], [61, 102], [96, 102], [100, 102], [85, 103], [95, 103], [96, 104], [103, 104], [62, 104], [98, 105], [82, 105], [83, 106], [105, 106], [84, 107], [101, 107], [107, 108], [85, 108], [104, 109], [102, 109], [63, 109], [86, 110], [97, 110], [86, 111], [99, 111], [110, 112], [87, 112], [64, 113], [112, 113], [105, 113], [65, 114], [113, 114], [106, 114], [88, 115], [111, 115], [66, 116], [115, 116], [107, 116], [116, 117], [67, 117], [108, 117], [112, 118], [89, 118], [118, 119], [113, 119], [69, 119], [115, 120], [89, 120], [114, 121], [70, 121], [119, 121], [116, 122], [71, 122], [120, 122], [117, 123], [73, 123], [122, 123], [99, 124], [91, 124], [97, 124], [124, 125], [98, 125], [92, 125], [93, 126], [125, 126], [94, 127], [124, 127], [101, 127], [127, 128], [95, 128], [96, 129], [128, 129], [126, 129], [105, 130], [125, 130], [130, 131], [106, 131], [100, 131], [126, 131], [127, 132], [107, 132], [102, 133], [129, 133], [131, 133], [128, 134], [132, 134], [103, 134], [108, 134], [129, 135], [134, 135], [104, 135], [110, 136], [124, 136], [111, 136], [109, 137], [135, 137], [133, 137], [136, 138], [112, 138], [113, 139], [130, 139], [138, 139], [136, 140], [115, 140], [139, 141], [114, 141], [131, 141], [116, 142], [132, 142], [140, 142], [142, 143], [134, 143], [117, 143], [120, 144], [138, 144], [118, 144], [140, 144], [144, 145], [119, 145], [139, 145], [121, 146], [145, 146], [141, 146], [142, 147], [122, 147], [144, 147], [147, 148], [143, 148], [123, 148], [90, 149], [137, 149], [148, 149], [146, 149]]
# 0 for sqrt(2), 1 for 2
edge_length_keys = [1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1]
edges_containing_origin = [0, 2, 16, 117]
# 252 FACES
# - 36 concertina squares (red)
# - 96 rhombs (yellow)
# - 96 rectangles (blue)
# - 24 squares (green)
faces = [[2, 1, 0, 3, 4, 5], [6, 1, 2, 7], [7, 2, 5, 9], [8, 3, 4, 10], [10, 4, 5, 11], [11, 5, 9, 13], [6, 1, 0, 12, 14, 15], [15, 6, 7, 17], [8, 3, 0, 12, 16, 18], [18, 8, 10, 19], [16, 12, 14, 20], [20, 14, 15, 21], [21, 15, 17, 22], [20, 16, 18, 23], [23, 18, 19, 24], [13, 9, 7, 17, 22, 25], [13, 11, 10, 19, 24, 25], [22, 21, 20, 23, 24, 25], [26, 1, 2, 27], [27, 2, 5, 29], [28, 3, 4, 30], [30, 4, 5, 31], [26, 1, 6, 32], [27, 2, 7, 33], [32, 6, 7, 33], [32, 26, 27, 33], [29, 5, 9, 34], [33, 27, 29, 34], [33, 7, 9, 34], [28, 3, 8, 35], [35, 8, 10, 36], [30, 4, 10, 36], [35, 28, 30, 36], [36, 30, 31, 37], [31, 5, 11, 37], [36, 10, 11, 37], [34, 9, 13, 38], [37, 11, 13, 39], [32, 6, 15, 41], [33, 7, 17, 42], [41, 32, 33, 42], [41, 15, 17, 42], [35, 8, 18, 43], [43, 35, 36, 44], [36, 10, 19, 44], [43, 18, 19, 44], [40, 12, 14, 45], [45, 14, 15, 46], [40, 12, 16, 47], [42, 17, 22, 48], [47, 16, 18, 49], [38, 13, 25, 50], [38, 34, 33, 42, 48, 50], [48, 22, 25, 50], [44, 19, 24, 51], [39, 13, 25, 52], [39, 37, 36, 44, 51, 52], [51, 24, 25, 52], [47, 40, 45, 53], [45, 14, 20, 53], [47, 16, 20, 53], [46, 15, 21, 54], [53, 20, 21, 54], [53, 45, 46, 54], [54, 21, 22, 55], [53, 20, 23, 56], [53, 47, 49, 56], [49, 18, 23, 56], [56, 23, 24, 57], [55, 22, 25, 58], [55, 54, 53, 56, 57, 58], [57, 24, 25, 58], [31, 5, 29, 60], [60, 29, 34, 61], [60, 31, 37, 62], [62, 37, 39, 63], [39, 13, 38, 63], [62, 60, 61, 63], [61, 34, 38, 63], [46, 15, 41, 64], [64, 41, 42, 65], [49, 18, 43, 66], [66, 43, 44, 67], [63, 39, 52, 68], [63, 38, 50, 68], [52, 25, 50, 68], [64, 46, 54, 69], [55, 22, 48, 70], [69, 54, 55, 70], [69, 64, 65, 70], [65, 42, 48, 70], [66, 49, 56, 71], [58, 25, 50, 72], [70, 48, 50, 72], [70, 55, 58, 72], [57, 24, 51, 73], [71, 56, 57, 73], [71, 66, 67, 73], [67, 44, 51, 73], [73, 57, 58, 74], [73, 51, 52, 74], [58, 25, 52, 74], [26, 1, 0, 59, 75, 76], [76, 26, 27, 78], [28, 3, 0, 59, 77, 79], [79, 28, 30, 80], [76, 26, 32, 82], [82, 32, 33, 83], [78, 27, 33, 83], [82, 76, 78, 83], [79, 28, 35, 84], [84, 79, 80, 85], [84, 35, 36, 85], [80, 30, 36, 85], [40, 12, 0, 59, 81, 86], [86, 40, 45, 87], [86, 40, 47, 88], [88, 47, 53, 89], [87, 45, 53, 89], [88, 86, 87, 89], [74, 52, 68, 90], [72, 50, 68, 90], [74, 58, 72, 90], [77, 59, 75, 91], [91, 75, 76, 92], [92, 76, 78, 93], [91, 77, 79, 94], [94, 79, 80, 95], [60, 29, 27, 78, 93, 96], [60, 31, 30, 80, 95, 96], [93, 92, 91, 94, 95, 96], [81, 59, 75, 97], [97, 75, 76, 98], [81, 59, 77, 99], [93, 78, 83, 100], [99, 77, 79, 101], [96, 60, 61, 102], [61, 34, 33, 83, 100, 102], [100, 93, 96, 102], [95, 80, 85, 103], [103, 95, 96, 104], [62, 37, 36, 85, 103, 104], [96, 60, 62, 104], [98, 76, 82, 105], [105, 82, 83, 106], [101, 79, 84, 107], [107, 84, 85, 108], [104, 96, 102, 109], [104, 62, 63, 109], [102, 61, 63, 109], [97, 81, 86, 110], [99, 81, 86, 111], [110, 86, 87, 112], [64, 46, 45, 87, 112, 113], [64, 41, 32, 82, 105, 113], [105, 98, 97, 110, 112, 113], [113, 64, 65, 114], [113, 105, 106, 114], [65, 42, 33, 83, 106, 114], [111, 86, 88, 115], [66, 49, 47, 88, 115, 116], [107, 101, 99, 111, 115, 116], [66, 43, 35, 84, 107, 116], [116, 66, 67, 117], [116, 107, 108, 117], [67, 44, 36, 85, 108, 117], [112, 87, 89, 118], [118, 112, 113, 119], [113, 64, 69, 119], [69, 54, 53, 89, 118, 119], [115, 88, 89, 120], [114, 65, 70, 121], [119, 113, 114, 121], [119, 69, 70, 121], [116, 66, 71, 122], [120, 115, 116, 122], [71, 56, 53, 89, 120, 122], [117, 67, 73, 123], [122, 116, 117, 123], [122, 71, 73, 123], [99, 77, 91, 124], [99, 81, 97, 124], [97, 75, 91, 124], [124, 97, 98, 125], [98, 76, 92, 125], [124, 91, 92, 125], [125, 92, 93, 126], [124, 91, 94, 127], [124, 99, 101, 127], [101, 79, 94, 127], [127, 94, 95, 128], [128, 95, 96, 129], [126, 125, 124, 127, 128, 129], [126, 93, 96, 129], [125, 98, 105, 130], [130, 105, 106, 131], [106, 83, 100, 131], [130, 125, 126, 131], [126, 93, 100, 131], [127, 101, 107, 132], [129, 96, 102, 133], [131, 100, 102, 133], [131, 126, 129, 133], [132, 127, 128, 134], [128, 95, 103, 134], [132, 107, 108, 134], [108, 85, 103, 134], [134, 128, 129, 135], [129, 96, 104, 135], [134, 103, 104, 135], [124, 97, 110, 136], [111, 86, 110, 136], [124, 99, 111, 136], [135, 104, 109, 137], [133, 102, 109, 137], [135, 129, 133, 137], [136, 110, 112, 138], [130, 105, 113, 139], [130, 125, 124, 136, 138, 139], [138, 112, 113, 139], [136, 111, 115, 140], [139, 113, 114, 141], [139, 130, 131, 141], [131, 106, 114, 141], [132, 107, 116, 142], [132, 127, 124, 136, 140, 142], [140, 115, 116, 142], [142, 132, 134, 143], [142, 116, 117, 143], [134, 108, 117, 143], [138, 112, 118, 144], [120, 89, 118, 144], [140, 115, 120, 144], [140, 136, 138, 144], [144, 118, 119, 145], [144, 138, 139, 145], [139, 113, 119, 145], [145, 119, 121, 146], [145, 139, 141, 146], [141, 114, 121, 146], [142, 116, 122, 147], [144, 140, 142, 147], [144, 120, 122, 147], [147, 142, 143, 148], [143, 117, 123, 148], [147, 122, 123, 148], [90, 68, 63, 109, 137, 149], [90, 74, 73, 123, 148, 149], [137, 135, 134, 143, 148, 149], [90, 72, 70, 121, 146, 149], [137, 133, 131, 141, 146, 149], [146, 145, 144, 147, 148, 149]]
# 0 for concertina square, etc.
face_type_keys = [0, 1, 2, 1, 2, 1, 0, 2, 0, 2, 1, 2, 1, 2, 1, 0, 0, 0, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 3, 3, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 1, 3, 2, 2, 0, 2, 3, 2, 0, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 1, 3, 2, 0, 2, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 2, 2, 1, 3, 1, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 0, 2, 0, 2, 2, 2, 2, 1, 2, 1, 2, 2, 0, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 0, 0, 0, 1, 2, 1, 3, 2, 2, 0, 2, 3, 2, 0, 2, 1, 3, 1, 3, 1, 2, 2, 2, 2, 1, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 2, 2, 0, 3, 2, 2, 0, 3, 2, 1, 2, 2, 2, 0, 2, 1, 2, 1, 1, 1, 2, 1, 2, 3, 2, 2, 1, 3, 2, 0, 2, 3, 1, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 1, 3, 2, 0, 2, 3, 1, 2, 2, 2, 0, 2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0]
faces_containing_origin = [0, 6, 8, 102, 104, 114]
# 58 CELLS
# - 8 concertina cubes
# - 8 trigonal trapezohedra (like a cube, but with 6 rhombs)
# - 24 right rhombic prisms (like a cube, but with 2 rhombs and 4 rectangles)
# - 6 squared rhombic dodecahedra (8 rhombs and 4 squares)
# - 12 concertina square prisms
cells = [
# concertina cubes
{'vertices': [0, 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], 'edges': [0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 11, 10, 12, 13, 14, 15, 16, 18, 17, 19, 21, 20, 22, 23, 24, 25, 26, 27, 28, 30, 29, 32, 31, 34, 33, 36, 35, 38, 37, 41, 40, 39], 'faces': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 16, 15], 'type': 'lower concertina cube'},
{'vertices': [0, 1, 2, 3, 4, 5, 26, 27, 28, 29, 30, 31, 59, 60, 75, 76, 77, 78, 79, 80, 91, 92, 93, 94, 95, 96], 'edges': [0, 1, 2, 3, 5, 4, 42, 43, 44, 45, 46, 47, 49, 48, 50, 51, 117, 119, 118, 157, 159, 158, 160, 162, 161, 163, 164, 165, 166, 190, 191, 193, 192, 195, 194, 196, 197, 198, 199, 202, 201, 200], 'faces': [0, 18, 19, 20, 21, 72, 102, 103, 104, 105, 123, 124, 125, 126, 127, 130, 129, 128], 'type': 'lower concertina cube'},
{'vertices': [0, 1, 6, 12, 14, 15, 26, 32, 40, 41, 45, 46, 59, 64, 75, 76, 81, 82, 86, 87, 97, 98, 105, 110, 112, 113], 'edges': [0, 6, 16, 19, 21, 20, 42, 52, 53, 72, 74, 73, 84, 83, 86, 85, 117, 129, 128, 157, 159, 158, 167, 168, 169, 179, 178, 180, 181, 204, 203, 206, 205, 221, 222, 233, 232, 236, 237, 239, 240, 238], 'faces': [6, 22, 38, 46, 47, 79, 102, 106, 114, 115, 131, 132, 143, 150, 152, 155, 153, 154], 'type': 'lower concertina cube'},
{'vertices': [0, 3, 8, 12, 16, 18, 28, 35, 40, 43, 47, 49, 59, 66, 77, 79, 81, 84, 86, 88, 99, 101, 107, 111, 115, 116], 'edges': [2, 9, 16, 22, 26, 25, 45, 60, 61, 72, 79, 78, 88, 87, 91, 92, 117, 133, 132, 160, 164, 163, 167, 173, 174, 179, 178, 183, 182, 208, 207, 212, 211, 226, 225, 235, 234, 245, 244, 247, 248, 246], 'faces': [8, 29, 42, 48, 50, 81, 104, 110, 114, 116, 133, 135, 145, 151, 159, 161, 160, 162], 'type': 'lower concertina cube'},
{'vertices': [33, 34, 38, 42, 48, 50, 61, 63, 65, 68, 70, 72, 83, 90, 100, 102, 106, 109, 114, 121, 131, 133, 137, 141, 146, 149], 'edges': [59, 69, 76, 90, 94, 95, 120, 126, 127, 130, 137, 138, 142, 144, 149, 148, 170, 189, 187, 210, 213, 215, 223, 231, 230, 243, 241, 260, 259, 287, 288, 292, 294, 307, 305, 316, 317, 333, 331, 343, 341, 340], 'faces': [52, 78, 84, 90, 93, 121, 137, 149, 158, 171, 196, 201, 214, 223, 239, 250, 249, 246], 'type': 'upper concertina cube'},
{'vertices': [36, 37, 39, 44, 51, 52, 62, 63, 67, 68, 73, 74, 85, 90, 103, 104, 108, 109, 117, 123, 134, 135, 137, 143, 148, 149], 'edges': [65, 70, 80, 97, 98, 100, 123, 124, 125, 135, 137, 136, 151, 153, 154, 156, 177, 188, 187, 216, 220, 219, 228, 229, 231, 251, 250, 265, 266, 298, 297, 300, 301, 306, 305, 323, 322, 338, 339, 342, 341, 340], 'faces': [56, 75, 83, 98, 100, 120, 141, 148, 165, 177, 206, 209, 213, 229, 244, 248, 247, 246], 'type': 'upper concertina cube'},
{'vertices': [53, 54, 55, 56, 57, 58, 69, 70, 71, 72, 73, 74, 89, 90, 118, 119, 120, 121, 122, 123, 144, 145, 146, 147, 148, 149], 'edges': [106, 107, 109, 113, 114, 116, 139, 143, 141, 146, 149, 147, 152, 150, 154, 155, 185, 188, 189, 253, 256, 254, 258, 261, 260, 264, 263, 267, 266, 324, 326, 328, 329, 332, 331, 335, 336, 337, 339, 342, 343, 340], 'faces': [70, 88, 94, 96, 99, 122, 169, 173, 176, 179, 231, 234, 237, 242, 245, 251, 247, 249], 'type': 'upper concertina cube'},
{'vertices': [124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149], 'edges': [271, 275, 277, 279, 283, 282, 285, 289, 286, 290, 294, 293, 295, 296, 300, 299, 303, 306, 307, 308, 311, 312, 313, 315, 317, 320, 319, 321, 322, 327, 325, 328, 330, 332, 333, 334, 336, 337, 338, 342, 343, 341], 'faces': [192, 197, 202, 203, 207, 215, 218, 222, 225, 227, 233, 235, 238, 241, 243, 251, 248, 250], 'type': 'upper concertina cube'},
# trigonal trapezohedra
{'vertices': [1, 2, 6, 7, 26, 27, 32, 33], 'edges': [1, 6, 7, 8, 42, 44, 43, 52, 53, 55, 54, 56], 'faces': [1, 18, 22, 23, 24, 25], 'type': 'lower trigonal trapezohedron'},
{'vertices': [3, 4, 8, 10, 28, 30, 35, 36], 'edges': [3, 9, 13, 12, 45, 48, 49, 61, 60, 63, 64, 62], 'faces': [3, 20, 29, 31, 30, 32], 'type': 'lower trigonal trapezohedron'},
{'vertices': [12, 14, 16, 20, 40, 45, 47, 53], 'edges': [19, 22, 29, 30, 72, 83, 84, 87, 88, 103, 102, 101], 'faces': [10, 46, 48, 59, 60, 58], 'type': 'lower trigonal trapezohedron'},
{'vertices': [59, 75, 77, 81, 91, 97, 99, 124], 'edges': [157, 160, 167, 191, 190, 204, 203, 208, 207, 269, 270, 268], 'faces': [123, 131, 133, 182, 180, 181], 'type': 'lower trigonal trapezohedron'},
{'vertices': [25, 50, 52, 58, 68, 72, 74, 90], 'edges': [93, 99, 115, 138, 136, 147, 148, 155, 156, 187, 189, 188], 'faces': [85, 92, 101, 121, 120, 122], 'type': 'upper trigonal trapezohedron'},
{'vertices': [96, 102, 104, 109, 129, 133, 135, 137], 'edges': [214, 218, 230, 229, 281, 293, 292, 299, 301, 305, 307, 306], 'faces': [147, 200, 208, 214, 213, 215], 'type': 'upper trigonal trapezohedron'},
{'vertices': [113, 114, 119, 121, 139, 141, 145, 146], 'edges': [242, 255, 259, 261, 310, 315, 316, 330, 329, 331, 333, 332], 'faces': [172, 221, 236, 239, 237, 238], 'type': 'upper trigonal trapezohedron'},
{'vertices': [116, 117, 122, 123, 142, 143, 147, 148], 'edges': [249, 262, 265, 267, 318, 321, 323, 334, 335, 339, 338, 337], 'faces': [178, 228, 240, 244, 245, 243], 'type': 'upper trigonal trapezohedron'},
# rhombic prisms
{'vertices': [2, 5, 7, 9, 27, 29, 33, 34], 'edges': [5, 7, 10, 11, 43, 46, 47, 54, 55, 58, 57, 59], 'faces': [2, 19, 23, 26, 28, 27], 'type': 'lower rhombic prism'},
{'vertices': [4, 5, 10, 11, 30, 31, 36, 37], 'edges': [4, 13, 15, 14, 49, 50, 51, 64, 63, 67, 66, 65], 'faces': [4, 21, 31, 34, 35, 33], 'type': 'lower rhombic prism'},
{'vertices': [6, 7, 15, 17, 32, 33, 41, 42], 'edges': [8, 21, 23, 24, 53, 56, 55, 74, 73, 75, 76, 77], 'faces': [7, 24, 38, 39, 41, 40], 'type': 'lower rhombic prism'},
{'vertices': [8, 10, 18, 19, 35, 36, 43, 44], 'edges': [12, 26, 28, 27, 60, 62, 63, 79, 78, 82, 80, 81], 'faces': [9, 30, 42, 44, 45, 43], 'type': 'lower rhombic prism'},
{'vertices': [14, 15, 20, 21, 45, 46, 53, 54], 'edges': [20, 29, 32, 31, 84, 86, 85, 102, 103, 105, 104, 106], 'faces': [11, 47, 59, 61, 62, 63], 'type': 'lower rhombic prism'},
{'vertices': [16, 18, 20, 23, 47, 49, 53, 56], 'edges': [25, 30, 35, 36, 88, 91, 92, 101, 103, 110, 111, 109], 'faces': [13, 50, 60, 67, 65, 66], 'type': 'lower rhombic prism'},
{'vertices': [26, 27, 32, 33, 76, 78, 82, 83], 'edges': [44, 52, 54, 56, 159, 161, 162, 169, 168, 170, 172, 171], 'faces': [25, 103, 106, 108, 107, 109], 'type': 'lower rhombic prism'},
{'vertices': [28, 30, 35, 36, 79, 80, 84, 85], 'edges': [48, 61, 64, 62, 164, 165, 166, 174, 173, 177, 175, 176], 'faces': [32, 105, 110, 113, 112, 111], 'type': 'lower rhombic prism'},
{'vertices': [40, 45, 47, 53, 86, 87, 88, 89], 'edges': [83, 87, 102, 101, 178, 180, 181, 182, 183, 185, 186, 184], 'faces': [58, 115, 116, 118, 117, 119], 'type': 'lower rhombic prism'},
{'vertices': [75, 76, 91, 92, 97, 98, 124, 125], 'edges': [158, 191, 193, 192, 203, 205, 206, 270, 269, 273, 272, 271], 'faces': [124, 132, 182, 184, 185, 183], 'type': 'lower rhombic prism'},
{'vertices': [77, 79, 91, 94, 99, 101, 124, 127], 'edges': [163, 190, 197, 196, 207, 211, 212, 268, 269, 276, 278, 277], 'faces': [126, 135, 180, 189, 187, 188], 'type': 'lower rhombic prism'},
{'vertices': [81, 86, 97, 99, 110, 111, 124, 136], 'edges': [179, 204, 208, 232, 233, 235, 234, 268, 270, 302, 304, 303], 'faces': [150, 151, 181, 211, 210, 212], 'type': 'lower rhombic prism'},
{'vertices': [13, 25, 38, 39, 50, 52, 63, 68], 'edges': [39, 68, 71, 93, 94, 98, 99, 124, 126, 138, 136, 137], 'faces': [51, 55, 76, 85, 84, 83], 'type': 'upper rhombic prism'},
{'vertices': [22, 25, 48, 50, 55, 58, 70, 72], 'edges': [40, 89, 93, 95, 108, 114, 115, 143, 142, 148, 147, 149], 'faces': [53, 69, 87, 92, 93, 94], 'type': 'upper rhombic prism'},
{'vertices': [24, 25, 51, 52, 57, 58, 73, 74], 'edges': [41, 96, 99, 100, 112, 116, 115, 152, 151, 156, 155, 154], 'faces': [57, 71, 95, 101, 100, 99], 'type': 'upper rhombic prism'},
{'vertices': [60, 61, 62, 63, 96, 102, 104, 109], 'edges': [121, 122, 127, 125, 200, 214, 213, 218, 220, 231, 230, 229], 'faces': [77, 136, 142, 149, 148, 147], 'type': 'upper rhombic prism'},
{'vertices': [64, 65, 69, 70, 113, 114, 119, 121], 'edges': [131, 140, 144, 141, 238, 242, 241, 255, 256, 260, 259, 261], 'faces': [89, 156, 168, 171, 173, 172], 'type': 'upper rhombic prism'},
{'vertices': [66, 67, 71, 73, 116, 117, 122, 123], 'edges': [134, 145, 153, 150, 246, 249, 250, 262, 263, 266, 265, 267], 'faces': [97, 163, 174, 177, 179, 178], 'type': 'upper rhombic prism'},
{'vertices': [93, 96, 100, 102, 126, 129, 131, 133], 'edges': [201, 209, 214, 215, 274, 283, 281, 289, 288, 292, 293, 294], 'faces': [138, 193, 198, 200, 201, 202], 'type': 'upper rhombic prism'},
{'vertices': [95, 96, 103, 104, 128, 129, 134, 135], 'edges': [202, 217, 218, 219, 280, 282, 281, 295, 297, 301, 299, 300], 'faces': [140, 191, 204, 208, 209, 207], 'type': 'upper rhombic prism'},
{'vertices': [105, 106, 113, 114, 130, 131, 139, 141], 'edges': [224, 240, 243, 242, 284, 286, 287, 311, 310, 316, 317, 315], 'faces': [157, 195, 217, 223, 221, 222], 'type': 'upper rhombic prism'},
{'vertices': [107, 108, 116, 117, 132, 134, 142, 143], 'edges': [227, 248, 251, 249, 291, 296, 298, 319, 318, 323, 322, 321], 'faces': [164, 205, 224, 229, 228, 227], 'type': 'upper rhombic prism'},
{'vertices': [112, 113, 118, 119, 138, 139, 144, 145], 'edges': [239, 252, 255, 254, 309, 312, 310, 325, 326, 329, 330, 328], 'faces': [167, 219, 230, 236, 234, 235], 'type': 'upper rhombic prism'},
{'vertices': [115, 116, 120, 122, 140, 142, 144, 147], 'edges': [247, 257, 262, 264, 314, 320, 318, 327, 324, 335, 334, 336], 'faces': [175, 226, 232, 240, 242, 241], 'type': 'upper rhombic prism'},
# rhombic dodecahedra
{'vertices': [5, 9, 11, 13, 29, 31, 34, 37, 38, 39, 60, 61, 62, 63], 'edges': [10, 15, 17, 18, 47, 51, 57, 58, 66, 67, 68, 69, 70, 71, 118, 119, 121, 120, 122, 123, 126, 124, 127, 125], 'faces': [5, 26, 34, 36, 37, 72, 73, 74, 76, 78, 75, 77], 'type': 'rhombic dodecahedron'},
{'vertices': [15, 17, 21, 22, 41, 42, 46, 48, 54, 55, 64, 65, 69, 70], 'edges': [24, 32, 33, 34, 73, 77, 75, 85, 89, 90, 105, 104, 107, 108, 128, 129, 131, 130, 139, 140, 143, 144, 141, 142], 'faces': [12, 41, 49, 61, 64, 79, 80, 86, 88, 89, 87, 90], 'type': 'rhombic dodecahedron'},
{'vertices': [18, 19, 23, 24, 43, 44, 49, 51, 56, 57, 66, 67, 71, 73], 'edges': [27, 35, 37, 38, 78, 81, 82, 92, 97, 96, 110, 111, 112, 113, 132, 133, 134, 135, 146, 145, 152, 153, 150, 151], 'faces': [14, 45, 54, 67, 68, 81, 82, 91, 96, 97, 95, 98], 'type': 'rhombic dodecahedron'},
{'vertices': [76, 78, 82, 83, 92, 93, 98, 100, 105, 106, 125, 126, 130, 131], 'edges': [161, 169, 172, 171, 193, 195, 194, 206, 209, 210, 221, 222, 223, 224, 273, 272, 275, 274, 284, 285, 287, 289, 286, 288], 'faces': [109, 125, 134, 143, 144, 184, 186, 194, 195, 197, 196, 198], 'type': 'rhombic dodecahedron'},
{'vertices': [79, 80, 84, 85, 94, 95, 101, 103, 107, 108, 127, 128, 132, 134], 'edges': [165, 174, 175, 176, 197, 198, 199, 212, 217, 216, 226, 225, 228, 227, 276, 278, 279, 280, 291, 290, 298, 295, 296, 297], 'faces': [111, 127, 139, 145, 146, 189, 190, 199, 205, 203, 206, 204], 'type': 'rhombic dodecahedron'},
{'vertices': [86, 87, 88, 89, 110, 111, 112, 115, 118, 120, 136, 138, 140, 144], 'edges': [180, 182, 186, 184, 232, 234, 236, 237, 245, 244, 253, 252, 257, 258, 302, 304, 308, 309, 314, 313, 326, 324, 325, 327], 'faces': [119, 152, 159, 166, 170, 211, 216, 220, 231, 230, 232, 233], 'type': 'rhombic dodecahedron'},
# concertina square prisms
{'vertices': [7, 9, 13, 17, 22, 25, 33, 34, 38, 42, 48, 50], 'edges': [11, 17, 23, 33, 39, 40, 55, 58, 59, 69, 68, 76, 75, 90, 89, 93, 94, 95], 'faces': [15, 28, 36, 39, 49, 51, 53, 52], 'type': 'concertina square prism'},
{'vertices': [10, 11, 13, 19, 24, 25, 36, 37, 39, 44, 51, 52], 'edges': [14, 18, 28, 37, 39, 41, 63, 67, 65, 70, 71, 80, 82, 97, 96, 99, 98, 100], 'faces': [16, 35, 37, 44, 54, 55, 57, 56], 'type': 'concertina square prism'},
{'vertices': [20, 21, 22, 23, 24, 25, 53, 54, 55, 56, 57, 58], 'edges': [31, 34, 36, 38, 40, 41, 103, 105, 106, 107, 108, 109, 110, 113, 112, 115, 114, 116], 'faces': [17, 62, 64, 65, 68, 69, 71, 70], 'type': 'concertina square prism'},
{'vertices': [27, 29, 33, 34, 60, 61, 78, 83, 93, 96, 100, 102], 'edges': [46, 54, 57, 59, 118, 120, 121, 162, 172, 170, 194, 201, 200, 210, 209, 214, 215, 213], 'faces': [27, 73, 108, 128, 134, 138, 137, 136], 'type': 'concertina square prism'},
{'vertices': [30, 31, 36, 37, 60, 62, 80, 85, 95, 96, 103, 104], 'edges': [50, 64, 66, 65, 119, 123, 122, 166, 175, 177, 199, 202, 200, 216, 217, 218, 219, 220], 'faces': [33, 74, 113, 129, 139, 140, 141, 142], 'type': 'concertina square prism'},
{'vertices': [32, 33, 41, 42, 64, 65, 82, 83, 105, 106, 113, 114], 'edges': [56, 74, 76, 77, 128, 130, 131, 168, 170, 171, 222, 223, 224, 240, 238, 243, 242, 241], 'faces': [40, 80, 107, 144, 154, 157, 158, 156], 'type': 'concertina square prism'},
{'vertices': [35, 36, 43, 44, 66, 67, 84, 85, 107, 108, 116, 117], 'edges': [62, 79, 80, 81, 132, 135, 134, 173, 177, 176, 225, 228, 227, 248, 246, 251, 249, 250], 'faces': [43, 82, 112, 146, 162, 164, 165, 163], 'type': 'concertina square prism'},
{'vertices': [45, 46, 53, 54, 64, 69, 87, 89, 112, 113, 118, 119], 'edges': [86, 102, 104, 106, 129, 139, 140, 181, 186, 185, 237, 239, 238, 253, 252, 255, 254, 256], 'faces': [63, 86, 118, 153, 166, 167, 169, 168], 'type': 'concertina square prism'},
{'vertices': [47, 49, 53, 56, 66, 71, 88, 89, 115, 116, 120, 122], 'edges': [91, 101, 111, 109, 133, 146, 145, 183, 184, 185, 244, 247, 246, 258, 257, 262, 264, 263], 'faces': [66, 91, 117, 160, 170, 175, 176, 174], 'type': 'concertina square prism'},
{'vertices': [91, 92, 93, 94, 95, 96, 124, 125, 126, 127, 128, 129], 'edges': [192, 195, 196, 198, 201, 202, 269, 273, 271, 274, 275, 277, 276, 279, 280, 281, 283, 282], 'faces': [130, 185, 186, 187, 190, 193, 191, 192], 'type': 'concertina square prism'},
{'vertices': [97, 98, 105, 110, 112, 113, 124, 125, 130, 136, 138, 139], 'edges': [205, 221, 233, 236, 240, 239, 270, 272, 271, 284, 285, 303, 302, 308, 309, 310, 311, 312], 'faces': [155, 183, 194, 210, 216, 217, 219, 218], 'type': 'concertina square prism'},
{'vertices': [99, 101, 107, 111, 115, 116, 124, 127, 132, 136, 140, 142], 'edges': [211, 226, 235, 245, 248, 247, 268, 278, 277, 290, 291, 303, 304, 313, 314, 318, 319, 320], 'faces': [161, 188, 199, 212, 220, 224, 226, 225], 'type': 'concertina square prism'},
]