1104 lines
30 KiB
Swift
1104 lines
30 KiB
Swift
@main
|
|
struct Day19: Puzzle {
|
|
func run() {
|
|
var locations = Array(repeating: [Vector(0, 0, 0)], count: input.count)
|
|
|
|
while input.count > 1 {
|
|
for i in input.indices {
|
|
for j in input.index(after: i)..<input.endIndex {
|
|
if let (matrix, dist) = findMatch(input[j], reference: input[i]) {
|
|
let mapped = input[j].map { matrix * $0 - dist }
|
|
let all = Set(input[i]).union(mapped)
|
|
input[i] = Array(all)
|
|
input[j] = []
|
|
|
|
locations[i] = Array(Set(locations[i]).union(locations[j].map { matrix * $0 - dist }))
|
|
locations[j] = []
|
|
}
|
|
}
|
|
}
|
|
input.removeAll { $0.isEmpty }
|
|
locations.removeAll { $0.isEmpty }
|
|
}
|
|
print("Part 1:", input[0].count)
|
|
|
|
var maxDist = 0
|
|
for i in locations[0].indices {
|
|
for j in 0..<i {
|
|
maxDist = max(maxDist, manhattenDistance(locations[0][i], locations[0][j]))
|
|
}
|
|
}
|
|
print("Part 2:", maxDist)
|
|
}
|
|
}
|
|
|
|
func findMatch(_ input: [Vector], reference: [Vector]) -> (Matrix, Vector)? {
|
|
let referenceSet = Set(reference)
|
|
|
|
for matrix in directions {
|
|
let points = input.map { matrix * $0 }
|
|
|
|
let possibleShifts = findPossibleShifts(points, reference)
|
|
for shift in possibleShifts {
|
|
let shifted = points.lazy.map { $0 - shift }.filter { referenceSet.contains($0) }.count
|
|
if shifted >= 12 {
|
|
return (matrix, shift)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return nil
|
|
}
|
|
|
|
func findPossibleShifts(_ a: [Vector], _ b: [Vector]) -> Set<Vector> {
|
|
var result: Set<Vector> = []
|
|
for pointA in a {
|
|
for pointB in b {
|
|
result.insert(pointA - pointB)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
|
|
|
|
struct Vector: Hashable {
|
|
var x, y, z: Int
|
|
|
|
init(_ x: Int, _ y: Int, _ z: Int) {
|
|
self.x = x
|
|
self.y = y
|
|
self.z = z
|
|
}
|
|
|
|
static func +(lhs: Vector, rhs: Vector) -> Vector {
|
|
Vector(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z)
|
|
}
|
|
|
|
static func - (lhs: Vector, rhs: Vector) -> Vector {
|
|
.init(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z)
|
|
}
|
|
|
|
}
|
|
|
|
func manhattenDistance(_ a: Vector, _ b: Vector) -> Int {
|
|
abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)
|
|
}
|
|
|
|
struct Matrix {
|
|
var a, b, c: Int
|
|
var d, e, f: Int
|
|
var g, h, i: Int
|
|
|
|
init(_ a: Int, _ b: Int, _ c: Int, _ d: Int, _ e: Int, _ f: Int, _ g: Int, _ h: Int, _ i: Int) {
|
|
(self.a, self.b, self.c) = (a, b, c)
|
|
(self.d, self.e, self.f) = (d, e, f)
|
|
(self.g, self.h, self.i) = (g, h, i)
|
|
}
|
|
|
|
init(rows a: Vector, _ b: Vector, _ c: Vector) {
|
|
self.init(
|
|
a.x, a.y, a.z,
|
|
b.x, b.y, b.z,
|
|
c.x, c.y, c.z
|
|
)
|
|
}
|
|
}
|
|
|
|
func *(lhs: Matrix, rhs: Vector) -> Vector {
|
|
Vector(
|
|
lhs.a * rhs.x + lhs.b * rhs.y + lhs.c * rhs.z,
|
|
lhs.d * rhs.x + lhs.e * rhs.y + lhs.f * rhs.z,
|
|
lhs.g * rhs.x + lhs.h * rhs.y + lhs.i * rhs.z
|
|
)
|
|
}
|
|
|
|
func cross(_ a: Vector, _ b: Vector) -> Vector {
|
|
Vector(
|
|
a.y * b.z - a.z * b.y,
|
|
a.z * b.x - a.x * b.z,
|
|
a.x * b.y - a.y * b.x
|
|
)
|
|
}
|
|
|
|
func dot(_ a: Vector, _ b: Vector) -> Int {
|
|
a.x * b.x + a.y * b.y + a.z * b.z
|
|
}
|
|
|
|
func calcDirections() -> [Matrix] {
|
|
let axes: [Vector] = [
|
|
.init(1, 0, 0),
|
|
.init(0, 1, 0),
|
|
.init(0, 0, 1),
|
|
.init(-1, 0, 0),
|
|
.init(0, -1, 0),
|
|
.init(0, 0, -1),
|
|
]
|
|
|
|
var result: [Matrix] = []
|
|
|
|
for fi in axes.indices {
|
|
let forward = axes[fi]
|
|
for fj in axes.indices where fi != fj {
|
|
let up = axes[fj]
|
|
if dot(forward, up) != 0 {
|
|
continue
|
|
}
|
|
|
|
let right = cross(up, forward)
|
|
result.append(.init(rows: forward, right, up))
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
let directions = calcDirections()
|
|
|
|
var input: [[Vector]] = [
|
|
[
|
|
Vector(-779,774,841),
|
|
Vector(-623,687,-622),
|
|
Vector(-569,692,-472),
|
|
Vector(-815,791,890),
|
|
Vector(545,-807,-699),
|
|
Vector(655,564,594),
|
|
Vector(-781,645,919),
|
|
Vector(561,908,-538),
|
|
Vector(-453,-675,694),
|
|
Vector(-885,-565,-404),
|
|
Vector(596,-595,-679),
|
|
Vector(464,-620,445),
|
|
Vector(481,-658,-759),
|
|
Vector(-574,-702,800),
|
|
Vector(-145,151,93),
|
|
Vector(-814,-575,-354),
|
|
Vector(-611,653,-643),
|
|
Vector(532,950,-506),
|
|
Vector(-475,-638,816),
|
|
Vector(403,-510,477),
|
|
Vector(736,559,518),
|
|
Vector(-17,7,140),
|
|
Vector(-861,-741,-321),
|
|
Vector(513,-554,586),
|
|
Vector(518,512,519),
|
|
Vector(549,924,-562),
|
|
],
|
|
[
|
|
Vector(689,772,-758),
|
|
Vector(537,371,685),
|
|
Vector(-672,-658,689),
|
|
Vector(123,51,-21),
|
|
Vector(-401,435,-501),
|
|
Vector(12,-98,95),
|
|
Vector(735,588,-720),
|
|
Vector(844,-573,-785),
|
|
Vector(-423,-889,-362),
|
|
Vector(-816,-649,595),
|
|
Vector(655,605,-727),
|
|
Vector(785,-703,-813),
|
|
Vector(536,-624,720),
|
|
Vector(-360,-902,-383),
|
|
Vector(-432,400,599),
|
|
Vector(-689,-669,583),
|
|
Vector(625,506,710),
|
|
Vector(455,445,698),
|
|
Vector(650,-556,751),
|
|
Vector(747,-531,-750),
|
|
Vector(-346,-875,-402),
|
|
Vector(-417,420,420),
|
|
Vector(-501,413,-386),
|
|
Vector(490,-584,661),
|
|
Vector(-499,374,505),
|
|
Vector(-449,476,-453),
|
|
],
|
|
[
|
|
Vector(663,667,-407),
|
|
Vector(-595,-818,-576),
|
|
Vector(-309,605,562),
|
|
Vector(-598,-610,-587),
|
|
Vector(-517,-586,691),
|
|
Vector(46,-151,22),
|
|
Vector(-881,281,-669),
|
|
Vector(732,-947,-380),
|
|
Vector(587,624,746),
|
|
Vector(-55,-3,100),
|
|
Vector(-458,-497,709),
|
|
Vector(593,687,-248),
|
|
Vector(572,498,738),
|
|
Vector(694,-939,-344),
|
|
Vector(401,-634,682),
|
|
Vector(-847,239,-653),
|
|
Vector(397,-527,600),
|
|
Vector(-610,-743,-467),
|
|
Vector(-474,659,598),
|
|
Vector(-414,-596,646),
|
|
Vector(657,542,-317),
|
|
Vector(-397,630,676),
|
|
Vector(378,-659,657),
|
|
Vector(-848,236,-666),
|
|
Vector(514,509,638),
|
|
Vector(753,-870,-512),
|
|
],
|
|
[
|
|
Vector(438,673,-607),
|
|
Vector(-400,-430,341),
|
|
Vector(-795,-514,-738),
|
|
Vector(-705,-416,-761),
|
|
Vector(760,-806,792),
|
|
Vector(-469,803,349),
|
|
Vector(670,-798,675),
|
|
Vector(363,648,-428),
|
|
Vector(-349,-447,506),
|
|
Vector(-425,412,-482),
|
|
Vector(520,455,660),
|
|
Vector(452,-616,-878),
|
|
Vector(553,372,771),
|
|
Vector(24,68,-59),
|
|
Vector(654,413,728),
|
|
Vector(-464,-413,481),
|
|
Vector(-404,598,-552),
|
|
Vector(-459,781,522),
|
|
Vector(538,-597,-851),
|
|
Vector(-346,488,-476),
|
|
Vector(420,-481,-842),
|
|
Vector(-470,896,540),
|
|
Vector(651,-822,721),
|
|
Vector(421,522,-506),
|
|
Vector(-690,-511,-769),
|
|
],
|
|
[
|
|
Vector(844,592,402),
|
|
Vector(-636,679,516),
|
|
Vector(-720,-400,911),
|
|
Vector(-509,-714,-788),
|
|
Vector(-826,755,-326),
|
|
Vector(39,-121,70),
|
|
Vector(661,741,-539),
|
|
Vector(727,636,527),
|
|
Vector(869,-741,-241),
|
|
Vector(742,-762,619),
|
|
Vector(-703,-565,962),
|
|
Vector(725,-852,686),
|
|
Vector(-639,710,621),
|
|
Vector(829,579,592),
|
|
Vector(654,730,-279),
|
|
Vector(-737,-540,847),
|
|
Vector(-734,702,606),
|
|
Vector(-487,-705,-778),
|
|
Vector(799,-689,-246),
|
|
Vector(-754,837,-380),
|
|
Vector(854,-715,-315),
|
|
Vector(754,-648,701),
|
|
Vector(-615,725,-335),
|
|
Vector(-628,-713,-672),
|
|
Vector(736,727,-443),
|
|
],
|
|
[
|
|
Vector(-405,590,-366),
|
|
Vector(-409,651,-375),
|
|
Vector(439,489,371),
|
|
Vector(-542,-507,536),
|
|
Vector(-367,404,-381),
|
|
Vector(299,-367,848),
|
|
Vector(-670,-452,-700),
|
|
Vector(-49,132,11),
|
|
Vector(340,-226,895),
|
|
Vector(478,-800,-337),
|
|
Vector(613,500,-723),
|
|
Vector(279,-348,939),
|
|
Vector(-558,-502,654),
|
|
Vector(390,411,415),
|
|
Vector(366,500,429),
|
|
Vector(400,-731,-350),
|
|
Vector(-612,-578,-728),
|
|
Vector(629,662,-720),
|
|
Vector(-522,-490,-688),
|
|
Vector(-453,406,393),
|
|
Vector(-679,460,405),
|
|
Vector(-652,411,356),
|
|
Vector(-532,-505,547),
|
|
Vector(707,591,-772),
|
|
Vector(635,-703,-379),
|
|
],
|
|
[
|
|
Vector(539,-841,504),
|
|
Vector(743,731,-445),
|
|
Vector(-822,-423,673),
|
|
Vector(-770,-492,627),
|
|
Vector(-762,805,536),
|
|
Vector(622,783,749),
|
|
Vector(-757,320,-629),
|
|
Vector(710,684,-611),
|
|
Vector(393,-892,456),
|
|
Vector(-769,705,691),
|
|
Vector(365,-675,-379),
|
|
Vector(-831,401,-736),
|
|
Vector(561,779,740),
|
|
Vector(-815,623,585),
|
|
Vector(385,-726,-591),
|
|
Vector(305,-611,-528),
|
|
Vector(-26,-6,-67),
|
|
Vector(-690,441,-682),
|
|
Vector(-830,-855,-756),
|
|
Vector(-707,-427,667),
|
|
Vector(808,821,734),
|
|
Vector(660,755,-621),
|
|
Vector(444,-961,435),
|
|
Vector(-831,-858,-732),
|
|
Vector(-873,-889,-537),
|
|
Vector(-116,-144,21),
|
|
],
|
|
[
|
|
Vector(620,-673,-810),
|
|
Vector(601,-454,-802),
|
|
Vector(-496,543,-614),
|
|
Vector(-596,554,-672),
|
|
Vector(963,-487,692),
|
|
Vector(-701,-396,401),
|
|
Vector(808,816,748),
|
|
Vector(638,-546,-875),
|
|
Vector(887,-534,765),
|
|
Vector(-604,428,-687),
|
|
Vector(916,-611,754),
|
|
Vector(-456,393,374),
|
|
Vector(-554,-588,-462),
|
|
Vector(549,385,-763),
|
|
Vector(-420,447,209),
|
|
Vector(-784,-504,377),
|
|
Vector(811,771,781),
|
|
Vector(-510,-687,-472),
|
|
Vector(-725,-524,511),
|
|
Vector(459,510,-757),
|
|
Vector(795,813,747),
|
|
Vector(71,-145,-43),
|
|
Vector(390,365,-693),
|
|
Vector(-534,422,297),
|
|
Vector(-565,-706,-544),
|
|
Vector(122,13,-148),
|
|
],
|
|
[
|
|
Vector(300,838,-511),
|
|
Vector(723,-429,-827),
|
|
Vector(-489,-531,-733),
|
|
Vector(-862,690,478),
|
|
Vector(272,779,-641),
|
|
Vector(365,729,650),
|
|
Vector(-749,-606,618),
|
|
Vector(-412,-399,-712),
|
|
Vector(-420,-363,-674),
|
|
Vector(-763,627,434),
|
|
Vector(584,-407,497),
|
|
Vector(-725,663,-381),
|
|
Vector(702,-366,-840),
|
|
Vector(358,649,667),
|
|
Vector(-832,581,-377),
|
|
Vector(683,-352,-813),
|
|
Vector(-773,672,537),
|
|
Vector(699,-507,475),
|
|
Vector(-616,-486,630),
|
|
Vector(-700,638,-358),
|
|
Vector(327,683,834),
|
|
Vector(632,-455,538),
|
|
Vector(335,741,-469),
|
|
Vector(-541,-595,615),
|
|
Vector(-76,130,123),
|
|
],
|
|
[
|
|
Vector(643,-906,-639),
|
|
Vector(554,-930,-576),
|
|
Vector(-438,-780,848),
|
|
Vector(885,648,-659),
|
|
Vector(-617,748,624),
|
|
Vector(708,-887,-479),
|
|
Vector(562,675,352),
|
|
Vector(513,-416,680),
|
|
Vector(-551,607,575),
|
|
Vector(867,701,-509),
|
|
Vector(567,599,433),
|
|
Vector(-593,592,-482),
|
|
Vector(533,-475,546),
|
|
Vector(-618,-692,-723),
|
|
Vector(-629,538,-371),
|
|
Vector(928,733,-581),
|
|
Vector(116,-32,-131),
|
|
Vector(405,-499,656),
|
|
Vector(515,674,570),
|
|
Vector(-629,-736,-551),
|
|
Vector(71,-144,33),
|
|
Vector(-384,-744,683),
|
|
Vector(-655,512,-481),
|
|
Vector(-658,-823,-634),
|
|
Vector(-413,-666,760),
|
|
Vector(-507,716,685),
|
|
],
|
|
[
|
|
Vector(392,400,680),
|
|
Vector(715,-577,488),
|
|
Vector(872,575,-780),
|
|
Vector(-527,-916,-745),
|
|
Vector(-756,759,-452),
|
|
Vector(-341,-954,-730),
|
|
Vector(360,461,570),
|
|
Vector(553,-799,-423),
|
|
Vector(-489,-888,625),
|
|
Vector(731,-478,552),
|
|
Vector(-844,478,532),
|
|
Vector(609,-456,515),
|
|
Vector(777,572,-702),
|
|
Vector(-439,-817,615),
|
|
Vector(641,-709,-383),
|
|
Vector(501,510,636),
|
|
Vector(-705,828,-431),
|
|
Vector(-764,593,595),
|
|
Vector(-610,708,-500),
|
|
Vector(-406,-864,449),
|
|
Vector(-77,-136,-15),
|
|
Vector(515,-651,-411),
|
|
Vector(-588,-912,-736),
|
|
Vector(1,17,72),
|
|
Vector(844,455,-646),
|
|
Vector(-784,542,383),
|
|
],
|
|
[
|
|
Vector(-705,-729,760),
|
|
Vector(-796,-680,666),
|
|
Vector(34,174,59),
|
|
Vector(681,672,720),
|
|
Vector(-634,-677,682),
|
|
Vector(685,-381,-430),
|
|
Vector(736,900,-429),
|
|
Vector(-892,-338,-314),
|
|
Vector(-28,77,-93),
|
|
Vector(-796,472,419),
|
|
Vector(731,-487,-512),
|
|
Vector(-885,399,-599),
|
|
Vector(746,727,-451),
|
|
Vector(-885,458,443),
|
|
Vector(678,-536,-330),
|
|
Vector(652,-373,448),
|
|
Vector(666,-453,483),
|
|
Vector(-706,-323,-352),
|
|
Vector(-807,414,492),
|
|
Vector(734,-275,479),
|
|
Vector(602,750,578),
|
|
Vector(-890,436,-400),
|
|
Vector(591,761,630),
|
|
Vector(-645,-332,-356),
|
|
Vector(-836,448,-626),
|
|
Vector(735,709,-336),
|
|
],
|
|
[
|
|
Vector(560,-631,663),
|
|
Vector(3,-21,-120),
|
|
Vector(425,-576,-600),
|
|
Vector(455,612,-831),
|
|
Vector(-472,492,-534),
|
|
Vector(615,888,330),
|
|
Vector(-382,383,326),
|
|
Vector(414,511,-837),
|
|
Vector(76,90,15),
|
|
Vector(-423,476,-725),
|
|
Vector(-568,-599,563),
|
|
Vector(751,919,441),
|
|
Vector(480,-626,-579),
|
|
Vector(-464,570,-714),
|
|
Vector(425,438,-790),
|
|
Vector(-744,-590,-577),
|
|
Vector(461,-722,-487),
|
|
Vector(-459,-674,578),
|
|
Vector(-688,-533,-461),
|
|
Vector(-366,425,292),
|
|
Vector(-369,380,325),
|
|
Vector(-448,-466,575),
|
|
Vector(597,-635,584),
|
|
Vector(647,-481,631),
|
|
Vector(753,946,365),
|
|
Vector(-709,-755,-482),
|
|
],
|
|
[
|
|
Vector(-793,-712,526),
|
|
Vector(43,-66,-77),
|
|
Vector(-592,814,658),
|
|
Vector(608,-557,-325),
|
|
Vector(-817,-758,545),
|
|
Vector(-447,441,-677),
|
|
Vector(-476,805,776),
|
|
Vector(377,-808,643),
|
|
Vector(685,332,-669),
|
|
Vector(-306,539,-675),
|
|
Vector(-533,-777,-578),
|
|
Vector(527,469,775),
|
|
Vector(576,-489,-523),
|
|
Vector(666,440,-717),
|
|
Vector(418,-765,542),
|
|
Vector(-678,-863,-623),
|
|
Vector(623,-570,-556),
|
|
Vector(-625,-783,-492),
|
|
Vector(460,-697,676),
|
|
Vector(653,391,833),
|
|
Vector(-611,841,744),
|
|
Vector(774,405,-693),
|
|
Vector(-801,-829,436),
|
|
Vector(678,570,758),
|
|
Vector(-11,91,43),
|
|
Vector(-418,455,-584),
|
|
],
|
|
[
|
|
Vector(805,-443,-751),
|
|
Vector(494,718,482),
|
|
Vector(2,-16,82),
|
|
Vector(104,91,-72),
|
|
Vector(-597,622,-615),
|
|
Vector(-753,481,430),
|
|
Vector(-531,502,409),
|
|
Vector(-672,731,-630),
|
|
Vector(-588,446,525),
|
|
Vector(571,-495,655),
|
|
Vector(-464,742,-627),
|
|
Vector(385,808,-378),
|
|
Vector(751,-407,-916),
|
|
Vector(382,821,-377),
|
|
Vector(-351,-554,-767),
|
|
Vector(-338,-407,491),
|
|
Vector(560,-451,483),
|
|
Vector(-450,-491,-811),
|
|
Vector(478,767,673),
|
|
Vector(531,-364,566),
|
|
Vector(-440,-536,-708),
|
|
Vector(-297,-435,349),
|
|
Vector(776,-521,-828),
|
|
Vector(572,726,662),
|
|
Vector(427,824,-344),
|
|
Vector(-266,-423,363),
|
|
],
|
|
[
|
|
Vector(-459,-573,-393),
|
|
Vector(-541,-681,657),
|
|
Vector(-691,578,-927),
|
|
Vector(846,-686,740),
|
|
Vector(854,-755,-493),
|
|
Vector(-670,527,-858),
|
|
Vector(-18,154,-79),
|
|
Vector(540,944,-704),
|
|
Vector(-392,942,855),
|
|
Vector(-622,673,-807),
|
|
Vector(-435,-635,739),
|
|
Vector(-453,-688,-389),
|
|
Vector(673,-696,718),
|
|
Vector(689,-806,-510),
|
|
Vector(549,934,-726),
|
|
Vector(345,935,570),
|
|
Vector(541,828,-585),
|
|
Vector(122,-41,-59),
|
|
Vector(-499,-636,-458),
|
|
Vector(382,940,769),
|
|
Vector(-377,756,817),
|
|
Vector(714,-691,-476),
|
|
Vector(-590,-628,839),
|
|
Vector(655,-685,833),
|
|
Vector(-386,695,813),
|
|
Vector(394,886,543),
|
|
],
|
|
[
|
|
Vector(729,789,-842),
|
|
Vector(-819,-334,502),
|
|
Vector(-741,-438,568),
|
|
Vector(399,-785,-551),
|
|
Vector(682,756,-676),
|
|
Vector(753,706,-666),
|
|
Vector(-9,-118,-9),
|
|
Vector(318,-711,-658),
|
|
Vector(-857,-784,-531),
|
|
Vector(439,-644,-605),
|
|
Vector(-891,-827,-750),
|
|
Vector(479,467,552),
|
|
Vector(659,-682,340),
|
|
Vector(-106,61,-102),
|
|
Vector(-681,548,823),
|
|
Vector(-664,604,849),
|
|
Vector(-860,-785,-555),
|
|
Vector(-613,351,-759),
|
|
Vector(-677,411,-908),
|
|
Vector(550,-780,387),
|
|
Vector(-728,431,-696),
|
|
Vector(-844,-469,484),
|
|
Vector(437,638,591),
|
|
Vector(-693,572,807),
|
|
Vector(491,488,586),
|
|
Vector(669,-789,409),
|
|
],
|
|
[
|
|
Vector(-418,-800,568),
|
|
Vector(690,-779,507),
|
|
Vector(441,-370,-505),
|
|
Vector(-573,-900,575),
|
|
Vector(-327,-603,-487),
|
|
Vector(552,-453,-472),
|
|
Vector(863,-801,517),
|
|
Vector(-436,328,515),
|
|
Vector(420,808,-712),
|
|
Vector(731,415,512),
|
|
Vector(-524,-718,522),
|
|
Vector(491,824,-603),
|
|
Vector(-18,24,64),
|
|
Vector(109,-51,-38),
|
|
Vector(-303,-536,-502),
|
|
Vector(-677,620,-677),
|
|
Vector(-482,397,567),
|
|
Vector(537,800,-622),
|
|
Vector(-442,332,630),
|
|
Vector(706,449,397),
|
|
Vector(484,-411,-606),
|
|
Vector(672,-894,518),
|
|
Vector(-576,655,-745),
|
|
Vector(871,432,448),
|
|
Vector(-517,524,-688),
|
|
Vector(-258,-444,-547),
|
|
],
|
|
[
|
|
Vector(-674,750,495),
|
|
Vector(-412,-547,817),
|
|
Vector(610,-432,859),
|
|
Vector(-410,-437,-273),
|
|
Vector(648,612,-461),
|
|
Vector(-691,786,446),
|
|
Vector(738,446,520),
|
|
Vector(-464,-684,742),
|
|
Vector(637,554,-561),
|
|
Vector(-494,402,-503),
|
|
Vector(33,115,-7),
|
|
Vector(775,424,642),
|
|
Vector(-612,484,-492),
|
|
Vector(541,-269,-637),
|
|
Vector(-545,752,417),
|
|
Vector(720,-493,891),
|
|
Vector(-430,-571,-332),
|
|
Vector(487,-434,-601),
|
|
Vector(-31,4,175),
|
|
Vector(802,545,536),
|
|
Vector(654,-542,750),
|
|
Vector(-302,-461,-356),
|
|
Vector(516,-357,-523),
|
|
Vector(522,627,-453),
|
|
Vector(-459,-765,818),
|
|
Vector(-593,412,-547),
|
|
],
|
|
[
|
|
Vector(-62,159,-61),
|
|
Vector(396,-693,-479),
|
|
Vector(-641,729,543),
|
|
Vector(-709,-486,661),
|
|
Vector(-552,-810,-705),
|
|
Vector(-796,708,-772),
|
|
Vector(-656,620,468),
|
|
Vector(522,-264,566),
|
|
Vector(-653,609,676),
|
|
Vector(-662,-436,507),
|
|
Vector(360,-565,-518),
|
|
Vector(-774,808,-657),
|
|
Vector(7,-11,2),
|
|
Vector(419,-516,-543),
|
|
Vector(409,-300,420),
|
|
Vector(352,889,-418),
|
|
Vector(383,849,609),
|
|
Vector(341,867,-488),
|
|
Vector(406,888,-551),
|
|
Vector(-733,760,-705),
|
|
Vector(501,-319,516),
|
|
Vector(-741,-399,511),
|
|
Vector(404,870,387),
|
|
Vector(499,905,552),
|
|
Vector(-725,-728,-734),
|
|
Vector(-597,-770,-717),
|
|
],
|
|
[
|
|
Vector(-649,836,908),
|
|
Vector(463,700,656),
|
|
Vector(552,809,589),
|
|
Vector(524,739,-436),
|
|
Vector(758,-723,501),
|
|
Vector(528,-639,-338),
|
|
Vector(484,-540,-348),
|
|
Vector(-914,776,-711),
|
|
Vector(-716,790,773),
|
|
Vector(-942,-616,878),
|
|
Vector(4,117,4),
|
|
Vector(-627,-773,-678),
|
|
Vector(-917,764,-831),
|
|
Vector(376,757,614),
|
|
Vector(-810,864,802),
|
|
Vector(699,-703,635),
|
|
Vector(-646,-554,-686),
|
|
Vector(539,-521,-420),
|
|
Vector(579,871,-390),
|
|
Vector(675,-831,525),
|
|
Vector(-184,-41,64),
|
|
Vector(-950,617,-725),
|
|
Vector(-664,-681,-751),
|
|
Vector(-989,-740,816),
|
|
Vector(-913,-693,889),
|
|
Vector(610,802,-431),
|
|
],
|
|
[
|
|
Vector(-328,515,-481),
|
|
Vector(-417,574,-499),
|
|
Vector(-621,584,416),
|
|
Vector(-465,-344,-508),
|
|
Vector(595,590,900),
|
|
Vector(793,-530,-444),
|
|
Vector(-358,-340,-590),
|
|
Vector(-386,-522,745),
|
|
Vector(154,-26,152),
|
|
Vector(-358,-580,619),
|
|
Vector(705,529,868),
|
|
Vector(50,99,-7),
|
|
Vector(799,454,-514),
|
|
Vector(540,-327,651),
|
|
Vector(577,-349,529),
|
|
Vector(-755,704,388),
|
|
Vector(-427,471,-544),
|
|
Vector(661,639,759),
|
|
Vector(774,366,-628),
|
|
Vector(-490,-321,-533),
|
|
Vector(513,-448,545),
|
|
Vector(-677,701,483),
|
|
Vector(-398,-670,707),
|
|
Vector(667,-515,-452),
|
|
Vector(678,-457,-552),
|
|
Vector(828,531,-592),
|
|
],
|
|
[
|
|
Vector(-354,917,781),
|
|
Vector(-281,841,734),
|
|
Vector(639,-856,-861),
|
|
Vector(562,853,614),
|
|
Vector(600,-872,-861),
|
|
Vector(650,-340,634),
|
|
Vector(-669,-830,764),
|
|
Vector(615,792,515),
|
|
Vector(-514,-535,-659),
|
|
Vector(-645,-747,872),
|
|
Vector(566,-839,-856),
|
|
Vector(-581,-624,-768),
|
|
Vector(399,493,-762),
|
|
Vector(-262,577,-795),
|
|
Vector(535,464,-683),
|
|
Vector(391,829,533),
|
|
Vector(-535,-771,744),
|
|
Vector(-368,738,-823),
|
|
Vector(-397,644,-749),
|
|
Vector(74,32,12),
|
|
Vector(587,-316,723),
|
|
Vector(490,-359,569),
|
|
Vector(-292,870,657),
|
|
Vector(549,579,-709),
|
|
Vector(-556,-448,-716),
|
|
],
|
|
[
|
|
Vector(-854,-686,494),
|
|
Vector(471,874,648),
|
|
Vector(488,-734,-887),
|
|
Vector(764,427,-727),
|
|
Vector(-759,681,-745),
|
|
Vector(-725,-714,449),
|
|
Vector(-605,728,-695),
|
|
Vector(795,538,-591),
|
|
Vector(458,-463,533),
|
|
Vector(405,770,623),
|
|
Vector(387,-740,-928),
|
|
Vector(-843,-741,525),
|
|
Vector(477,-316,412),
|
|
Vector(-885,549,507),
|
|
Vector(-750,-482,-862),
|
|
Vector(822,462,-589),
|
|
Vector(-158,-21,43),
|
|
Vector(461,812,673),
|
|
Vector(-755,760,-782),
|
|
Vector(-166,125,-115),
|
|
Vector(448,-380,515),
|
|
Vector(-700,-503,-917),
|
|
Vector(-884,648,444),
|
|
Vector(-824,602,404),
|
|
Vector(-846,-390,-881),
|
|
Vector(314,-693,-917),
|
|
],
|
|
[
|
|
Vector(-886,423,811),
|
|
Vector(785,453,423),
|
|
Vector(-396,553,-508),
|
|
Vector(-81,38,127),
|
|
Vector(-415,618,-348),
|
|
Vector(-522,-528,979),
|
|
Vector(706,-897,440),
|
|
Vector(-479,-748,-503),
|
|
Vector(652,-801,-610),
|
|
Vector(-610,-708,-592),
|
|
Vector(603,-785,-419),
|
|
Vector(611,-707,-599),
|
|
Vector(693,-894,441),
|
|
Vector(861,406,496),
|
|
Vector(736,672,-473),
|
|
Vector(-636,-503,891),
|
|
Vector(-372,464,-445),
|
|
Vector(814,530,434),
|
|
Vector(-29,-119,-2),
|
|
Vector(-558,-474,814),
|
|
Vector(-803,315,787),
|
|
Vector(773,654,-249),
|
|
Vector(-566,-719,-420),
|
|
Vector(709,-852,407),
|
|
Vector(797,573,-420),
|
|
Vector(-827,443,677),
|
|
],
|
|
[
|
|
Vector(-729,-745,477),
|
|
Vector(-809,409,-655),
|
|
Vector(628,-585,534),
|
|
Vector(405,464,-835),
|
|
Vector(309,581,335),
|
|
Vector(-697,-756,-375),
|
|
Vector(-459,599,568),
|
|
Vector(-390,539,409),
|
|
Vector(-626,-825,-487),
|
|
Vector(-823,-783,491),
|
|
Vector(340,-640,-575),
|
|
Vector(-14,-66,28),
|
|
Vector(-435,584,501),
|
|
Vector(334,-554,-667),
|
|
Vector(420,614,418),
|
|
Vector(352,480,376),
|
|
Vector(-157,-24,-97),
|
|
Vector(560,-387,566),
|
|
Vector(254,-685,-720),
|
|
Vector(359,483,-859),
|
|
Vector(-649,398,-559),
|
|
Vector(-616,-862,-402),
|
|
Vector(547,-618,581),
|
|
Vector(-708,341,-690),
|
|
Vector(288,374,-843),
|
|
Vector(-751,-815,603),
|
|
],
|
|
[
|
|
Vector(409,289,-495),
|
|
Vector(-847,-575,496),
|
|
Vector(413,467,-563),
|
|
Vector(508,-736,-627),
|
|
Vector(-930,-464,529),
|
|
Vector(530,380,608),
|
|
Vector(-764,280,526),
|
|
Vector(628,-869,503),
|
|
Vector(-42,-169,-23),
|
|
Vector(650,-658,-548),
|
|
Vector(503,274,552),
|
|
Vector(624,-954,561),
|
|
Vector(-499,-886,-493),
|
|
Vector(-406,-695,-494),
|
|
Vector(-856,235,571),
|
|
Vector(560,-747,-638),
|
|
Vector(-400,550,-551),
|
|
Vector(-889,-507,630),
|
|
Vector(-500,395,-544),
|
|
Vector(-521,-713,-483),
|
|
Vector(-582,501,-498),
|
|
Vector(-697,304,511),
|
|
Vector(440,253,530),
|
|
Vector(-170,-6,-82),
|
|
Vector(378,387,-577),
|
|
Vector(649,-801,614),
|
|
],
|
|
[
|
|
Vector(367,-847,-431),
|
|
Vector(805,450,827),
|
|
Vector(-651,-490,-341),
|
|
Vector(574,-485,737),
|
|
Vector(86,-58,110),
|
|
Vector(706,386,811),
|
|
Vector(-461,301,-317),
|
|
Vector(-745,-441,-432),
|
|
Vector(419,347,-310),
|
|
Vector(827,413,705),
|
|
Vector(-667,-493,-503),
|
|
Vector(329,-832,-245),
|
|
Vector(466,513,-343),
|
|
Vector(-529,329,473),
|
|
Vector(-599,353,-300),
|
|
Vector(-438,-863,890),
|
|
Vector(-541,433,385),
|
|
Vector(-516,-876,959),
|
|
Vector(371,-838,-492),
|
|
Vector(-673,-834,862),
|
|
Vector(632,-513,611),
|
|
Vector(-573,307,-497),
|
|
Vector(484,-525,649),
|
|
Vector(395,523,-393),
|
|
Vector(-513,468,378),
|
|
],
|
|
[
|
|
Vector(-568,386,784),
|
|
Vector(20,-72,121),
|
|
Vector(-121,24,13),
|
|
Vector(544,777,598),
|
|
Vector(-450,-510,942),
|
|
Vector(778,-914,-767),
|
|
Vector(830,-551,427),
|
|
Vector(-470,476,807),
|
|
Vector(-501,832,-460),
|
|
Vector(-378,-456,860),
|
|
Vector(358,756,528),
|
|
Vector(-717,-908,-600),
|
|
Vector(552,-860,-755),
|
|
Vector(790,-530,473),
|
|
Vector(-589,-465,830),
|
|
Vector(579,-909,-804),
|
|
Vector(-484,781,-295),
|
|
Vector(750,-556,440),
|
|
Vector(434,835,522),
|
|
Vector(-576,-802,-608),
|
|
Vector(727,722,-476),
|
|
Vector(-565,491,815),
|
|
Vector(-467,717,-435),
|
|
Vector(749,712,-303),
|
|
Vector(842,711,-494),
|
|
Vector(-695,-918,-609),
|
|
],
|
|
[
|
|
Vector(417,-415,713),
|
|
Vector(-449,647,870),
|
|
Vector(27,91,28),
|
|
Vector(402,-451,-539),
|
|
Vector(476,382,916),
|
|
Vector(-393,704,754),
|
|
Vector(548,-455,624),
|
|
Vector(-428,869,849),
|
|
Vector(857,539,-539),
|
|
Vector(-777,-601,-329),
|
|
Vector(-126,-2,126),
|
|
Vector(-665,-378,797),
|
|
Vector(827,434,-697),
|
|
Vector(-541,876,-635),
|
|
Vector(319,-462,-354),
|
|
Vector(504,-444,796),
|
|
Vector(-462,887,-670),
|
|
Vector(-714,-362,606),
|
|
Vector(-673,-456,617),
|
|
Vector(460,454,788),
|
|
Vector(488,413,930),
|
|
Vector(-888,-669,-268),
|
|
Vector(842,448,-606),
|
|
Vector(-852,-520,-276),
|
|
Vector(400,-532,-343),
|
|
Vector(-583,781,-617),
|
|
],
|
|
[
|
|
Vector(397,-399,-587),
|
|
Vector(-692,640,606),
|
|
Vector(-549,-426,-591),
|
|
Vector(517,-468,-682),
|
|
Vector(503,792,687),
|
|
Vector(-665,724,474),
|
|
Vector(683,415,-508),
|
|
Vector(469,573,730),
|
|
Vector(-665,-505,-567),
|
|
Vector(-470,730,-541),
|
|
Vector(632,627,-528),
|
|
Vector(747,564,-448),
|
|
Vector(466,-420,-536),
|
|
Vector(72,63,-118),
|
|
Vector(935,-637,679),
|
|
Vector(-375,-466,480),
|
|
Vector(-385,-494,361),
|
|
Vector(931,-631,564),
|
|
Vector(866,-591,627),
|
|
Vector(500,768,688),
|
|
Vector(-305,727,-516),
|
|
Vector(-647,841,608),
|
|
Vector(-776,-459,-594),
|
|
Vector(-413,713,-575),
|
|
Vector(-379,-503,254),
|
|
],
|
|
[
|
|
Vector(-626,-772,665),
|
|
Vector(-298,775,-361),
|
|
Vector(795,558,497),
|
|
Vector(-650,-716,745),
|
|
Vector(470,819,-606),
|
|
Vector(-465,-720,-367),
|
|
Vector(783,706,535),
|
|
Vector(476,861,-359),
|
|
Vector(426,-668,854),
|
|
Vector(16,67,24),
|
|
Vector(-559,670,547),
|
|
Vector(59,-95,-131),
|
|
Vector(754,-852,-774),
|
|
Vector(775,-921,-723),
|
|
Vector(560,-548,826),
|
|
Vector(-456,-698,-357),
|
|
Vector(823,616,623),
|
|
Vector(-452,696,550),
|
|
Vector(706,-801,-628),
|
|
Vector(-457,-579,-473),
|
|
Vector(-310,549,-415),
|
|
Vector(-441,686,552),
|
|
Vector(504,-665,759),
|
|
Vector(461,823,-545),
|
|
Vector(-755,-747,659),
|
|
Vector(-261,576,-366),
|
|
],
|
|
[
|
|
Vector(908,721,721),
|
|
Vector(86,-57,-97),
|
|
Vector(-713,-299,-592),
|
|
Vector(-758,-783,430),
|
|
Vector(-779,-597,500),
|
|
Vector(818,456,-829),
|
|
Vector(-623,521,428),
|
|
Vector(-837,-707,424),
|
|
Vector(907,-562,-902),
|
|
Vector(549,-311,329),
|
|
Vector(528,-351,375),
|
|
Vector(860,594,720),
|
|
Vector(-655,405,401),
|
|
Vector(-714,-392,-401),
|
|
Vector(829,529,-887),
|
|
Vector(912,-363,-865),
|
|
Vector(554,-391,342),
|
|
Vector(695,675,687),
|
|
Vector(-724,-414,-574),
|
|
Vector(-659,757,-629),
|
|
Vector(-69,-11,3),
|
|
Vector(-569,667,-540),
|
|
Vector(-586,448,388),
|
|
Vector(-580,615,-551),
|
|
Vector(907,480,-843),
|
|
Vector(858,-589,-853),
|
|
],
|
|
[
|
|
Vector(-779,-614,345),
|
|
Vector(695,317,397),
|
|
Vector(-753,576,801),
|
|
Vector(505,341,-394),
|
|
Vector(411,432,-345),
|
|
Vector(-667,-708,-706),
|
|
Vector(615,-385,529),
|
|
Vector(643,-378,564),
|
|
Vector(557,300,449),
|
|
Vector(-879,-666,355),
|
|
Vector(483,-862,-738),
|
|
Vector(-112,-148,91),
|
|
Vector(489,503,-397),
|
|
Vector(718,-890,-767),
|
|
Vector(-711,-622,-690),
|
|
Vector(-721,-601,-807),
|
|
Vector(-870,-758,402),
|
|
Vector(33,-26,-17),
|
|
Vector(-604,557,-459),
|
|
Vector(640,-959,-780),
|
|
Vector(-592,444,-618),
|
|
Vector(627,-473,425),
|
|
Vector(-758,670,920),
|
|
Vector(-605,562,-647),
|
|
Vector(583,497,403),
|
|
Vector(-870,560,878),
|
|
]
|
|
]
|