Day19 ZwischenStand
This commit is contained in:
parent
5a415301ad
commit
7370367223
8
.idea/.gitignore
vendored
Normal file
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
9
.idea/AOC2021.iml
Normal file
9
.idea/AOC2021.iml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="Go" enabled="true" />
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/AOC2021.iml" filepath="$PROJECT_DIR$/.idea/AOC2021.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
207
src/day19/day19.go
Normal file
207
src/day19/day19.go
Normal file
@ -0,0 +1,207 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"AOC2021/src/helper"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type scanner struct {
|
||||
points [][3]int
|
||||
position [3]int
|
||||
}
|
||||
|
||||
func main() {
|
||||
args := os.Args[1:]
|
||||
input, err := helper.GetInput(args[0])
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
var scanners []scanner
|
||||
for _, row := range input {
|
||||
if row[1] == '-' {
|
||||
scanners = append(scanners, scanner{[][3]int{}, [3]int{}})
|
||||
} else {
|
||||
tmpPoint, _ := helper.MapToNumber(strings.Split(row, ","))
|
||||
scanners[len(scanners)-1].points = append(scanners[len(scanners)-1].points, [3]int{tmpPoint[0], tmpPoint[1], tmpPoint[2]})
|
||||
}
|
||||
}
|
||||
//hitScanners := []int{0}
|
||||
//run := true
|
||||
//for run {
|
||||
// run = runUntilFirstHit(&scanners, &hitScanners)
|
||||
//}
|
||||
runFor(&scanners, 0, 1)
|
||||
runFor(&scanners, 0, 4)
|
||||
runFor(&scanners, 0, 2)
|
||||
runFor(&scanners, 0, 3)
|
||||
fmt.Println(len(scanners[0].points))
|
||||
|
||||
//inputTestResult, _ := helper.GetInput("day19TestResultPoints.txt")
|
||||
//resultPoints := [][3]int{}
|
||||
//for _, row := range inputTestResult {
|
||||
// tmpPoint, _ := helper.MapToNumber(strings.Split(row, ","))
|
||||
// resultPoints = append(resultPoints, [3]int{tmpPoint[0], tmpPoint[1], tmpPoint[2]})
|
||||
//}
|
||||
//
|
||||
//fmt.Println(helper.Difference3DPoint(resultPoints, scanners[0].points))
|
||||
//
|
||||
//fmt.Println(scanners[1].position)
|
||||
//fmt.Println(scanners[2].position)
|
||||
//fmt.Println(scanners[3].position)
|
||||
//fmt.Println(scanners[4].position)
|
||||
////fmt.Println(scanners[5].position)
|
||||
////fmt.Println(scanners[6].position)
|
||||
//fmt.Println(len(scanners[0].points))
|
||||
}
|
||||
|
||||
func runUntilFirstHit(scanners *[]scanner, hitScanners *[]int) bool {
|
||||
for i := 0; i < len(*scanners); i++ {
|
||||
if !helper.Contains(i, *hitScanners) && runFor(scanners, 0, i) {
|
||||
*hitScanners = append(*hitScanners, i)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func runFor(scanners *[]scanner, i int, j int) bool {
|
||||
returnBool := checkIfScannersHaveMatchingBeacons(scanners, i, j)
|
||||
pointSet := make(map[[3]int]struct{})
|
||||
for _, point := range (*scanners)[i].points {
|
||||
if point[0] == 26 {
|
||||
fmt.Println("Help")
|
||||
}
|
||||
pointSet[point] = struct{}{}
|
||||
}
|
||||
(*scanners)[i].points = [][3]int{}
|
||||
for key, _ := range pointSet {
|
||||
(*scanners)[i].points = append((*scanners)[i].points, key)
|
||||
}
|
||||
return returnBool
|
||||
}
|
||||
|
||||
func checkIfScannersHaveMatchingBeacons(scanners *[]scanner, i int, j int) bool {
|
||||
scanner1 := &(*scanners)[i]
|
||||
scanner2 := &(*scanners)[j]
|
||||
pointMapper := getOverlappingPoints(*scanner1, *scanner2)
|
||||
if len(pointMapper) >= 12 {
|
||||
rotationsForScanner := getAllPossibleRotationsForScanner(*scanner2)
|
||||
i, diff := getRightRotation(scanner1, pointMapper, rotationsForScanner)
|
||||
if i > -1 {
|
||||
scanner2.position = [3]int{scanner1.position[0] + diff[0], scanner1.position[1] + diff[1], scanner1.position[2] + diff[2]}
|
||||
var pointsOfScanner2inRelationToScanner1 [][3]int
|
||||
|
||||
for x := 0; x < len(rotationsForScanner[0]); x++ {
|
||||
point := rotationsForScanner[x][i]
|
||||
pointWithDiff := [3]int{point[0] + diff[0], point[1] + diff[1], point[2] + diff[2]}
|
||||
pointsOfScanner2inRelationToScanner1 = append(pointsOfScanner2inRelationToScanner1, pointWithDiff)
|
||||
}
|
||||
scanner1.points = append(scanner1.points, pointsOfScanner2inRelationToScanner1...)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func getRightRotation(scanner1 *scanner, pointMapper [][2]int, rotationsForScanner [][][3]int) (int, [3]int) {
|
||||
for i := 0; i < 24; i++ {
|
||||
firstDiff := diffBetweenVectors(rotationsForScanner[pointMapper[0][1]][i], scanner1.points[pointMapper[0][0]])
|
||||
different := false
|
||||
for n := 1; n < len(pointMapper); n++ {
|
||||
rotation := rotationsForScanner[pointMapper[n][1]][i]
|
||||
diff := diffBetweenVectors(rotation, scanner1.points[pointMapper[n][0]])
|
||||
if firstDiff != diff {
|
||||
different = true
|
||||
}
|
||||
}
|
||||
if different == false {
|
||||
return i, firstDiff
|
||||
}
|
||||
}
|
||||
return -1, [3]int{0, 0, 0}
|
||||
}
|
||||
|
||||
func getOverlappingPoints(sc1 scanner, sc2 scanner) (pointPairs [][2]int) {
|
||||
distances0 := getallDistancesBetweenPointsForScanner(sc1)
|
||||
distances1 := getallDistancesBetweenPointsForScanner(sc2)
|
||||
for i, _ := range distances0 {
|
||||
for j, _ := range distances1 {
|
||||
if len(helper.OverlapFloatArray(distances0[i], distances1[j])) >= 11 {
|
||||
pointPairs = append(pointPairs, [2]int{i, j})
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func turn(point *[3]int) {
|
||||
*point = [3]int{-point[1], point[0], point[2]}
|
||||
}
|
||||
|
||||
func roll(point *[3]int) {
|
||||
*point = [3]int{point[0], point[2], -point[1]}
|
||||
}
|
||||
|
||||
func getAllPossibleRotationsForPoint(point *[3]int) (points [][3]int) {
|
||||
rotationOrder := "RTTTRTTTRTTT"
|
||||
switchRotationOrder := "RTR"
|
||||
points = append(points, *point)
|
||||
executeRotationOrder(point, rotationOrder, &points)
|
||||
executeRotationOrder(point, switchRotationOrder, &[][3]int{})
|
||||
executeRotationOrder(point, rotationOrder, &points)
|
||||
return
|
||||
}
|
||||
|
||||
func executeRotationOrder(point *[3]int, order string, points *[][3]int) {
|
||||
for _, char := range order {
|
||||
switch char {
|
||||
case 'R':
|
||||
roll(point)
|
||||
case 'T':
|
||||
turn(point)
|
||||
}
|
||||
*points = append(*points, *point)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func getAllPossibleRotationsForScanner(scanner scanner) [][][3]int {
|
||||
permutations := [][][3]int{}
|
||||
for _, point := range scanner.points {
|
||||
permutations = append(permutations, getAllPossibleRotationsForPoint(&point))
|
||||
}
|
||||
return permutations
|
||||
}
|
||||
|
||||
func getallDistancesBetweenPointsForScanner(scanner scanner) [][]float64 {
|
||||
var distances [][]float64
|
||||
for i, point1 := range scanner.points {
|
||||
var distancesForPoint []float64
|
||||
for j, point2 := range scanner.points {
|
||||
if i != j {
|
||||
distancesForPoint = append(distancesForPoint, distanceBetweenVectors(point1, point2))
|
||||
}
|
||||
}
|
||||
distances = append(distances, distancesForPoint)
|
||||
}
|
||||
return distances
|
||||
}
|
||||
|
||||
func distanceBetweenVectors(v1 [3]int, v2 [3]int) float64 {
|
||||
var diffs [3]float64
|
||||
for i, _ := range v1 {
|
||||
diffs[i] = float64(v2[i] - v1[i])
|
||||
}
|
||||
return math.Sqrt(math.Pow(diffs[0], 2) + math.Pow(diffs[1], 2) + math.Pow(diffs[2], 2))
|
||||
}
|
||||
|
||||
func diffBetweenVectors(v1 [3]int, v2 [3]int) [3]int {
|
||||
var diff [3]int
|
||||
for i, _ := range v1 {
|
||||
diff[i] = v2[i] - v1[i]
|
||||
}
|
||||
return diff
|
||||
}
|
803
src/day19/day19Input.txt
Normal file
803
src/day19/day19Input.txt
Normal file
@ -0,0 +1,803 @@
|
||||
--- scanner 0 ---
|
||||
-837,-546,895
|
||||
545,-724,-398
|
||||
-105,-144,-62
|
||||
40,-27,65
|
||||
768,-521,353
|
||||
642,-596,-431
|
||||
676,498,843
|
||||
823,-657,349
|
||||
513,471,840
|
||||
341,513,-616
|
||||
-538,662,461
|
||||
-589,608,-546
|
||||
-591,446,456
|
||||
599,419,857
|
||||
-875,-389,809
|
||||
374,417,-744
|
||||
516,-715,-442
|
||||
-546,-660,-328
|
||||
407,533,-756
|
||||
801,-613,507
|
||||
-484,551,443
|
||||
-453,-735,-364
|
||||
-649,-663,-385
|
||||
-747,585,-558
|
||||
-685,578,-549
|
||||
-863,-517,772
|
||||
--- scanner 1 ---
|
||||
-618,328,857
|
||||
-392,524,-392
|
||||
698,-323,-530
|
||||
621,529,700
|
||||
532,556,625
|
||||
727,-608,858
|
||||
737,-392,-411
|
||||
-462,530,-468
|
||||
-644,436,949
|
||||
-666,337,873
|
||||
-908,-784,-518
|
||||
-669,-762,-530
|
||||
860,-407,-490
|
||||
-53,82,105
|
||||
-751,-809,-457
|
||||
-640,-531,478
|
||||
371,562,709
|
||||
-41,-87,-32
|
||||
-529,526,-278
|
||||
-659,-397,473
|
||||
764,822,-554
|
||||
840,759,-524
|
||||
-607,-420,559
|
||||
838,-555,821
|
||||
783,-589,860
|
||||
771,850,-460
|
||||
--- scanner 2 ---
|
||||
480,491,503
|
||||
-526,565,627
|
||||
-660,-847,-399
|
||||
-335,419,-428
|
||||
608,478,-490
|
||||
556,503,540
|
||||
809,-640,-557
|
||||
767,-583,665
|
||||
409,524,-442
|
||||
515,554,-473
|
||||
-414,-584,764
|
||||
-334,389,-567
|
||||
-413,425,-389
|
||||
107,-11,-127
|
||||
786,-503,-681
|
||||
-646,678,620
|
||||
738,-505,635
|
||||
-67,58,13
|
||||
-701,466,618
|
||||
-789,-725,-404
|
||||
-410,-612,789
|
||||
440,476,639
|
||||
-730,-841,-493
|
||||
-433,-685,840
|
||||
774,-719,-674
|
||||
781,-544,572
|
||||
--- scanner 3 ---
|
||||
452,-584,-591
|
||||
574,-514,-593
|
||||
378,338,677
|
||||
307,-670,678
|
||||
-714,-482,845
|
||||
-760,-681,797
|
||||
426,-724,603
|
||||
461,364,-459
|
||||
-501,-549,-784
|
||||
-684,-588,814
|
||||
14,-1,-67
|
||||
-819,262,859
|
||||
476,-669,580
|
||||
-490,-532,-513
|
||||
-456,-494,-737
|
||||
405,519,639
|
||||
-751,541,-526
|
||||
-813,340,898
|
||||
-737,338,-585
|
||||
400,432,568
|
||||
543,441,-451
|
||||
-97,-132,27
|
||||
672,323,-482
|
||||
491,-514,-633
|
||||
-849,261,720
|
||||
-635,491,-586
|
||||
--- scanner 4 ---
|
||||
-851,594,501
|
||||
415,534,-339
|
||||
-400,-694,-712
|
||||
842,-645,-746
|
||||
-770,-575,694
|
||||
447,619,-384
|
||||
751,-581,-815
|
||||
-331,-575,-673
|
||||
48,-36,133
|
||||
-588,522,-437
|
||||
640,429,768
|
||||
518,-827,554
|
||||
516,-713,417
|
||||
-791,656,615
|
||||
567,396,681
|
||||
573,574,749
|
||||
-539,569,-414
|
||||
-98,52,54
|
||||
522,-637,487
|
||||
-792,-587,933
|
||||
-777,498,553
|
||||
-715,557,-385
|
||||
-817,-648,776
|
||||
316,667,-322
|
||||
-415,-615,-835
|
||||
814,-551,-739
|
||||
--- scanner 5 ---
|
||||
905,-652,484
|
||||
-641,-695,495
|
||||
-789,-742,-440
|
||||
507,534,616
|
||||
880,-623,690
|
||||
-604,562,573
|
||||
-429,-640,493
|
||||
-631,446,474
|
||||
607,-347,-806
|
||||
-542,-520,486
|
||||
-341,785,-353
|
||||
519,-334,-621
|
||||
420,644,609
|
||||
480,709,670
|
||||
-391,641,-407
|
||||
679,-388,-630
|
||||
-694,-698,-463
|
||||
-382,799,-378
|
||||
775,481,-769
|
||||
91,-54,-58
|
||||
24,89,60
|
||||
832,465,-575
|
||||
-616,486,610
|
||||
759,445,-607
|
||||
891,-689,698
|
||||
-603,-680,-451
|
||||
--- scanner 6 ---
|
||||
-806,-771,-421
|
||||
-671,-753,-499
|
||||
-18,6,103
|
||||
427,606,554
|
||||
-441,918,903
|
||||
-459,984,870
|
||||
-450,754,-541
|
||||
461,661,412
|
||||
-727,-645,-511
|
||||
-458,831,-623
|
||||
654,-640,-674
|
||||
703,-663,-627
|
||||
758,-345,558
|
||||
527,-692,-639
|
||||
-480,-614,744
|
||||
441,722,514
|
||||
-515,-682,580
|
||||
-512,961,729
|
||||
569,763,-684
|
||||
-345,-647,669
|
||||
23,172,-24
|
||||
678,857,-706
|
||||
640,676,-679
|
||||
765,-487,649
|
||||
867,-457,582
|
||||
-481,872,-412
|
||||
--- scanner 7 ---
|
||||
362,874,-678
|
||||
-297,-736,690
|
||||
515,-520,-872
|
||||
710,-448,649
|
||||
507,-454,-883
|
||||
-556,-557,-528
|
||||
860,457,540
|
||||
-493,782,-580
|
||||
-354,484,683
|
||||
-669,811,-568
|
||||
-518,-738,-501
|
||||
-336,-814,696
|
||||
797,381,570
|
||||
461,857,-545
|
||||
-369,361,604
|
||||
719,-623,550
|
||||
721,-491,-897
|
||||
-627,-644,-523
|
||||
130,-51,-2
|
||||
888,450,634
|
||||
-285,523,564
|
||||
-475,-815,726
|
||||
493,812,-630
|
||||
-542,759,-533
|
||||
712,-503,437
|
||||
-62,-5,-98
|
||||
--- scanner 8 ---
|
||||
-768,-717,-777
|
||||
-14,-143,-33
|
||||
875,-554,518
|
||||
543,466,-836
|
||||
-580,-855,818
|
||||
485,455,386
|
||||
109,-7,55
|
||||
-643,739,-916
|
||||
-627,-853,796
|
||||
565,-556,-604
|
||||
-830,308,753
|
||||
-747,-611,-890
|
||||
656,-390,-590
|
||||
477,528,481
|
||||
-568,-884,660
|
||||
468,608,390
|
||||
788,-495,482
|
||||
-754,-679,-797
|
||||
629,-381,-643
|
||||
561,395,-829
|
||||
-841,337,556
|
||||
708,389,-858
|
||||
-778,256,674
|
||||
-587,682,-768
|
||||
-590,727,-684
|
||||
737,-617,490
|
||||
--- scanner 9 ---
|
||||
-725,-474,547
|
||||
-720,638,-616
|
||||
-700,-786,-368
|
||||
277,-717,-225
|
||||
464,429,798
|
||||
-865,705,-635
|
||||
-898,632,-548
|
||||
280,-601,-352
|
||||
-627,381,455
|
||||
667,839,-243
|
||||
551,-412,723
|
||||
-772,-523,570
|
||||
414,391,782
|
||||
652,648,-231
|
||||
-638,-726,-482
|
||||
-675,512,517
|
||||
-760,480,472
|
||||
484,-310,753
|
||||
-737,-650,518
|
||||
378,455,874
|
||||
330,-718,-453
|
||||
15,149,38
|
||||
-796,-712,-420
|
||||
21,-10,198
|
||||
460,-419,865
|
||||
724,864,-242
|
||||
--- scanner 10 ---
|
||||
-676,578,415
|
||||
-583,653,379
|
||||
-615,-423,677
|
||||
932,640,-721
|
||||
650,593,669
|
||||
611,572,612
|
||||
-292,767,-844
|
||||
158,-1,127
|
||||
909,769,-764
|
||||
724,-453,-384
|
||||
920,-591,684
|
||||
-426,-737,-471
|
||||
-480,650,436
|
||||
743,-517,-419
|
||||
-621,-311,652
|
||||
-488,-715,-588
|
||||
23,72,16
|
||||
899,811,-727
|
||||
-696,-406,610
|
||||
-526,-618,-539
|
||||
914,-476,553
|
||||
739,-362,-359
|
||||
-254,924,-758
|
||||
789,-573,583
|
||||
607,504,819
|
||||
-266,796,-721
|
||||
--- scanner 11 ---
|
||||
786,817,323
|
||||
750,-679,-621
|
||||
817,748,324
|
||||
716,-950,645
|
||||
-862,695,-747
|
||||
-123,-3,10
|
||||
-817,663,-662
|
||||
515,641,-420
|
||||
731,-792,522
|
||||
-461,-637,768
|
||||
-508,-755,-903
|
||||
486,435,-395
|
||||
449,649,-409
|
||||
-552,784,427
|
||||
-536,746,477
|
||||
793,794,411
|
||||
-439,-903,-839
|
||||
-441,-973,-891
|
||||
685,-819,596
|
||||
-16,-129,-66
|
||||
-424,-819,701
|
||||
804,-670,-781
|
||||
-879,794,-614
|
||||
-460,720,391
|
||||
791,-855,-693
|
||||
-460,-831,679
|
||||
--- scanner 12 ---
|
||||
-327,-510,-927
|
||||
-678,630,-569
|
||||
599,-732,-680
|
||||
803,-629,742
|
||||
608,-557,-779
|
||||
956,765,548
|
||||
811,-563,753
|
||||
-475,640,-502
|
||||
-811,327,271
|
||||
-693,-905,469
|
||||
-350,-554,-832
|
||||
-593,394,259
|
||||
521,272,-700
|
||||
825,703,500
|
||||
-517,-864,541
|
||||
597,-600,767
|
||||
4,-53,-2
|
||||
430,341,-764
|
||||
857,748,415
|
||||
-338,-572,-741
|
||||
606,-612,-567
|
||||
150,-49,-163
|
||||
-741,325,323
|
||||
458,348,-670
|
||||
-684,666,-543
|
||||
-508,-918,381
|
||||
--- scanner 13 ---
|
||||
540,412,432
|
||||
499,-447,-412
|
||||
560,490,-572
|
||||
313,-436,-350
|
||||
-609,615,740
|
||||
461,499,-397
|
||||
-651,-421,865
|
||||
-783,-449,-581
|
||||
671,-787,790
|
||||
697,-793,826
|
||||
-121,55,15
|
||||
673,497,-452
|
||||
-595,-475,972
|
||||
-777,-489,876
|
||||
-617,328,-688
|
||||
-690,277,-665
|
||||
476,321,501
|
||||
408,-459,-394
|
||||
570,349,508
|
||||
-684,642,651
|
||||
-913,-515,-626
|
||||
738,-584,800
|
||||
-935,-429,-666
|
||||
-589,353,-684
|
||||
18,-76,136
|
||||
-693,609,901
|
||||
--- scanner 14 ---
|
||||
130,40,29
|
||||
-804,667,-760
|
||||
-770,-343,761
|
||||
59,134,-113
|
||||
-338,-660,-567
|
||||
824,-427,-597
|
||||
874,-475,-553
|
||||
505,-816,566
|
||||
628,611,-544
|
||||
611,594,780
|
||||
-720,707,-630
|
||||
-330,-715,-403
|
||||
-666,811,642
|
||||
-743,699,589
|
||||
606,879,-549
|
||||
649,-709,592
|
||||
664,680,737
|
||||
-536,753,568
|
||||
-623,728,-736
|
||||
511,-585,563
|
||||
870,-448,-421
|
||||
634,784,-501
|
||||
-733,-497,757
|
||||
-702,-264,790
|
||||
-407,-761,-544
|
||||
624,676,649
|
||||
--- scanner 15 ---
|
||||
610,-828,725
|
||||
397,-645,-531
|
||||
837,418,-503
|
||||
-368,-524,-425
|
||||
-271,722,-357
|
||||
506,-533,-507
|
||||
-340,753,-358
|
||||
561,-851,678
|
||||
-294,729,-445
|
||||
-439,385,375
|
||||
499,-675,-598
|
||||
737,-880,690
|
||||
586,669,757
|
||||
6,-115,59
|
||||
-425,-881,628
|
||||
-294,-943,580
|
||||
-447,451,386
|
||||
803,473,-361
|
||||
-304,-616,-461
|
||||
823,534,-463
|
||||
-653,422,361
|
||||
624,488,730
|
||||
695,575,735
|
||||
-393,-926,713
|
||||
-342,-600,-511
|
||||
--- scanner 16 ---
|
||||
-459,676,715
|
||||
-517,546,641
|
||||
653,-621,812
|
||||
679,321,-476
|
||||
584,659,617
|
||||
489,-586,744
|
||||
-603,814,-687
|
||||
651,761,587
|
||||
504,-618,-831
|
||||
-676,-601,853
|
||||
675,652,475
|
||||
-542,633,-663
|
||||
363,-565,-854
|
||||
-590,-654,810
|
||||
-486,-624,-428
|
||||
-12,-108,17
|
||||
-391,-596,-476
|
||||
-659,-618,-471
|
||||
-594,-614,722
|
||||
-563,730,-557
|
||||
-571,753,662
|
||||
330,-547,-788
|
||||
821,355,-531
|
||||
564,-451,777
|
||||
719,335,-592
|
||||
--- scanner 17 ---
|
||||
-635,641,629
|
||||
-598,563,-628
|
||||
-697,554,-453
|
||||
-857,-310,866
|
||||
-450,-372,-675
|
||||
-44,35,72
|
||||
452,417,-341
|
||||
-545,-395,-631
|
||||
412,609,854
|
||||
-623,678,553
|
||||
-608,542,513
|
||||
346,-430,603
|
||||
451,516,840
|
||||
480,392,-337
|
||||
798,-365,-359
|
||||
-636,-383,-613
|
||||
553,341,-360
|
||||
-898,-285,852
|
||||
244,-351,647
|
||||
776,-451,-399
|
||||
-848,-339,708
|
||||
373,546,811
|
||||
345,-416,647
|
||||
-165,134,173
|
||||
646,-385,-444
|
||||
-810,561,-573
|
||||
--- scanner 18 ---
|
||||
-450,784,-692
|
||||
824,665,491
|
||||
658,565,-856
|
||||
-521,630,499
|
||||
-728,-718,-393
|
||||
884,706,648
|
||||
672,474,-690
|
||||
-295,-814,873
|
||||
-592,-659,-362
|
||||
845,-859,-529
|
||||
-414,697,-751
|
||||
-750,-671,-391
|
||||
865,-845,-567
|
||||
100,39,-6
|
||||
-422,646,-629
|
||||
781,-798,610
|
||||
-527,808,567
|
||||
711,538,-865
|
||||
760,-704,519
|
||||
-320,-757,872
|
||||
-511,-742,884
|
||||
695,-822,530
|
||||
810,739,568
|
||||
958,-838,-635
|
||||
-454,775,480
|
||||
--- scanner 19 ---
|
||||
-584,442,716
|
||||
29,-98,157
|
||||
478,394,642
|
||||
-448,-668,505
|
||||
-571,305,-472
|
||||
-530,323,641
|
||||
593,-657,-595
|
||||
-461,392,-465
|
||||
696,765,-391
|
||||
104,29,35
|
||||
-489,-719,-508
|
||||
-529,492,739
|
||||
572,416,751
|
||||
713,-544,-588
|
||||
762,776,-383
|
||||
725,790,-597
|
||||
-541,-744,522
|
||||
-413,-731,-471
|
||||
659,421,680
|
||||
401,-833,599
|
||||
-373,-746,-607
|
||||
402,-803,460
|
||||
480,-797,421
|
||||
-342,-698,474
|
||||
-636,365,-411
|
||||
768,-756,-586
|
||||
--- scanner 20 ---
|
||||
-827,814,-478
|
||||
-831,839,-506
|
||||
758,558,-582
|
||||
358,846,587
|
||||
-595,670,784
|
||||
346,-593,-733
|
||||
9,-98,2
|
||||
508,525,-573
|
||||
402,-612,-731
|
||||
-828,-339,531
|
||||
-581,-349,-741
|
||||
-808,890,-579
|
||||
269,-411,617
|
||||
289,755,651
|
||||
-511,-443,-735
|
||||
-715,677,671
|
||||
431,-327,657
|
||||
-540,668,572
|
||||
-907,-517,495
|
||||
597,552,-498
|
||||
365,818,681
|
||||
-89,72,39
|
||||
392,-396,538
|
||||
-452,-354,-619
|
||||
-906,-378,525
|
||||
291,-559,-694
|
||||
--- scanner 21 ---
|
||||
590,783,-345
|
||||
-745,-624,-738
|
||||
857,-496,341
|
||||
-616,863,-699
|
||||
533,-734,-749
|
||||
-111,-15,-94
|
||||
-731,-698,-661
|
||||
-768,797,760
|
||||
-574,886,759
|
||||
783,509,760
|
||||
-805,-665,-581
|
||||
-692,-785,712
|
||||
-681,745,-710
|
||||
-756,819,796
|
||||
374,855,-356
|
||||
809,595,684
|
||||
-840,-721,781
|
||||
726,-544,403
|
||||
606,-767,-662
|
||||
847,545,668
|
||||
600,-589,-730
|
||||
-702,839,-619
|
||||
399,798,-357
|
||||
758,-629,358
|
||||
-910,-773,779
|
||||
67,44,-4
|
||||
--- scanner 22 ---
|
||||
-734,-309,822
|
||||
694,597,-432
|
||||
-681,-713,-669
|
||||
-729,-806,-671
|
||||
-504,413,-478
|
||||
-727,-286,910
|
||||
-423,822,764
|
||||
670,484,669
|
||||
131,24,89
|
||||
-610,510,-457
|
||||
768,467,-374
|
||||
-758,-355,909
|
||||
711,-708,-607
|
||||
794,-734,-587
|
||||
595,-357,756
|
||||
528,491,760
|
||||
715,390,-486
|
||||
-720,-726,-731
|
||||
-478,788,906
|
||||
-634,329,-518
|
||||
640,382,736
|
||||
-539,808,804
|
||||
519,-383,842
|
||||
686,-754,-646
|
||||
611,-319,806
|
||||
--- scanner 23 ---
|
||||
97,-47,-11
|
||||
-437,564,456
|
||||
-536,-668,-635
|
||||
-527,-918,-602
|
||||
421,-784,-469
|
||||
-611,-757,-608
|
||||
-569,-882,428
|
||||
443,-722,-586
|
||||
735,-595,679
|
||||
-77,-104,120
|
||||
-307,609,522
|
||||
-603,671,-321
|
||||
-530,648,-270
|
||||
589,260,714
|
||||
-625,-989,482
|
||||
648,534,-438
|
||||
455,326,695
|
||||
752,-514,612
|
||||
-443,-893,496
|
||||
847,-589,654
|
||||
606,535,-437
|
||||
-285,649,436
|
||||
554,460,-449
|
||||
-631,667,-346
|
||||
520,341,596
|
||||
540,-684,-537
|
||||
--- scanner 24 ---
|
||||
335,507,659
|
||||
789,625,-474
|
||||
-450,-800,-511
|
||||
441,658,656
|
||||
477,526,758
|
||||
-383,-788,-293
|
||||
626,-533,809
|
||||
-423,-454,576
|
||||
-366,804,-447
|
||||
-381,-736,-363
|
||||
862,-678,-596
|
||||
-435,708,806
|
||||
-402,782,-435
|
||||
102,8,-15
|
||||
-369,684,776
|
||||
-69,90,34
|
||||
-445,-295,458
|
||||
764,-565,739
|
||||
-489,744,673
|
||||
774,748,-316
|
||||
778,-478,879
|
||||
-403,871,-629
|
||||
808,-518,-587
|
||||
849,-590,-411
|
||||
-415,-486,528
|
||||
743,699,-447
|
||||
--- scanner 25 ---
|
||||
599,481,-432
|
||||
22,-11,-104
|
||||
-379,-514,-593
|
||||
595,-712,468
|
||||
877,548,315
|
||||
822,684,319
|
||||
395,-677,-695
|
||||
669,-618,457
|
||||
476,-746,-577
|
||||
131,-96,62
|
||||
670,-660,456
|
||||
-454,-419,-635
|
||||
-460,-531,-660
|
||||
-783,659,861
|
||||
-821,816,775
|
||||
-649,-845,488
|
||||
-595,542,-419
|
||||
-809,688,738
|
||||
-492,545,-362
|
||||
-549,-726,556
|
||||
855,592,473
|
||||
461,-811,-676
|
||||
-587,-823,605
|
||||
696,609,-465
|
||||
-399,470,-398
|
||||
570,490,-476
|
||||
--- scanner 26 ---
|
||||
390,830,-821
|
||||
-339,-265,-482
|
||||
498,624,688
|
||||
796,-639,827
|
||||
-610,-520,457
|
||||
-691,651,-600
|
||||
521,577,639
|
||||
-469,553,450
|
||||
-692,-593,410
|
||||
643,-775,-316
|
||||
-849,-532,435
|
||||
919,-560,812
|
||||
-434,-341,-461
|
||||
643,-673,-302
|
||||
93,0,103
|
||||
-17,62,-33
|
||||
-417,649,376
|
||||
-733,647,-605
|
||||
469,612,512
|
||||
723,-799,-385
|
||||
-556,599,-568
|
||||
-531,711,436
|
||||
757,-520,896
|
||||
516,740,-742
|
||||
408,752,-686
|
||||
-317,-280,-456
|
||||
--- scanner 27 ---
|
||||
504,695,379
|
||||
-622,-772,694
|
||||
-806,425,528
|
||||
728,729,341
|
||||
-729,336,-414
|
||||
576,448,-491
|
||||
-907,372,-493
|
||||
-854,471,329
|
||||
-63,-67,23
|
||||
517,434,-694
|
||||
440,-699,-685
|
||||
-739,-693,729
|
||||
-823,501,435
|
||||
354,-756,-816
|
||||
-615,-556,706
|
||||
-892,-778,-869
|
||||
-803,-894,-810
|
||||
-897,-900,-740
|
||||
743,-832,756
|
||||
577,550,-644
|
||||
699,-791,708
|
||||
625,-767,740
|
||||
-868,366,-415
|
||||
775,684,396
|
||||
450,-654,-798
|
||||
--- scanner 28 ---
|
||||
-352,765,607
|
||||
-645,-531,448
|
||||
681,719,941
|
||||
529,528,-567
|
||||
719,-753,-590
|
||||
866,-662,590
|
||||
-287,888,-644
|
||||
624,701,851
|
||||
-550,-592,443
|
||||
-401,788,418
|
||||
434,576,-595
|
||||
803,-584,531
|
||||
702,571,-573
|
||||
633,-710,-537
|
||||
619,761,872
|
||||
846,-644,656
|
||||
-610,-712,-570
|
||||
60,25,103
|
||||
-693,-522,411
|
||||
-402,791,596
|
||||
-320,954,-626
|
||||
637,-622,-577
|
||||
-446,-644,-605
|
||||
-521,-677,-740
|
||||
-461,931,-573
|
||||
--- scanner 29 ---
|
||||
-374,-424,-662
|
||||
750,875,838
|
||||
428,-515,-390
|
||||
710,-591,868
|
||||
742,524,-355
|
||||
25,19,-1
|
||||
-400,-430,-626
|
||||
-758,-781,514
|
||||
-524,733,541
|
||||
492,-367,-321
|
||||
933,454,-385
|
||||
-669,443,-538
|
||||
-333,-633,-636
|
||||
-413,837,569
|
||||
-572,-770,576
|
||||
-477,456,-489
|
||||
774,572,-363
|
||||
-649,511,-425
|
||||
695,805,686
|
||||
638,-415,909
|
||||
-496,817,703
|
||||
550,-600,922
|
||||
440,-297,-323
|
||||
663,735,824
|
||||
-663,-758,558
|
132
src/day19/day19Test.txt
Normal file
132
src/day19/day19Test.txt
Normal file
@ -0,0 +1,132 @@
|
||||
--- scanner 0 ---
|
||||
404,-588,-901
|
||||
528,-643,409
|
||||
-838,591,734
|
||||
390,-675,-793
|
||||
-537,-823,-458
|
||||
-485,-357,347
|
||||
-345,-311,381
|
||||
-661,-816,-575
|
||||
-876,649,763
|
||||
-618,-824,-621
|
||||
553,345,-567
|
||||
474,580,667
|
||||
-447,-329,318
|
||||
-584,868,-557
|
||||
544,-627,-890
|
||||
564,392,-477
|
||||
455,729,728
|
||||
-892,524,684
|
||||
-689,845,-530
|
||||
423,-701,434
|
||||
7,-33,-71
|
||||
630,319,-379
|
||||
443,580,662
|
||||
-789,900,-551
|
||||
459,-707,401
|
||||
--- scanner 1 ---
|
||||
686,422,578
|
||||
605,423,415
|
||||
515,917,-361
|
||||
-336,658,858
|
||||
95,138,22
|
||||
-476,619,847
|
||||
-340,-569,-846
|
||||
567,-361,727
|
||||
-460,603,-452
|
||||
669,-402,600
|
||||
729,430,532
|
||||
-500,-761,534
|
||||
-322,571,750
|
||||
-466,-666,-811
|
||||
-429,-592,574
|
||||
-355,545,-477
|
||||
703,-491,-529
|
||||
-328,-685,520
|
||||
413,935,-424
|
||||
-391,539,-444
|
||||
586,-435,557
|
||||
-364,-763,-893
|
||||
807,-499,-711
|
||||
755,-354,-619
|
||||
553,889,-390
|
||||
--- scanner 2 ---
|
||||
649,640,665
|
||||
682,-795,504
|
||||
-784,533,-524
|
||||
-644,584,-595
|
||||
-588,-843,648
|
||||
-30,6,44
|
||||
-674,560,763
|
||||
500,723,-460
|
||||
609,671,-379
|
||||
-555,-800,653
|
||||
-675,-892,-343
|
||||
697,-426,-610
|
||||
578,704,681
|
||||
493,664,-388
|
||||
-671,-858,530
|
||||
-667,343,800
|
||||
571,-461,-707
|
||||
-138,-166,112
|
||||
-889,563,-600
|
||||
646,-828,498
|
||||
640,759,510
|
||||
-630,509,768
|
||||
-681,-892,-333
|
||||
673,-379,-804
|
||||
-742,-814,-386
|
||||
577,-820,562
|
||||
--- scanner 3 ---
|
||||
-589,542,597
|
||||
605,-692,669
|
||||
-500,565,-823
|
||||
-660,373,557
|
||||
-458,-679,-417
|
||||
-488,449,543
|
||||
-626,468,-788
|
||||
338,-750,-386
|
||||
528,-832,-391
|
||||
562,-778,733
|
||||
-938,-730,414
|
||||
543,643,-506
|
||||
-524,371,-870
|
||||
407,773,750
|
||||
-104,29,83
|
||||
378,-903,-323
|
||||
-778,-728,485
|
||||
426,699,580
|
||||
-438,-605,-362
|
||||
-469,-447,-387
|
||||
509,732,623
|
||||
647,635,-688
|
||||
-868,-804,481
|
||||
614,-800,639
|
||||
595,780,-596
|
||||
--- scanner 4 ---
|
||||
727,592,562
|
||||
-293,-554,779
|
||||
441,611,-461
|
||||
-714,465,-776
|
||||
-743,427,-804
|
||||
-660,-479,-426
|
||||
832,-632,460
|
||||
927,-485,-438
|
||||
408,393,-506
|
||||
466,436,-512
|
||||
110,16,151
|
||||
-258,-428,682
|
||||
-393,719,612
|
||||
-211,-452,876
|
||||
808,-476,-593
|
||||
-575,615,604
|
||||
-485,667,467
|
||||
-680,325,-822
|
||||
-627,-443,-432
|
||||
872,-547,-609
|
||||
833,512,582
|
||||
807,604,487
|
||||
839,-516,451
|
||||
891,-625,532
|
||||
-652,-548,-490
|
||||
30,-46,-14
|
79
src/day19/day19TestResultPoints.txt
Normal file
79
src/day19/day19TestResultPoints.txt
Normal file
@ -0,0 +1,79 @@
|
||||
-892,524,684
|
||||
-876,649,763
|
||||
-838,591,734
|
||||
-789,900,-551
|
||||
-739,-1745,668
|
||||
-706,-3180,-659
|
||||
-697,-3072,-689
|
||||
-689,845,-530
|
||||
-687,-1600,576
|
||||
-661,-816,-575
|
||||
-654,-3158,-753
|
||||
-635,-1737,486
|
||||
-631,-672,1502
|
||||
-624,-1620,1868
|
||||
-620,-3212,371
|
||||
-618,-824,-621
|
||||
-612,-1695,1788
|
||||
-601,-1648,-643
|
||||
-584,868,-557
|
||||
-537,-823,-458
|
||||
-532,-1715,1894
|
||||
-518,-1681,-600
|
||||
-499,-1607,-770
|
||||
-485,-357,347
|
||||
-470,-3283,303
|
||||
-456,-621,1527
|
||||
-447,-329,318
|
||||
-430,-3130,366
|
||||
-413,-627,1469
|
||||
-345,-311,381
|
||||
-36,-1284,1171
|
||||
-27,-1108,-65
|
||||
7,-33,-71
|
||||
12,-2351,-103
|
||||
26,-1119,1091
|
||||
346,-2985,342
|
||||
366,-3059,397
|
||||
377,-2827,367
|
||||
390,-675,-793
|
||||
396,-1931,-563
|
||||
404,-588,-901
|
||||
408,-1815,803
|
||||
423,-701,434
|
||||
432,-2009,850
|
||||
443,580,662
|
||||
455,729,728
|
||||
456,-540,1869
|
||||
459,-707,401
|
||||
465,-695,1988
|
||||
474,580,667
|
||||
496,-1584,1900
|
||||
497,-1838,-617
|
||||
527,-524,1933
|
||||
528,-643,409
|
||||
534,-1912,768
|
||||
544,-627,-890
|
||||
553,345,-567
|
||||
564,392,-477
|
||||
568,-2007,-577
|
||||
605,-1665,1952
|
||||
612,-1593,1893
|
||||
630,319,-379
|
||||
686,-3108,-505
|
||||
776,-3184,-501
|
||||
846,-3110,-434
|
||||
1135,-1161,1235
|
||||
1243,-1093,1063
|
||||
1660,-552,429
|
||||
1693,-557,386
|
||||
1735,-437,1738
|
||||
1749,-1800,1813
|
||||
1772,-405,1572
|
||||
1776,-675,371
|
||||
1779,-442,1789
|
||||
1780,-1548,337
|
||||
1786,-1538,337
|
||||
1847,-1591,415
|
||||
1889,-1729,1762
|
||||
1994,-1805,1792
|
7
src/day19/day19TestRotation.txt
Normal file
7
src/day19/day19TestRotation.txt
Normal file
@ -0,0 +1,7 @@
|
||||
--- scanner 0 ---
|
||||
-1,-1,1
|
||||
-2,-2,2
|
||||
-3,-3,3
|
||||
-2,-3,1
|
||||
5,6,-4
|
||||
8,0,7
|
@ -158,6 +158,48 @@ func AmountCharacterInString(input string, selector rune) int {
|
||||
return amount
|
||||
}
|
||||
|
||||
func OverlapFloatArray(a, b []float64) []float64 {
|
||||
mb := make(map[float64]struct{}, len(b))
|
||||
for _, x := range b {
|
||||
mb[x] = struct{}{}
|
||||
}
|
||||
var overlap []float64
|
||||
for _, x := range a {
|
||||
if _, found := mb[x]; found {
|
||||
overlap = append(overlap, x)
|
||||
}
|
||||
}
|
||||
return overlap
|
||||
}
|
||||
|
||||
func Overlap3DPoint(a, b [][3]int) [][3]int {
|
||||
mb := make(map[[3]int]struct{}, len(b))
|
||||
for _, x := range b {
|
||||
mb[x] = struct{}{}
|
||||
}
|
||||
var overlap [][3]int
|
||||
for _, x := range a {
|
||||
if _, found := mb[x]; found {
|
||||
overlap = append(overlap, x)
|
||||
}
|
||||
}
|
||||
return overlap
|
||||
}
|
||||
|
||||
func Difference3DPoint(a, b [][3]int) [][3]int {
|
||||
mb := make(map[[3]int]struct{}, len(b))
|
||||
for _, x := range b {
|
||||
mb[x] = struct{}{}
|
||||
}
|
||||
var diff [][3]int
|
||||
for _, x := range a {
|
||||
if _, found := mb[x]; !found {
|
||||
diff = append(diff, x)
|
||||
}
|
||||
}
|
||||
return diff
|
||||
}
|
||||
|
||||
func AddNummbers(numbers ...int) int {
|
||||
result := 0
|
||||
for _, number := range numbers {
|
||||
|
Loading…
Reference in New Issue
Block a user