diff --git a/2021/d19/ex1/ex1.py b/2021/d19/ex1/ex1.py deleted file mode 100755 index 922e709..0000000 --- a/2021/d19/ex1/ex1.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python - -import functools -import itertools -import sys -from dataclasses import dataclass -from typing import List, Optional, Set, Tuple - - -@dataclass(eq=True, frozen=True) # Hash-able -class Vector: - x: int - y: int - z: int - - def __add__(self, other: "Vector") -> "Vector": - return Vector(self.x + other.x, self.y + other.y, self.z + other.z) - - def __sub__(self, other: "Vector") -> "Vector": - return Vector(self.x - other.x, self.y - other.y, self.z - other.z) - - -@dataclass(eq=True, frozen=True) # Hash-able -class Matrix: - v1: Vector - v2: Vector - v3: Vector - - def __matmul__(self, other: Vector) -> Vector: - return Vector( - self.v1.x * other.x + self.v1.y * other.y + self.v1.z * other.z, - self.v2.x * other.x + self.v2.y * other.y + self.v2.z * other.z, - self.v3.x * other.x + self.v3.y * other.y + self.v3.z * other.z, - ) - - -def rotations() -> List[Matrix]: - def cos(angle: int) -> int: - if angle == 0: - return 1 - if angle == 180: - return -1 - assert angle in (90, 270) # Sanity check - return 0 - - def sin(angle: int) -> int: - if angle == 90: - return 1 - if angle == 270: - return -1 - assert angle in (0, 180) # Sanity check - return 0 - - def rotate(x: int, y: int, z: int) -> Matrix: - v1 = Vector( - cos(z) * cos(y), - cos(z) * sin(y) * sin(x) - sin(z) * cos(x), - cos(z) * sin(y) * cos(x) + sin(z) * sin(x), - ) - v2 = Vector( - sin(z) * cos(y), - sin(z) * sin(y) * sin(x) + cos(z) * cos(x), - sin(z) * sin(y) * cos(x) - cos(z) * sin(x), - ) - v3 = Vector(-sin(y), cos(y) * sin(x), cos(y) * cos(x)) - return Matrix(v1, v2, v3) - - return [ - rotate(0, 0, 0), - rotate(90, 0, 0), - rotate(180, 0, 0), - rotate(270, 0, 0), - rotate(0, 90, 0), - rotate(90, 90, 0), - rotate(180, 90, 0), - rotate(270, 90, 0), - rotate(0, 180, 0), - rotate(90, 180, 0), - rotate(180, 180, 0), - rotate(270, 180, 0), - rotate(0, 270, 0), - rotate(90, 270, 0), - rotate(180, 270, 0), - rotate(270, 270, 0), - rotate(0, 0, 90), - rotate(90, 0, 90), - rotate(180, 0, 90), - rotate(270, 0, 90), - rotate(0, 0, 270), - rotate(90, 0, 270), - rotate(180, 0, 270), - rotate(270, 0, 270), - ] - - -ROTATIONS = rotations() - -BeaconList = Set[Vector] - - -def solve(input: List[str]) -> int: - def parse() -> List[BeaconList]: - res: List[BeaconList] = [] - - for line in input: - if "scanner" in line: - res.append(set()) - continue - if line == "": - continue - x, y, z = map(int, line.split(",")) - res[-1].add(Vector(x, y, z)) - - return res - - def find_overlap( - known: BeaconList, other: BeaconList - ) -> Optional[Tuple[Matrix, Vector]]: - def find_delta(known: BeaconList, other: BeaconList) -> Optional[Vector]: - for dest, source in itertools.product(known, rotated): - delta = dest - source - if sum((v + delta) in known for v in rotated) >= 12: - return delta - return None - - for r in ROTATIONS: - rotated = set(r @ v for v in other) - if (delta := find_delta(known, rotated)) is not None: - return r, delta - - return None - - def apply(known: BeaconList, other: BeaconList) -> Tuple[bool, BeaconList]: - res = find_overlap(known, other) - if res is None: - return False, known - - rot, delta = res - - new = {(rot @ v) + delta for v in other} - - # Return whether there are new points in the set - return not (new <= known), (known | new) - - def match_all(scans: List[BeaconList]) -> BeaconList: - # First scan is our basis - known = scans[0] - # No need to inspect the first scan in the future - to_match = scans[1:] - - while to_match: - s = to_match.pop(0) - applied, known = apply(known, s) - if not applied: - to_match.append(s) - return known - - beacons = parse() - return len(match_all(beacons)) - - -def main() -> None: - input = [line.strip() for line in sys.stdin.readlines()] - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2021/d19/ex1/input b/2021/d19/ex1/input deleted file mode 100644 index 56c93b8..0000000 --- a/2021/d19/ex1/input +++ /dev/null @@ -1,778 +0,0 @@ ---- scanner 0 --- -712,493,-580 --705,-746,944 --468,-742,927 --906,-760,-387 -523,612,505 --973,425,-333 -361,-777,-655 --172,-143,-8 -403,-606,-574 --655,761,677 --670,-738,898 -459,511,-563 -713,-623,478 --605,714,848 --18,-8,104 -510,641,739 --991,515,-523 -556,559,577 -709,-678,647 -789,-632,517 --976,-761,-391 --966,491,-435 --611,679,810 -383,-654,-565 -641,491,-564 --790,-798,-400 - ---- scanner 1 --- --286,612,-671 -550,-491,494 --344,-303,619 -487,-410,518 -973,-373,-692 -110,31,-17 -662,607,-702 -983,-337,-801 --550,671,606 --466,-293,710 -793,650,-662 --506,595,519 --294,-768,-699 -444,-519,645 --312,599,-535 --464,-304,529 -489,802,531 -438,778,402 -831,-342,-707 --542,513,494 --301,621,-550 --445,-677,-708 -560,846,460 --293,-724,-739 -638,590,-629 - ---- scanner 2 --- --635,-463,-706 -896,-619,679 -647,295,757 -797,-608,645 --270,-724,575 --493,485,466 --340,466,-635 -931,-698,684 -624,689,-597 -584,235,861 -411,-511,-238 --577,670,452 -592,614,-699 -69,3,116 -469,-472,-403 --762,-440,-769 -562,-473,-299 --426,448,-617 -670,355,931 -683,528,-588 --378,-620,578 --535,525,-608 --6,-191,36 --647,-428,-727 --454,-713,576 --458,625,481 - ---- scanner 3 --- -438,-559,589 --590,703,724 -451,970,-584 -657,488,518 -620,-539,588 -569,-409,-714 --654,-497,546 -506,893,-703 -367,-557,605 --760,743,-517 -299,925,-664 --802,-444,601 --760,797,-413 -523,-491,-552 -520,525,466 -47,174,-89 --554,-293,-909 --699,577,686 --563,-244,-847 -710,529,430 -556,-438,-480 --61,65,25 --577,-242,-690 --807,795,-448 --601,599,763 --846,-494,561 - ---- scanner 4 --- -519,654,-940 -723,-779,431 -512,259,327 --614,322,-479 --1,-73,-119 -807,-942,-373 -410,690,-950 --660,-720,-524 --889,427,353 --582,-558,474 --505,385,-481 --827,536,391 --549,416,-405 -735,-539,388 -638,-629,470 --609,-834,-559 -472,303,326 --636,-659,521 --833,511,409 --711,-721,-586 -745,-941,-451 -503,350,478 -504,685,-798 --532,-659,336 -813,-874,-376 - ---- scanner 5 --- -637,-351,-454 -820,833,-269 -487,-374,703 --451,-657,828 -766,726,370 --109,-27,-55 --452,-602,760 -526,-342,910 -833,757,-477 --647,-678,769 -689,-411,-450 --845,657,-682 --560,535,563 --468,403,553 -6,111,87 -718,-486,-416 --664,-436,-479 -771,843,-494 --655,-530,-493 -772,807,513 -672,815,457 --717,-428,-587 --797,629,-713 -606,-297,758 --433,544,520 --699,752,-723 - ---- scanner 6 --- --712,-426,681 -398,-239,-616 --866,737,603 -787,581,-421 --624,425,-698 -660,636,788 --641,478,-670 --855,410,-685 -54,176,135 --496,-215,-283 -889,500,-360 -479,-258,-539 -765,483,789 -699,635,723 -819,-682,528 --691,-319,832 -413,-316,-666 --865,873,502 --400,-297,-214 --411,-257,-391 -47,-11,-7 -908,714,-409 -739,-634,430 --589,-300,721 --806,911,549 -746,-579,435 - ---- scanner 7 --- --748,-520,456 -850,883,-684 -720,-714,-439 -734,-633,-369 -892,871,-799 -829,848,-672 --452,587,-307 -409,-653,665 -422,838,525 -421,-494,564 --522,703,760 --724,-450,600 -761,-674,-597 --356,-656,-802 --455,691,-415 --561,613,894 --321,-533,-753 -526,839,432 -361,800,374 -391,-623,659 --49,101,-52 --453,598,-491 --711,-374,399 --556,692,859 -90,-64,7 --445,-561,-815 - ---- scanner 8 --- -711,-456,-414 -290,-741,546 -381,736,-240 --404,-352,-609 --512,-394,-694 --386,-749,593 --466,-745,599 --616,687,954 -542,637,568 -352,-724,460 -629,585,653 -560,-563,-393 -303,-949,470 -70,-14,46 -482,600,-239 --436,-781,432 --107,31,169 -600,-437,-516 -428,774,-299 --806,273,-250 --819,288,-481 --709,762,937 --335,-434,-705 -519,574,718 --791,341,-464 --669,741,851 - ---- scanner 9 --- -658,667,348 --507,-411,-746 -489,722,344 -132,158,41 -624,-673,-878 --644,568,696 -652,-735,-754 --370,-679,656 -528,713,268 -747,-722,-843 -535,-741,347 --522,974,-638 --563,739,654 --454,-708,560 -456,-673,284 --600,-335,-744 --438,-676,659 --496,-227,-747 -541,680,-475 -639,-751,276 --554,691,674 --612,840,-677 --601,939,-643 -79,50,-113 -611,536,-451 -465,479,-488 - ---- scanner 10 --- -832,700,-495 --400,854,718 --24,73,89 --588,544,-742 --529,703,-780 -771,-593,-458 --621,-815,623 -883,676,-366 -877,-621,-609 -528,548,698 --496,849,685 --454,-751,-758 -761,744,-424 -683,488,665 --492,-693,-669 -834,-512,-482 --335,755,724 -659,505,738 --806,-766,645 -490,-444,743 --688,-774,667 -338,-439,837 --567,601,-646 --401,-780,-593 -348,-475,728 -66,-68,8 - ---- scanner 11 --- -557,487,481 --411,-305,476 --729,705,812 -544,489,-731 -581,-542,-442 --773,838,730 --916,955,-691 --594,-372,-747 -430,444,590 -673,438,-707 -581,550,562 -469,-550,-600 -556,-506,-524 --31,6,77 --139,144,-41 --418,-407,542 --408,-363,-710 -615,560,-775 --679,972,-695 -546,-464,375 --779,876,765 --478,-359,-709 -456,-344,374 -365,-466,364 --714,926,-687 --393,-495,566 - ---- scanner 12 --- --554,440,781 -620,-665,578 --484,464,637 --432,-355,595 --100,114,-60 -567,665,-581 -658,632,378 -579,627,343 -669,666,477 --459,-545,-640 -701,-707,749 --826,574,-834 --531,-512,-587 -626,-356,-521 -609,-609,-539 --888,565,-785 --693,-558,-669 -622,813,-634 -610,-427,-519 --13,-13,73 --471,-279,604 -582,857,-584 --408,477,838 --669,588,-836 -611,-685,626 --601,-359,650 - ---- scanner 13 --- --607,351,-484 -120,23,-52 -454,-521,-469 -841,462,484 --704,-386,498 -555,817,-561 --601,431,-488 --494,549,769 --768,401,-452 -514,-469,-465 --492,515,851 --712,-486,442 -882,550,537 -589,-440,-431 -400,-552,743 --730,-338,-284 -606,807,-499 -613,750,-424 --623,-392,355 -845,498,674 -445,-632,895 --22,-18,68 --580,552,764 -477,-671,688 --740,-387,-509 --654,-325,-492 - ---- scanner 14 --- -695,-578,-741 --525,-524,908 -627,579,740 -760,-659,787 --518,-492,-772 --669,412,783 -756,501,-366 -821,452,-499 --559,-362,-779 -670,538,749 --765,875,-491 -710,-615,897 --139,20,128 --704,858,-677 --534,-604,881 --880,846,-640 --743,467,748 -705,658,678 -719,447,-365 -774,-787,907 --573,-549,798 -9,95,-35 --465,-311,-776 --654,460,634 -596,-658,-757 -626,-617,-560 - ---- scanner 15 --- -661,511,-766 -458,-453,788 --435,-460,692 --325,-841,-621 -643,528,-513 -454,-559,864 -663,527,-695 -685,-911,-473 --469,-391,561 --421,650,-613 --393,-890,-656 --384,598,-476 --653,398,485 --319,-403,608 --425,686,-423 -506,-909,-564 -663,656,912 --660,341,560 -729,758,919 -560,-506,926 -639,568,937 --18,-10,58 --711,331,622 --326,-876,-486 -506,-913,-537 - ---- scanner 16 --- --443,-656,375 -499,-609,-905 --788,-254,-779 -757,881,-622 -505,-605,-825 -338,-641,-855 --799,-294,-956 --558,481,-500 -550,-485,523 --533,840,544 --454,-767,309 -860,827,-675 --575,428,-472 -360,668,836 --513,730,479 -506,685,731 --703,-212,-887 --344,413,-485 -364,629,768 --532,687,522 -843,902,-582 -562,-418,704 --460,-772,334 --108,116,-53 -564,-498,642 - ---- scanner 17 --- --779,-922,-822 -707,-737,-658 --353,566,475 -29,-40,-85 -522,297,-805 -631,-650,-614 --449,566,520 --505,714,-477 --468,538,-465 -521,227,-801 --780,-885,-876 --710,-766,541 --646,-987,-871 -789,-762,-622 -849,512,744 --415,618,312 -560,-718,631 -748,471,588 -836,396,648 -587,-774,579 --781,-865,647 -521,-732,401 --654,599,-448 -484,413,-792 --757,-725,746 - ---- scanner 18 --- -588,452,452 -696,-717,478 --592,750,399 -720,557,-881 --919,-583,750 -487,440,611 -627,453,-880 --99,159,-27 -392,-491,-745 --485,892,365 -258,-530,-655 --719,-344,-698 --647,440,-786 --669,-300,-658 --483,732,303 -293,-525,-734 -778,392,-842 --870,-592,812 --666,-492,-643 -753,-680,332 --655,528,-780 --564,389,-761 --40,0,-148 -552,-693,408 -493,422,581 --921,-569,593 - ---- scanner 19 --- -642,-674,-824 --308,502,851 --241,-283,729 --655,743,-775 --4,173,16 -176,-21,8 -594,-607,443 --230,440,852 -621,744,-440 -520,-583,-814 -470,735,-349 --360,-249,678 -640,-493,-813 --797,728,-744 -639,-574,362 -469,775,-393 -531,512,449 -613,609,539 --311,-482,-707 -574,524,689 --374,-458,-626 -777,-571,440 --233,434,784 --391,-259,664 --807,837,-780 --268,-609,-598 - ---- scanner 20 --- -131,165,-117 --691,728,707 --657,524,-685 --575,-348,-621 -805,543,456 -10,-6,-166 -439,-390,620 --663,436,-693 -935,-596,-470 -474,-343,618 --698,-560,526 --660,-451,400 --535,-304,-671 -873,-587,-421 -522,746,-748 -426,728,-857 -698,559,303 --639,732,574 -543,-390,566 --638,385,-776 --688,704,525 -711,524,452 --520,-496,-674 -488,888,-855 --737,-549,422 -716,-573,-419 - ---- scanner 21 --- --696,-367,959 -573,-537,-825 -862,-826,707 --803,630,451 --616,332,-658 -877,-813,938 --616,-875,-583 --662,-818,-516 -376,421,889 -10,-124,158 -651,660,-577 -809,-798,724 -804,661,-682 -706,-549,-704 --763,545,463 -414,374,948 --786,-498,923 --873,714,446 --673,-745,-566 -550,475,949 --614,420,-709 --33,21,30 --650,-481,895 --655,443,-679 -652,595,-616 -787,-488,-806 - ---- scanner 22 --- -64,81,54 --633,524,-715 --680,-850,-309 --663,372,613 --848,-812,430 -788,-328,-489 -842,-431,-542 -738,-714,669 -863,-345,-582 --640,-736,417 --648,-689,-259 --571,473,-725 -569,758,-411 --623,-822,479 --701,507,532 -927,523,543 -917,537,574 -602,839,-456 -122,-68,153 -893,472,424 -605,761,-594 --708,531,-658 --644,-683,-339 -675,-564,646 --667,432,561 -686,-629,756 - ---- scanner 23 --- --489,640,-740 --739,-813,720 -399,-469,534 --451,424,514 --864,-439,-801 --865,-385,-764 --458,554,473 -436,-460,348 -451,875,619 -439,341,-733 -546,-647,-529 --454,373,420 -622,-603,-616 -704,-639,-641 -455,858,856 -437,-456,418 --473,720,-641 -415,392,-604 -459,829,654 --590,-784,835 --553,-796,659 -5,-29,20 -371,463,-675 --670,679,-671 --731,-390,-866 - ---- scanner 24 --- -479,813,605 --421,-402,-375 -444,851,599 --48,139,125 --748,529,574 -105,11,84 -647,-560,-465 --862,612,-634 -546,508,-529 --785,731,-579 -667,-561,-647 -643,-520,985 --656,-747,608 --808,581,578 --707,-757,670 -733,-330,967 -397,680,649 --380,-490,-428 -665,-577,-718 -667,-432,960 -517,742,-516 --417,-438,-565 --649,-690,533 --817,692,-786 -599,580,-562 --673,500,540 - ---- scanner 25 --- --587,-880,-854 -774,-772,-664 --665,449,-801 -399,-948,578 --368,-666,714 -693,243,629 -953,479,-759 --494,391,634 -963,465,-790 -704,325,429 -929,414,-909 --812,-870,-903 -442,-751,549 -559,322,560 --588,493,572 --604,-794,-916 -155,34,-112 -711,-622,-687 --399,-694,762 -722,-687,-577 --358,-789,616 -26,-59,-17 --631,374,-772 -404,-719,583 --627,314,-720 --602,399,581 - ---- scanner 26 --- --537,-661,-554 --494,-780,790 -659,-817,588 -784,-534,-350 --498,-840,738 -725,-513,-546 -609,514,811 -596,485,577 --569,365,639 --458,481,-780 --631,-763,-616 -33,-53,121 --66,64,-29 -564,545,-271 -596,614,-439 --523,-755,-563 --525,447,506 --550,528,-756 --460,-705,819 --656,535,-823 -714,-894,707 -518,578,-478 -866,-849,627 -716,-589,-351 -642,567,739 --519,412,468 - ---- scanner 27 --- --85,-16,64 -418,478,-378 --513,623,709 -814,736,845 --632,-710,-855 -557,-666,-807 --594,452,667 --556,252,-630 --592,-760,-811 --604,-645,429 --588,-647,358 -783,728,850 --647,-707,-663 -52,-66,-100 -849,608,807 --603,500,687 --635,217,-625 -834,-623,651 -358,501,-552 -836,-802,587 -298,564,-448 -746,-733,-810 -609,-713,-817 -832,-802,560 --605,-665,611 --120,-179,-120 --545,351,-664 diff --git a/2021/d19/ex2/ex2.py b/2021/d19/ex2/ex2.py deleted file mode 100755 index 1ad850a..0000000 --- a/2021/d19/ex2/ex2.py +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/env python - -import functools -import itertools -import sys -from dataclasses import dataclass -from typing import List, Optional, Set, Tuple - - -@dataclass(eq=True, frozen=True) # Hash-able -class Vector: - x: int - y: int - z: int - - def __add__(self, other: "Vector") -> "Vector": - return Vector(self.x + other.x, self.y + other.y, self.z + other.z) - - def __sub__(self, other: "Vector") -> "Vector": - return Vector(self.x - other.x, self.y - other.y, self.z - other.z) - - -@dataclass(eq=True, frozen=True) # Hash-able -class Matrix: - v1: Vector - v2: Vector - v3: Vector - - def __matmul__(self, other: Vector) -> Vector: - return Vector( - self.v1.x * other.x + self.v1.y * other.y + self.v1.z * other.z, - self.v2.x * other.x + self.v2.y * other.y + self.v2.z * other.z, - self.v3.x * other.x + self.v3.y * other.y + self.v3.z * other.z, - ) - - -def rotations() -> List[Matrix]: - def cos(angle: int) -> int: - if angle == 0: - return 1 - if angle == 180: - return -1 - assert angle in (90, 270) # Sanity check - return 0 - - def sin(angle: int) -> int: - if angle == 90: - return 1 - if angle == 270: - return -1 - assert angle in (0, 180) # Sanity check - return 0 - - def rotate(x: int, y: int, z: int) -> Matrix: - v1 = Vector( - cos(z) * cos(y), - cos(z) * sin(y) * sin(x) - sin(z) * cos(x), - cos(z) * sin(y) * cos(x) + sin(z) * sin(x), - ) - v2 = Vector( - sin(z) * cos(y), - sin(z) * sin(y) * sin(x) + cos(z) * cos(x), - sin(z) * sin(y) * cos(x) - cos(z) * sin(x), - ) - v3 = Vector(-sin(y), cos(y) * sin(x), cos(y) * cos(x)) - return Matrix(v1, v2, v3) - - return [ - rotate(0, 0, 0), - rotate(90, 0, 0), - rotate(180, 0, 0), - rotate(270, 0, 0), - rotate(0, 90, 0), - rotate(90, 90, 0), - rotate(180, 90, 0), - rotate(270, 90, 0), - rotate(0, 180, 0), - rotate(90, 180, 0), - rotate(180, 180, 0), - rotate(270, 180, 0), - rotate(0, 270, 0), - rotate(90, 270, 0), - rotate(180, 270, 0), - rotate(270, 270, 0), - rotate(0, 0, 90), - rotate(90, 0, 90), - rotate(180, 0, 90), - rotate(270, 0, 90), - rotate(0, 0, 270), - rotate(90, 0, 270), - rotate(180, 0, 270), - rotate(270, 0, 270), - ] - - -ROTATIONS = rotations() - -BeaconList = Set[Vector] - - -def solve(input: List[str]) -> int: - def parse() -> List[BeaconList]: - res: List[BeaconList] = [] - - for line in input: - if "scanner" in line: - res.append(set()) - continue - if line == "": - continue - x, y, z = map(int, line.split(",")) - res[-1].add(Vector(x, y, z)) - - return res - - def find_overlap( - known: BeaconList, other: BeaconList - ) -> Optional[Tuple[Matrix, Vector]]: - def find_delta(known: BeaconList, other: BeaconList) -> Optional[Vector]: - for dest, source in itertools.product(known, rotated): - delta = dest - source - if sum((v + delta) in known for v in rotated) >= 12: - return delta - return None - - for r in ROTATIONS: - rotated = set(r @ v for v in other) - if (delta := find_delta(known, rotated)) is not None: - return r, delta - - return None - - def apply(known: BeaconList, other: BeaconList) -> Tuple[bool, Vector, BeaconList]: - res = find_overlap(known, other) - if res is None: - return False, Vector(0, 0, 0), known - - rot, delta = res - - new = {(rot @ v) + delta for v in other} - - # Return whether there are new points in the set - return (new <= known), delta, (known | new) - - def match_all(scans: List[BeaconList]) -> Set[Vector]: - # First scan is our basis - known = scans[0] - # No need to inspect the first scan in the future - to_match = scans[1:] - # Position our first scanner at the origin - deltas = {Vector(0, 0, 0)} - - while to_match: - s = to_match.pop(0) - applied, delta, known = apply(known, s) - if not applied: - to_match.append(s) - else: - deltas.add(delta) - return deltas - - def manhattan_dist(v1: Vector, v2: Vector) -> int: - return abs(v1.x - v2.x) + abs(v1.y - v2.y) + abs(v1.z - v2.z) - - beacons = parse() - scanner_positions = match_all(beacons) - return max( - manhattan_dist(v1, v2) - for v1, v2 in itertools.combinations(scanner_positions, 2) - ) - - -def main() -> None: - input = [line.strip() for line in sys.stdin.readlines()] - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2021/d19/ex2/input b/2021/d19/ex2/input deleted file mode 100644 index 56c93b8..0000000 --- a/2021/d19/ex2/input +++ /dev/null @@ -1,778 +0,0 @@ ---- scanner 0 --- -712,493,-580 --705,-746,944 --468,-742,927 --906,-760,-387 -523,612,505 --973,425,-333 -361,-777,-655 --172,-143,-8 -403,-606,-574 --655,761,677 --670,-738,898 -459,511,-563 -713,-623,478 --605,714,848 --18,-8,104 -510,641,739 --991,515,-523 -556,559,577 -709,-678,647 -789,-632,517 --976,-761,-391 --966,491,-435 --611,679,810 -383,-654,-565 -641,491,-564 --790,-798,-400 - ---- scanner 1 --- --286,612,-671 -550,-491,494 --344,-303,619 -487,-410,518 -973,-373,-692 -110,31,-17 -662,607,-702 -983,-337,-801 --550,671,606 --466,-293,710 -793,650,-662 --506,595,519 --294,-768,-699 -444,-519,645 --312,599,-535 --464,-304,529 -489,802,531 -438,778,402 -831,-342,-707 --542,513,494 --301,621,-550 --445,-677,-708 -560,846,460 --293,-724,-739 -638,590,-629 - ---- scanner 2 --- --635,-463,-706 -896,-619,679 -647,295,757 -797,-608,645 --270,-724,575 --493,485,466 --340,466,-635 -931,-698,684 -624,689,-597 -584,235,861 -411,-511,-238 --577,670,452 -592,614,-699 -69,3,116 -469,-472,-403 --762,-440,-769 -562,-473,-299 --426,448,-617 -670,355,931 -683,528,-588 --378,-620,578 --535,525,-608 --6,-191,36 --647,-428,-727 --454,-713,576 --458,625,481 - ---- scanner 3 --- -438,-559,589 --590,703,724 -451,970,-584 -657,488,518 -620,-539,588 -569,-409,-714 --654,-497,546 -506,893,-703 -367,-557,605 --760,743,-517 -299,925,-664 --802,-444,601 --760,797,-413 -523,-491,-552 -520,525,466 -47,174,-89 --554,-293,-909 --699,577,686 --563,-244,-847 -710,529,430 -556,-438,-480 --61,65,25 --577,-242,-690 --807,795,-448 --601,599,763 --846,-494,561 - ---- scanner 4 --- -519,654,-940 -723,-779,431 -512,259,327 --614,322,-479 --1,-73,-119 -807,-942,-373 -410,690,-950 --660,-720,-524 --889,427,353 --582,-558,474 --505,385,-481 --827,536,391 --549,416,-405 -735,-539,388 -638,-629,470 --609,-834,-559 -472,303,326 --636,-659,521 --833,511,409 --711,-721,-586 -745,-941,-451 -503,350,478 -504,685,-798 --532,-659,336 -813,-874,-376 - ---- scanner 5 --- -637,-351,-454 -820,833,-269 -487,-374,703 --451,-657,828 -766,726,370 --109,-27,-55 --452,-602,760 -526,-342,910 -833,757,-477 --647,-678,769 -689,-411,-450 --845,657,-682 --560,535,563 --468,403,553 -6,111,87 -718,-486,-416 --664,-436,-479 -771,843,-494 --655,-530,-493 -772,807,513 -672,815,457 --717,-428,-587 --797,629,-713 -606,-297,758 --433,544,520 --699,752,-723 - ---- scanner 6 --- --712,-426,681 -398,-239,-616 --866,737,603 -787,581,-421 --624,425,-698 -660,636,788 --641,478,-670 --855,410,-685 -54,176,135 --496,-215,-283 -889,500,-360 -479,-258,-539 -765,483,789 -699,635,723 -819,-682,528 --691,-319,832 -413,-316,-666 --865,873,502 --400,-297,-214 --411,-257,-391 -47,-11,-7 -908,714,-409 -739,-634,430 --589,-300,721 --806,911,549 -746,-579,435 - ---- scanner 7 --- --748,-520,456 -850,883,-684 -720,-714,-439 -734,-633,-369 -892,871,-799 -829,848,-672 --452,587,-307 -409,-653,665 -422,838,525 -421,-494,564 --522,703,760 --724,-450,600 -761,-674,-597 --356,-656,-802 --455,691,-415 --561,613,894 --321,-533,-753 -526,839,432 -361,800,374 -391,-623,659 --49,101,-52 --453,598,-491 --711,-374,399 --556,692,859 -90,-64,7 --445,-561,-815 - ---- scanner 8 --- -711,-456,-414 -290,-741,546 -381,736,-240 --404,-352,-609 --512,-394,-694 --386,-749,593 --466,-745,599 --616,687,954 -542,637,568 -352,-724,460 -629,585,653 -560,-563,-393 -303,-949,470 -70,-14,46 -482,600,-239 --436,-781,432 --107,31,169 -600,-437,-516 -428,774,-299 --806,273,-250 --819,288,-481 --709,762,937 --335,-434,-705 -519,574,718 --791,341,-464 --669,741,851 - ---- scanner 9 --- -658,667,348 --507,-411,-746 -489,722,344 -132,158,41 -624,-673,-878 --644,568,696 -652,-735,-754 --370,-679,656 -528,713,268 -747,-722,-843 -535,-741,347 --522,974,-638 --563,739,654 --454,-708,560 -456,-673,284 --600,-335,-744 --438,-676,659 --496,-227,-747 -541,680,-475 -639,-751,276 --554,691,674 --612,840,-677 --601,939,-643 -79,50,-113 -611,536,-451 -465,479,-488 - ---- scanner 10 --- -832,700,-495 --400,854,718 --24,73,89 --588,544,-742 --529,703,-780 -771,-593,-458 --621,-815,623 -883,676,-366 -877,-621,-609 -528,548,698 --496,849,685 --454,-751,-758 -761,744,-424 -683,488,665 --492,-693,-669 -834,-512,-482 --335,755,724 -659,505,738 --806,-766,645 -490,-444,743 --688,-774,667 -338,-439,837 --567,601,-646 --401,-780,-593 -348,-475,728 -66,-68,8 - ---- scanner 11 --- -557,487,481 --411,-305,476 --729,705,812 -544,489,-731 -581,-542,-442 --773,838,730 --916,955,-691 --594,-372,-747 -430,444,590 -673,438,-707 -581,550,562 -469,-550,-600 -556,-506,-524 --31,6,77 --139,144,-41 --418,-407,542 --408,-363,-710 -615,560,-775 --679,972,-695 -546,-464,375 --779,876,765 --478,-359,-709 -456,-344,374 -365,-466,364 --714,926,-687 --393,-495,566 - ---- scanner 12 --- --554,440,781 -620,-665,578 --484,464,637 --432,-355,595 --100,114,-60 -567,665,-581 -658,632,378 -579,627,343 -669,666,477 --459,-545,-640 -701,-707,749 --826,574,-834 --531,-512,-587 -626,-356,-521 -609,-609,-539 --888,565,-785 --693,-558,-669 -622,813,-634 -610,-427,-519 --13,-13,73 --471,-279,604 -582,857,-584 --408,477,838 --669,588,-836 -611,-685,626 --601,-359,650 - ---- scanner 13 --- --607,351,-484 -120,23,-52 -454,-521,-469 -841,462,484 --704,-386,498 -555,817,-561 --601,431,-488 --494,549,769 --768,401,-452 -514,-469,-465 --492,515,851 --712,-486,442 -882,550,537 -589,-440,-431 -400,-552,743 --730,-338,-284 -606,807,-499 -613,750,-424 --623,-392,355 -845,498,674 -445,-632,895 --22,-18,68 --580,552,764 -477,-671,688 --740,-387,-509 --654,-325,-492 - ---- scanner 14 --- -695,-578,-741 --525,-524,908 -627,579,740 -760,-659,787 --518,-492,-772 --669,412,783 -756,501,-366 -821,452,-499 --559,-362,-779 -670,538,749 --765,875,-491 -710,-615,897 --139,20,128 --704,858,-677 --534,-604,881 --880,846,-640 --743,467,748 -705,658,678 -719,447,-365 -774,-787,907 --573,-549,798 -9,95,-35 --465,-311,-776 --654,460,634 -596,-658,-757 -626,-617,-560 - ---- scanner 15 --- -661,511,-766 -458,-453,788 --435,-460,692 --325,-841,-621 -643,528,-513 -454,-559,864 -663,527,-695 -685,-911,-473 --469,-391,561 --421,650,-613 --393,-890,-656 --384,598,-476 --653,398,485 --319,-403,608 --425,686,-423 -506,-909,-564 -663,656,912 --660,341,560 -729,758,919 -560,-506,926 -639,568,937 --18,-10,58 --711,331,622 --326,-876,-486 -506,-913,-537 - ---- scanner 16 --- --443,-656,375 -499,-609,-905 --788,-254,-779 -757,881,-622 -505,-605,-825 -338,-641,-855 --799,-294,-956 --558,481,-500 -550,-485,523 --533,840,544 --454,-767,309 -860,827,-675 --575,428,-472 -360,668,836 --513,730,479 -506,685,731 --703,-212,-887 --344,413,-485 -364,629,768 --532,687,522 -843,902,-582 -562,-418,704 --460,-772,334 --108,116,-53 -564,-498,642 - ---- scanner 17 --- --779,-922,-822 -707,-737,-658 --353,566,475 -29,-40,-85 -522,297,-805 -631,-650,-614 --449,566,520 --505,714,-477 --468,538,-465 -521,227,-801 --780,-885,-876 --710,-766,541 --646,-987,-871 -789,-762,-622 -849,512,744 --415,618,312 -560,-718,631 -748,471,588 -836,396,648 -587,-774,579 --781,-865,647 -521,-732,401 --654,599,-448 -484,413,-792 --757,-725,746 - ---- scanner 18 --- -588,452,452 -696,-717,478 --592,750,399 -720,557,-881 --919,-583,750 -487,440,611 -627,453,-880 --99,159,-27 -392,-491,-745 --485,892,365 -258,-530,-655 --719,-344,-698 --647,440,-786 --669,-300,-658 --483,732,303 -293,-525,-734 -778,392,-842 --870,-592,812 --666,-492,-643 -753,-680,332 --655,528,-780 --564,389,-761 --40,0,-148 -552,-693,408 -493,422,581 --921,-569,593 - ---- scanner 19 --- -642,-674,-824 --308,502,851 --241,-283,729 --655,743,-775 --4,173,16 -176,-21,8 -594,-607,443 --230,440,852 -621,744,-440 -520,-583,-814 -470,735,-349 --360,-249,678 -640,-493,-813 --797,728,-744 -639,-574,362 -469,775,-393 -531,512,449 -613,609,539 --311,-482,-707 -574,524,689 --374,-458,-626 -777,-571,440 --233,434,784 --391,-259,664 --807,837,-780 --268,-609,-598 - ---- scanner 20 --- -131,165,-117 --691,728,707 --657,524,-685 --575,-348,-621 -805,543,456 -10,-6,-166 -439,-390,620 --663,436,-693 -935,-596,-470 -474,-343,618 --698,-560,526 --660,-451,400 --535,-304,-671 -873,-587,-421 -522,746,-748 -426,728,-857 -698,559,303 --639,732,574 -543,-390,566 --638,385,-776 --688,704,525 -711,524,452 --520,-496,-674 -488,888,-855 --737,-549,422 -716,-573,-419 - ---- scanner 21 --- --696,-367,959 -573,-537,-825 -862,-826,707 --803,630,451 --616,332,-658 -877,-813,938 --616,-875,-583 --662,-818,-516 -376,421,889 -10,-124,158 -651,660,-577 -809,-798,724 -804,661,-682 -706,-549,-704 --763,545,463 -414,374,948 --786,-498,923 --873,714,446 --673,-745,-566 -550,475,949 --614,420,-709 --33,21,30 --650,-481,895 --655,443,-679 -652,595,-616 -787,-488,-806 - ---- scanner 22 --- -64,81,54 --633,524,-715 --680,-850,-309 --663,372,613 --848,-812,430 -788,-328,-489 -842,-431,-542 -738,-714,669 -863,-345,-582 --640,-736,417 --648,-689,-259 --571,473,-725 -569,758,-411 --623,-822,479 --701,507,532 -927,523,543 -917,537,574 -602,839,-456 -122,-68,153 -893,472,424 -605,761,-594 --708,531,-658 --644,-683,-339 -675,-564,646 --667,432,561 -686,-629,756 - ---- scanner 23 --- --489,640,-740 --739,-813,720 -399,-469,534 --451,424,514 --864,-439,-801 --865,-385,-764 --458,554,473 -436,-460,348 -451,875,619 -439,341,-733 -546,-647,-529 --454,373,420 -622,-603,-616 -704,-639,-641 -455,858,856 -437,-456,418 --473,720,-641 -415,392,-604 -459,829,654 --590,-784,835 --553,-796,659 -5,-29,20 -371,463,-675 --670,679,-671 --731,-390,-866 - ---- scanner 24 --- -479,813,605 --421,-402,-375 -444,851,599 --48,139,125 --748,529,574 -105,11,84 -647,-560,-465 --862,612,-634 -546,508,-529 --785,731,-579 -667,-561,-647 -643,-520,985 --656,-747,608 --808,581,578 --707,-757,670 -733,-330,967 -397,680,649 --380,-490,-428 -665,-577,-718 -667,-432,960 -517,742,-516 --417,-438,-565 --649,-690,533 --817,692,-786 -599,580,-562 --673,500,540 - ---- scanner 25 --- --587,-880,-854 -774,-772,-664 --665,449,-801 -399,-948,578 --368,-666,714 -693,243,629 -953,479,-759 --494,391,634 -963,465,-790 -704,325,429 -929,414,-909 --812,-870,-903 -442,-751,549 -559,322,560 --588,493,572 --604,-794,-916 -155,34,-112 -711,-622,-687 --399,-694,762 -722,-687,-577 --358,-789,616 -26,-59,-17 --631,374,-772 -404,-719,583 --627,314,-720 --602,399,581 - ---- scanner 26 --- --537,-661,-554 --494,-780,790 -659,-817,588 -784,-534,-350 --498,-840,738 -725,-513,-546 -609,514,811 -596,485,577 --569,365,639 --458,481,-780 --631,-763,-616 -33,-53,121 --66,64,-29 -564,545,-271 -596,614,-439 --523,-755,-563 --525,447,506 --550,528,-756 --460,-705,819 --656,535,-823 -714,-894,707 -518,578,-478 -866,-849,627 -716,-589,-351 -642,567,739 --519,412,468 - ---- scanner 27 --- --85,-16,64 -418,478,-378 --513,623,709 -814,736,845 --632,-710,-855 -557,-666,-807 --594,452,667 --556,252,-630 --592,-760,-811 --604,-645,429 --588,-647,358 -783,728,850 --647,-707,-663 -52,-66,-100 -849,608,807 --603,500,687 --635,217,-625 -834,-623,651 -358,501,-552 -836,-802,587 -298,564,-448 -746,-733,-810 -609,-713,-817 -832,-802,560 --605,-665,611 --120,-179,-120 --545,351,-664