diff --git a/2023/d18/ex1/ex1.py b/2023/d18/ex1/ex1.py deleted file mode 100755 index be11cb2..0000000 --- a/2023/d18/ex1/ex1.py +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from enum import StrEnum -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(StrEnum): - UP = "U" - DOWN = "D" - LEFT = "L" - RIGHT = "R" - - def apply(self, pos: Point, n: int = 1) -> Point: - DIRECTIONS = { - "U": Point(-1, 0), - "D": Point(1, 0), - "L": Point(0, -1), - "R": Point(0, 1), - } - dx, dy = DIRECTIONS[self.value] - return Point(pos.x + dx * n, pos.y + dy * n) - - -DigPlanStep = tuple[Direction, int] -DigPlan = list[DigPlanStep] - - -def solve(input: list[str]) -> int: - def parse_line(line: str) -> DigPlanStep: - dir, n, _ = line.split() - return Direction(dir), int(n) - - def parse(input: list[str]) -> DigPlan: - return list(map(parse_line, input)) - - def dig_trench(plan: DigPlan) -> list[Point]: - points = [Point(0, 0)] - - for direction, n in plan: - points.append(direction.apply(points[-1], n)) - # The trench should loop back to the start, make sure we don't count it twice - if points[-1] == Point(0, 0): - del points[-1] - - return points - - def lagoon_volume(trench: list[Point]) -> int: - def shoelace_area(points: list[Point]) -> int: - # Must be integer because pipes follow the grid, and can't cut squares in half - return abs( - sum( - (points[i - 1].x * points[i].y) - (points[i].x * points[i - 1].y) - for i in range(len(points)) - ) - // 2 - ) - - def perimeter(points: list[Point]) -> int: - res = 0 - - for p, n in itertools.pairwise(itertools.chain(points, [points[0]])): - res += abs(n.x - p.x) + abs(n.y - p.y) - - return res - - area = shoelace_area(trench) - trench_points = perimeter(trench) - interior_points = area - trench_points // 2 + 1 - return interior_points + trench_points - - plan = parse(input) - trench = dig_trench(plan) - return lagoon_volume(list(trench)) - - -def main() -> None: - input = sys.stdin.read().splitlines() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2023/d18/ex1/input b/2023/d18/ex1/input deleted file mode 100644 index 6bee4c1..0000000 --- a/2023/d18/ex1/input +++ /dev/null @@ -1,794 +0,0 @@ -R 4 (#4b18e0) -U 4 (#0b4f93) -R 4 (#6d70b0) -U 12 (#86edc3) -R 4 (#435460) -U 3 (#07f023) -R 8 (#33dd00) -U 5 (#599aa3) -L 11 (#83c702) -U 5 (#3f0501) -L 7 (#4bf232) -U 9 (#3f0503) -L 2 (#4955d2) -U 5 (#24f2e3) -L 9 (#16abf2) -U 6 (#60f753) -L 3 (#678dd2) -U 3 (#736093) -L 3 (#007482) -D 7 (#446e11) -L 6 (#0482a2) -D 8 (#997fd1) -L 4 (#4891e2) -D 6 (#2547b1) -L 5 (#501bf2) -D 8 (#7ed033) -L 8 (#0dabe2) -U 8 (#7184d3) -L 2 (#748a42) -U 5 (#12e093) -L 7 (#672432) -D 7 (#19c6a3) -L 4 (#1c5c22) -D 2 (#6e8a23) -L 10 (#5cd602) -U 9 (#1d8ff3) -L 7 (#359ce2) -U 6 (#333143) -R 11 (#0422f2) -D 10 (#235323) -R 6 (#64bc72) -U 10 (#6ea5f3) -R 11 (#68df60) -U 10 (#0952c3) -L 4 (#5206d2) -U 6 (#09c2a3) -L 5 (#45f7e0) -U 6 (#6d15e3) -L 6 (#271740) -D 6 (#6d15e1) -L 7 (#2e6a20) -U 9 (#178883) -L 9 (#430370) -U 4 (#2ee7e3) -L 7 (#8bdcf0) -D 9 (#5cebd3) -L 3 (#3d5a50) -D 4 (#5ecc23) -L 8 (#095b52) -U 9 (#3b7121) -L 10 (#8061b2) -U 4 (#3b7123) -L 7 (#209272) -U 4 (#493833) -L 9 (#7d9b02) -U 5 (#283633) -L 3 (#0db702) -U 3 (#437d73) -L 14 (#721282) -U 4 (#059a63) -L 2 (#4630d2) -U 5 (#6c5f43) -L 13 (#2949c2) -U 3 (#590a93) -R 5 (#4f5650) -U 5 (#71c3e3) -L 8 (#308540) -D 15 (#4fbc53) -L 2 (#4fa760) -U 15 (#41d523) -L 8 (#6bd380) -U 6 (#5cb553) -R 6 (#76acc0) -U 10 (#6be3a3) -R 6 (#5d61b0) -D 10 (#6dd101) -R 4 (#04f600) -U 4 (#4ea101) -R 2 (#6c2630) -U 5 (#498ac1) -R 5 (#0667a0) -U 5 (#120ef3) -R 3 (#31c080) -U 5 (#861cd3) -R 11 (#364e90) -D 5 (#6dd103) -R 9 (#6fe5b0) -D 11 (#119d43) -R 6 (#111310) -D 14 (#2ff323) -R 7 (#177432) -U 12 (#0ccbd3) -R 2 (#77c592) -U 9 (#6eee43) -R 10 (#21e622) -U 8 (#0bc513) -L 8 (#5398a0) -U 2 (#53cca3) -L 10 (#463c20) -U 5 (#53cca1) -R 8 (#174b20) -U 11 (#09ddc3) -R 6 (#20c940) -U 11 (#2fc6c3) -R 8 (#7ab1b0) -U 6 (#7ab291) -R 3 (#057160) -U 6 (#008331) -R 11 (#62c440) -U 12 (#3233a1) -R 2 (#1ceaa0) -U 4 (#4ef663) -R 3 (#7e5670) -U 2 (#4ef661) -R 5 (#3ccc40) -U 8 (#6e3531) -L 13 (#3964a0) -U 5 (#68b801) -R 13 (#83d220) -U 5 (#459901) -R 2 (#053a70) -U 6 (#4d18d3) -R 11 (#8a23d0) -U 8 (#4d18d1) -R 9 (#2cce90) -D 14 (#48af61) -L 6 (#045500) -D 6 (#0b4971) -L 8 (#18fa70) -D 7 (#7d8d03) -L 3 (#6ba530) -D 9 (#061783) -R 9 (#2c9c30) -D 13 (#402993) -R 8 (#18e9c0) -D 7 (#51e7a3) -R 15 (#18e9c2) -D 3 (#0ae133) -R 5 (#4929f0) -D 3 (#8d4623) -R 4 (#277680) -U 11 (#034583) -R 7 (#1ea1a0) -D 11 (#6cc5e3) -R 8 (#8894e0) -U 5 (#2fc6c1) -R 6 (#4dd6d0) -U 3 (#7f5b21) -R 11 (#219440) -U 4 (#2db8a1) -R 6 (#4053a0) -U 6 (#2df7e1) -R 12 (#086710) -U 8 (#47c7c1) -R 4 (#41ee90) -U 3 (#1dfa61) -R 3 (#5c3610) -U 7 (#483023) -R 10 (#2b6060) -D 3 (#327133) -R 8 (#2e4b30) -D 14 (#212321) -R 8 (#4bfd00) -D 5 (#5f0b81) -R 4 (#718450) -D 14 (#320dd1) -R 5 (#103630) -D 6 (#911953) -R 4 (#3f6190) -D 7 (#212323) -L 4 (#7f84b0) -D 10 (#2816a1) -R 5 (#026f80) -D 2 (#528ab1) -R 8 (#04e160) -D 11 (#655ca3) -R 2 (#0a1bf0) -D 3 (#6872c3) -R 12 (#7ad510) -D 8 (#72fe63) -R 7 (#109a50) -D 9 (#66ae31) -R 3 (#0828a2) -D 12 (#039eb1) -R 8 (#6f2c60) -D 6 (#46dae1) -R 12 (#76c900) -D 8 (#724711) -L 10 (#0a41a0) -D 8 (#73f301) -L 2 (#029092) -D 5 (#2ee5b3) -R 9 (#794702) -U 9 (#2ee5b1) -R 9 (#745f72) -U 2 (#108e61) -R 4 (#30e792) -U 10 (#099281) -R 11 (#347f32) -U 4 (#319ab1) -L 5 (#44a712) -U 9 (#623681) -L 6 (#3b5002) -U 10 (#25e431) -R 6 (#4f3f22) -U 4 (#226f51) -R 5 (#26f7b2) -U 8 (#588341) -R 4 (#09de02) -D 11 (#423f21) -L 6 (#6c9ee2) -D 10 (#423f23) -R 6 (#3badf2) -D 4 (#2c0a93) -R 4 (#521a32) -U 7 (#4ee803) -R 15 (#47f6d2) -U 2 (#673651) -R 4 (#5c10b2) -U 9 (#4dc641) -L 11 (#4d7032) -U 6 (#299111) -L 8 (#8d06b2) -U 8 (#22e4d1) -L 7 (#7dac02) -U 4 (#58e171) -L 7 (#17e332) -D 12 (#211931) -L 4 (#7e1732) -D 5 (#502911) -L 4 (#88c6c2) -D 5 (#430ba1) -L 3 (#3e4de0) -D 13 (#481b11) -L 5 (#5925e0) -U 4 (#1cecb1) -L 7 (#11ecf0) -U 7 (#634bc1) -R 7 (#6218d2) -U 7 (#7990f3) -L 5 (#576b42) -U 4 (#7990f1) -L 10 (#145832) -U 9 (#609ef1) -L 3 (#0d8822) -U 4 (#2b1f83) -L 3 (#77a562) -U 5 (#2b1f81) -L 6 (#3d05c2) -U 7 (#4b56d1) -L 5 (#1f6272) -U 8 (#916891) -R 6 (#087ce0) -U 6 (#2cf203) -R 12 (#285e60) -U 9 (#6ae623) -R 9 (#8a34a0) -U 9 (#6ae621) -L 9 (#15b200) -U 11 (#40c541) -R 5 (#0c7fc0) -D 7 (#2d5ad3) -R 9 (#42f280) -D 7 (#8140a3) -R 3 (#255770) -D 10 (#8140a1) -R 12 (#4ac260) -D 5 (#2d5ad1) -R 8 (#083780) -U 15 (#40c543) -R 7 (#028ab0) -U 13 (#2cf201) -R 5 (#1461d0) -U 2 (#23bff1) -R 4 (#1a4992) -U 3 (#355fc1) -R 7 (#6cafd2) -U 5 (#355fc3) -R 6 (#226752) -D 6 (#5af021) -R 11 (#526e82) -D 6 (#055ac1) -R 4 (#460a42) -D 3 (#055ac3) -R 6 (#565542) -D 3 (#3cd6a1) -L 7 (#2da922) -D 10 (#708ea3) -R 7 (#687472) -D 4 (#4ec333) -R 4 (#58d602) -U 7 (#4dd3e3) -R 3 (#23a7c0) -U 10 (#51fa83) -R 5 (#23a7c2) -D 5 (#188363) -R 14 (#5bc432) -U 4 (#3f0d23) -R 8 (#27a940) -U 3 (#62a3a3) -R 10 (#27a942) -U 6 (#0ceab3) -R 2 (#4479c2) -U 12 (#8beb63) -L 2 (#0b84a2) -U 3 (#3aa313) -L 7 (#270672) -U 15 (#4bd563) -L 5 (#4d8072) -U 6 (#045183) -R 12 (#08fed2) -U 11 (#52d323) -R 2 (#050992) -U 9 (#618533) -R 4 (#17a282) -D 7 (#08e921) -R 3 (#1a0d22) -D 6 (#0e8541) -R 11 (#61b232) -D 7 (#6635f1) -R 5 (#617832) -D 5 (#08f4f3) -R 2 (#490c22) -D 3 (#234821) -R 3 (#476942) -D 12 (#234823) -R 11 (#31b6d2) -D 4 (#08f4f1) -L 6 (#129582) -D 6 (#507ed1) -R 6 (#1e7010) -D 8 (#5490e1) -R 10 (#093bb0) -D 4 (#7cefc1) -R 9 (#6fe430) -D 3 (#0160b1) -L 8 (#1a8570) -D 2 (#2722f3) -L 4 (#2eb860) -D 12 (#572d83) -L 7 (#556c20) -U 12 (#50d5c1) -L 6 (#3a0932) -D 3 (#0a1701) -L 6 (#2294f0) -D 4 (#5f04e1) -L 13 (#62c590) -D 7 (#5f04e3) -R 6 (#1660e0) -D 2 (#34e001) -R 6 (#23b340) -D 12 (#1e92e1) -R 6 (#786d10) -U 12 (#44f8d1) -R 4 (#786d12) -D 3 (#3f6cf1) -R 3 (#2e2812) -D 3 (#185ac3) -R 3 (#7976e2) -D 14 (#0a5201) -R 4 (#15e3e2) -D 3 (#825221) -R 3 (#699e12) -U 3 (#8ca423) -R 14 (#04ffb2) -U 3 (#185ac1) -R 2 (#0a3482) -U 4 (#59d541) -L 10 (#5b8ab2) -U 4 (#59d543) -L 6 (#395af2) -U 3 (#2fdcb1) -R 7 (#1d5670) -U 3 (#3801c1) -R 6 (#65de30) -U 7 (#522db1) -R 11 (#9a9020) -U 12 (#382413) -R 11 (#55b6c0) -U 8 (#382411) -L 4 (#4549e0) -U 7 (#2f1091) -L 7 (#127550) -U 7 (#3e2ee1) -R 7 (#1b7ba0) -U 5 (#0177e1) -L 10 (#581e30) -U 4 (#0177e3) -L 8 (#287b30) -U 5 (#4667a1) -R 6 (#3a6730) -U 6 (#7575e1) -R 6 (#4d8f90) -U 8 (#06a251) -R 2 (#32a980) -U 5 (#92bbf3) -R 3 (#465200) -D 4 (#1e82a3) -R 7 (#5e49b0) -U 4 (#282471) -R 6 (#95ba62) -U 3 (#3fc1e1) -R 3 (#95ba60) -U 9 (#495841) -R 3 (#3bece0) -D 13 (#06a253) -R 3 (#58ed10) -D 4 (#3c4df3) -R 7 (#830800) -D 10 (#3c4df1) -R 4 (#39bca0) -D 4 (#0e26a1) -R 6 (#09cd40) -D 6 (#725971) -R 10 (#624800) -D 11 (#49ae11) -R 11 (#3ed060) -D 7 (#49ae13) -L 12 (#3e0b20) -D 4 (#569191) -L 3 (#1bb070) -D 7 (#0b1803) -L 10 (#045fa0) -U 6 (#8cb0a3) -L 7 (#57ca40) -D 6 (#146f43) -L 9 (#5ad0b0) -D 3 (#22f873) -R 10 (#249e42) -D 5 (#429003) -R 11 (#35bf52) -D 7 (#162bc1) -R 7 (#5689a2) -D 10 (#162bc3) -R 12 (#286a32) -D 9 (#54b443) -R 10 (#505c32) -D 3 (#831903) -R 7 (#003ab0) -D 11 (#6a9af3) -R 10 (#39f710) -U 11 (#1f31b3) -R 5 (#6fc5c0) -D 4 (#071b73) -R 7 (#3fe110) -D 9 (#5fd6e3) -R 9 (#3fd500) -D 3 (#2fc9b3) -R 6 (#727a40) -D 7 (#531d23) -R 14 (#02afc0) -D 6 (#1e5cb1) -R 4 (#717490) -D 12 (#6efba1) -R 11 (#5996f0) -U 5 (#763861) -L 5 (#444cf0) -U 8 (#763863) -R 7 (#2e2c60) -U 7 (#543fa1) -L 7 (#95e230) -U 3 (#543fa3) -R 5 (#41fd20) -U 3 (#19bf61) -R 5 (#656540) -D 7 (#391283) -R 4 (#33ebc0) -D 13 (#391281) -R 9 (#709320) -D 6 (#498291) -R 3 (#03c942) -D 6 (#3391a1) -R 6 (#5a83e2) -D 5 (#4eaff1) -R 7 (#2ca112) -D 4 (#2de1c1) -L 6 (#8724f0) -D 9 (#4b7fc1) -L 5 (#005232) -U 9 (#322291) -L 7 (#6a7682) -D 4 (#5d2381) -L 5 (#6e5312) -U 13 (#5d2383) -L 8 (#4a5e52) -D 13 (#61a5a1) -L 3 (#2adb12) -D 6 (#1056e3) -L 3 (#74eb12) -U 10 (#1056e1) -L 12 (#4c3122) -D 9 (#02d251) -R 9 (#30a702) -D 7 (#7cd9f1) -R 10 (#56a522) -D 6 (#25e4f1) -R 7 (#720682) -D 3 (#11a711) -R 10 (#4810c0) -U 9 (#7233d1) -R 13 (#47d8b0) -D 5 (#222c51) -R 6 (#270630) -U 9 (#6c2991) -R 5 (#251ce0) -D 9 (#0ce373) -R 5 (#0f3af0) -D 4 (#234033) -L 13 (#399410) -D 3 (#1091f3) -L 11 (#12ab92) -D 3 (#2c05c3) -L 9 (#53cc00) -D 5 (#662eb3) -R 3 (#53cc02) -D 3 (#19fbf3) -R 8 (#12ab90) -D 11 (#13a3c3) -R 10 (#6b7ed0) -D 7 (#480071) -L 10 (#39ba10) -D 12 (#414181) -L 11 (#6be3c0) -D 4 (#308403) -L 4 (#5081d2) -U 3 (#4a1c33) -L 6 (#412360) -U 11 (#5cad03) -L 4 (#412362) -U 11 (#1670a3) -L 8 (#5081d0) -U 7 (#36b3f3) -L 8 (#4a86c0) -D 7 (#1903f1) -L 11 (#5aa690) -U 9 (#88cd01) -L 3 (#3843d0) -U 14 (#4c44d1) -L 8 (#92ea62) -D 5 (#205b31) -L 14 (#2d2130) -D 4 (#1600d1) -L 2 (#5eed20) -D 8 (#504601) -L 9 (#4238f2) -D 10 (#8a3821) -L 3 (#524dd2) -D 6 (#8a3823) -L 3 (#106f82) -U 8 (#3d0d81) -L 6 (#1ec032) -U 6 (#040993) -L 4 (#1ff1d2) -D 14 (#17b973) -L 3 (#3c2ae2) -D 7 (#7c2501) -L 7 (#633cd2) -D 4 (#6530d3) -L 3 (#082de2) -D 7 (#16f433) -L 13 (#89eb52) -D 5 (#17b971) -L 3 (#252512) -U 15 (#040991) -L 2 (#90d092) -U 10 (#0a1021) -L 8 (#1cd900) -U 6 (#4a13d1) -R 10 (#7a6bf2) -U 4 (#4683c1) -R 7 (#7a6bf0) -D 11 (#3a66f1) -R 8 (#488f20) -U 11 (#7135a1) -R 5 (#4cc380) -U 5 (#0bf121) -R 3 (#4c2e80) -U 2 (#7908a1) -R 3 (#259e00) -U 10 (#6bafe3) -L 5 (#52e6d0) -U 4 (#506603) -L 6 (#1fec10) -D 7 (#3a1983) -R 6 (#389e30) -D 2 (#2f7281) -L 6 (#55f170) -D 7 (#4cb8e1) -L 5 (#389e30) -U 6 (#2642e1) -L 10 (#7394e0) -U 3 (#642bf1) -R 10 (#7394e2) -U 7 (#132c01) -L 6 (#3c4a80) -D 4 (#3e4d21) -L 4 (#989ad0) -U 7 (#473211) -L 8 (#0aa900) -D 6 (#3a8a11) -L 12 (#4307a2) -D 9 (#13b0c1) -L 6 (#7e59a2) -D 11 (#00a041) -L 3 (#44b0d2) -D 6 (#0efc51) -L 6 (#8a1302) -D 9 (#160fa1) -L 4 (#4afa62) -D 2 (#68e871) -L 14 (#5ecd60) -D 5 (#6a51d1) -L 5 (#764000) -D 8 (#1a6d61) -L 4 (#713042) -D 14 (#0b92e1) -L 5 (#5b77e2) -D 3 (#0a0581) -R 10 (#212752) -D 3 (#0a0583) -R 14 (#3f0ca2) -D 8 (#13d911) -R 3 (#307832) -D 4 (#72d201) -R 6 (#133522) -U 13 (#6e4581) -R 4 (#70fe22) -D 13 (#082221) -R 7 (#44fff2) -D 4 (#731171) -R 3 (#10eda2) -D 9 (#0e5d31) -L 14 (#37bc32) -D 6 (#3852c3) -L 7 (#5f43c2) -U 13 (#8c7593) -L 9 (#2ff4f2) -U 10 (#1787b3) -L 13 (#68b4a2) -U 3 (#15fd23) -L 3 (#515622) -U 3 (#618313) -L 11 (#2d09d2) -U 10 (#6bb2f3) -L 5 (#1f22a2) -U 10 (#4d8e33) -L 6 (#1cb690) -U 3 (#09c3b3) -L 9 (#214c20) -U 9 (#5bfe23) -L 9 (#848910) -U 10 (#1a73e3) -L 10 (#3d9252) -U 3 (#089003) -R 11 (#7ddbb2) -U 8 (#20c473) -R 15 (#071dc2) -U 7 (#554823) -R 13 (#0cfb42) -U 7 (#1ccaa1) -L 15 (#847822) -U 8 (#5f0271) -L 4 (#03cdd2) -U 10 (#4f69b1) -L 3 (#4b1902) -U 8 (#8129b1) -L 4 (#5e69f2) -D 5 (#1f33b3) -L 5 (#2e2582) -D 13 (#67aea3) -L 4 (#54aba2) -U 3 (#08d7a3) -L 4 (#4eebe0) -D 8 (#030763) -L 9 (#2d4760) -D 14 (#79e223) -L 9 (#7c3342) -D 3 (#334c93) -L 4 (#2b0202) -D 9 (#04d053) -L 2 (#1475a2) -D 7 (#8aed93) -L 8 (#62b4f2) -D 5 (#14c931) -R 11 (#29bc82) -D 3 (#65a951) -R 12 (#656f62) -D 3 (#7a7283) -L 8 (#2bec52) -D 7 (#1a75a3) -L 8 (#988402) -D 4 (#1a75a1) -L 3 (#1aad22) -D 9 (#373923) -L 10 (#7e3ef0) -U 7 (#3e1c93) -L 11 (#3f89d0) -U 6 (#3e1c91) -L 3 (#652e40) -D 9 (#35acc3) -L 7 (#5b0fa0) -U 4 (#46ca63) -L 10 (#079fa0) -U 7 (#391523) -L 3 (#079fa2) -U 3 (#585573) -L 8 (#1f43e0) -D 2 (#403c21) -L 9 (#144b10) -D 5 (#8fa921) -L 5 (#144b12) -U 7 (#084fb1) -L 4 (#661600) -D 6 (#5e06f3) -L 13 (#3f87a0) -D 8 (#3ca8a1) -L 13 (#4214e0) -D 10 (#567b51) -R 4 (#7a3080) -D 8 (#17de11) -R 8 (#644090) -D 12 (#55ba83) -R 3 (#025e60) -D 8 (#554783) -R 6 (#0d2eb0) -D 10 (#552813) -L 6 (#61a7d0) -D 10 (#272cb3) -L 7 (#34d6a0) -D 3 (#36cf03) -R 11 (#14be00) -D 3 (#52b543) -R 4 (#1fa362) -D 11 (#713693) -L 3 (#652112) -D 8 (#5c8463) -L 12 (#4c1362) -D 4 (#66e201) -L 8 (#07caa2) -D 9 (#6ccbd1) -L 3 (#3b9ee2) -D 5 (#5798b1) -L 13 (#4fb342) -U 6 (#231223) -L 2 (#33e3b2) -U 5 (#022ea3) -L 6 (#3f1112) -U 6 (#3dde83) -L 6 (#2732a0) -U 8 (#1e6bc3) -L 8 (#10f4e0) -U 15 (#45e363) -L 3 (#10f4e2) -U 4 (#4c9523) -R 11 (#2732a2) -U 12 (#174303) -L 10 (#5b4532) -U 13 (#6195e1) -L 8 (#7fab60) -U 2 (#1e7dd1) -L 2 (#7fab62) -U 12 (#4da741) -L 4 (#09efc2) -D 5 (#3d0d83) -L 5 (#47d532) -U 6 (#1f7441) -L 12 (#558832) -D 6 (#24e093) -L 4 (#20bfc2) -U 6 (#606283) -L 11 (#639142) -U 2 (#854311) -L 5 (#318ff2) -D 8 (#7037c1) -L 12 (#1ee752) -U 5 (#6bad43) -L 5 (#662cd2) -U 6 (#23fec3) -L 6 (#11cec2) -U 9 (#0c5b23) -L 8 (#91c052) -U 3 (#62e783) -L 6 (#08ee02) -U 11 (#11a283) diff --git a/2023/d18/ex2/ex2.py b/2023/d18/ex2/ex2.py deleted file mode 100755 index 8d68781..0000000 --- a/2023/d18/ex2/ex2.py +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from enum import StrEnum -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(StrEnum): - UP = "U" - DOWN = "D" - LEFT = "L" - RIGHT = "R" - - def apply(self, pos: Point, n: int = 1) -> Point: - DIRECTIONS = { - "U": Point(-1, 0), - "D": Point(1, 0), - "L": Point(0, -1), - "R": Point(0, 1), - } - dx, dy = DIRECTIONS[self.value] - return Point(pos.x + dx * n, pos.y + dy * n) - - -DigPlanStep = tuple[Direction, int] -DigPlan = list[DigPlanStep] - - -def solve(input: list[str]) -> int: - def parse_line(line: str) -> DigPlanStep: - _, _, color = line.split() - color = color[2:-1] - n = color[:-1] - dir = { - "0": "R", - "1": "D", - "2": "L", - "3": "U", - }[color[-1]] - return Direction(dir), int(n, base=16) - - def parse(input: list[str]) -> DigPlan: - return list(map(parse_line, input)) - - def dig_trench(plan: DigPlan) -> list[Point]: - points = [Point(0, 0)] - - for direction, n in plan: - points.append(direction.apply(points[-1], n)) - # The trench should loop back to the start, make sure we don't count it twice - if points[-1] == Point(0, 0): - del points[-1] - - return points - - def lagoon_volume(trench: list[Point]) -> int: - def shoelace_area(points: list[Point]) -> int: - # Must be integer because pipes follow the grid, and can't cut squares in half - return abs( - sum( - (points[i - 1].x * points[i].y) - (points[i].x * points[i - 1].y) - for i in range(len(points)) - ) - // 2 - ) - - def perimeter(points: list[Point]) -> int: - res = 0 - - for p, n in itertools.pairwise(itertools.chain(points, [points[0]])): - res += abs(n.x - p.x) + abs(n.y - p.y) - - return res - - area = shoelace_area(trench) - trench_points = perimeter(trench) - interior_points = area - trench_points // 2 + 1 - return interior_points + trench_points - - plan = parse(input) - trench = dig_trench(plan) - return lagoon_volume(list(trench)) - - -def main() -> None: - input = sys.stdin.read().splitlines() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2023/d18/ex2/input b/2023/d18/ex2/input deleted file mode 100644 index 6bee4c1..0000000 --- a/2023/d18/ex2/input +++ /dev/null @@ -1,794 +0,0 @@ -R 4 (#4b18e0) -U 4 (#0b4f93) -R 4 (#6d70b0) -U 12 (#86edc3) -R 4 (#435460) -U 3 (#07f023) -R 8 (#33dd00) -U 5 (#599aa3) -L 11 (#83c702) -U 5 (#3f0501) -L 7 (#4bf232) -U 9 (#3f0503) -L 2 (#4955d2) -U 5 (#24f2e3) -L 9 (#16abf2) -U 6 (#60f753) -L 3 (#678dd2) -U 3 (#736093) -L 3 (#007482) -D 7 (#446e11) -L 6 (#0482a2) -D 8 (#997fd1) -L 4 (#4891e2) -D 6 (#2547b1) -L 5 (#501bf2) -D 8 (#7ed033) -L 8 (#0dabe2) -U 8 (#7184d3) -L 2 (#748a42) -U 5 (#12e093) -L 7 (#672432) -D 7 (#19c6a3) -L 4 (#1c5c22) -D 2 (#6e8a23) -L 10 (#5cd602) -U 9 (#1d8ff3) -L 7 (#359ce2) -U 6 (#333143) -R 11 (#0422f2) -D 10 (#235323) -R 6 (#64bc72) -U 10 (#6ea5f3) -R 11 (#68df60) -U 10 (#0952c3) -L 4 (#5206d2) -U 6 (#09c2a3) -L 5 (#45f7e0) -U 6 (#6d15e3) -L 6 (#271740) -D 6 (#6d15e1) -L 7 (#2e6a20) -U 9 (#178883) -L 9 (#430370) -U 4 (#2ee7e3) -L 7 (#8bdcf0) -D 9 (#5cebd3) -L 3 (#3d5a50) -D 4 (#5ecc23) -L 8 (#095b52) -U 9 (#3b7121) -L 10 (#8061b2) -U 4 (#3b7123) -L 7 (#209272) -U 4 (#493833) -L 9 (#7d9b02) -U 5 (#283633) -L 3 (#0db702) -U 3 (#437d73) -L 14 (#721282) -U 4 (#059a63) -L 2 (#4630d2) -U 5 (#6c5f43) -L 13 (#2949c2) -U 3 (#590a93) -R 5 (#4f5650) -U 5 (#71c3e3) -L 8 (#308540) -D 15 (#4fbc53) -L 2 (#4fa760) -U 15 (#41d523) -L 8 (#6bd380) -U 6 (#5cb553) -R 6 (#76acc0) -U 10 (#6be3a3) -R 6 (#5d61b0) -D 10 (#6dd101) -R 4 (#04f600) -U 4 (#4ea101) -R 2 (#6c2630) -U 5 (#498ac1) -R 5 (#0667a0) -U 5 (#120ef3) -R 3 (#31c080) -U 5 (#861cd3) -R 11 (#364e90) -D 5 (#6dd103) -R 9 (#6fe5b0) -D 11 (#119d43) -R 6 (#111310) -D 14 (#2ff323) -R 7 (#177432) -U 12 (#0ccbd3) -R 2 (#77c592) -U 9 (#6eee43) -R 10 (#21e622) -U 8 (#0bc513) -L 8 (#5398a0) -U 2 (#53cca3) -L 10 (#463c20) -U 5 (#53cca1) -R 8 (#174b20) -U 11 (#09ddc3) -R 6 (#20c940) -U 11 (#2fc6c3) -R 8 (#7ab1b0) -U 6 (#7ab291) -R 3 (#057160) -U 6 (#008331) -R 11 (#62c440) -U 12 (#3233a1) -R 2 (#1ceaa0) -U 4 (#4ef663) -R 3 (#7e5670) -U 2 (#4ef661) -R 5 (#3ccc40) -U 8 (#6e3531) -L 13 (#3964a0) -U 5 (#68b801) -R 13 (#83d220) -U 5 (#459901) -R 2 (#053a70) -U 6 (#4d18d3) -R 11 (#8a23d0) -U 8 (#4d18d1) -R 9 (#2cce90) -D 14 (#48af61) -L 6 (#045500) -D 6 (#0b4971) -L 8 (#18fa70) -D 7 (#7d8d03) -L 3 (#6ba530) -D 9 (#061783) -R 9 (#2c9c30) -D 13 (#402993) -R 8 (#18e9c0) -D 7 (#51e7a3) -R 15 (#18e9c2) -D 3 (#0ae133) -R 5 (#4929f0) -D 3 (#8d4623) -R 4 (#277680) -U 11 (#034583) -R 7 (#1ea1a0) -D 11 (#6cc5e3) -R 8 (#8894e0) -U 5 (#2fc6c1) -R 6 (#4dd6d0) -U 3 (#7f5b21) -R 11 (#219440) -U 4 (#2db8a1) -R 6 (#4053a0) -U 6 (#2df7e1) -R 12 (#086710) -U 8 (#47c7c1) -R 4 (#41ee90) -U 3 (#1dfa61) -R 3 (#5c3610) -U 7 (#483023) -R 10 (#2b6060) -D 3 (#327133) -R 8 (#2e4b30) -D 14 (#212321) -R 8 (#4bfd00) -D 5 (#5f0b81) -R 4 (#718450) -D 14 (#320dd1) -R 5 (#103630) -D 6 (#911953) -R 4 (#3f6190) -D 7 (#212323) -L 4 (#7f84b0) -D 10 (#2816a1) -R 5 (#026f80) -D 2 (#528ab1) -R 8 (#04e160) -D 11 (#655ca3) -R 2 (#0a1bf0) -D 3 (#6872c3) -R 12 (#7ad510) -D 8 (#72fe63) -R 7 (#109a50) -D 9 (#66ae31) -R 3 (#0828a2) -D 12 (#039eb1) -R 8 (#6f2c60) -D 6 (#46dae1) -R 12 (#76c900) -D 8 (#724711) -L 10 (#0a41a0) -D 8 (#73f301) -L 2 (#029092) -D 5 (#2ee5b3) -R 9 (#794702) -U 9 (#2ee5b1) -R 9 (#745f72) -U 2 (#108e61) -R 4 (#30e792) -U 10 (#099281) -R 11 (#347f32) -U 4 (#319ab1) -L 5 (#44a712) -U 9 (#623681) -L 6 (#3b5002) -U 10 (#25e431) -R 6 (#4f3f22) -U 4 (#226f51) -R 5 (#26f7b2) -U 8 (#588341) -R 4 (#09de02) -D 11 (#423f21) -L 6 (#6c9ee2) -D 10 (#423f23) -R 6 (#3badf2) -D 4 (#2c0a93) -R 4 (#521a32) -U 7 (#4ee803) -R 15 (#47f6d2) -U 2 (#673651) -R 4 (#5c10b2) -U 9 (#4dc641) -L 11 (#4d7032) -U 6 (#299111) -L 8 (#8d06b2) -U 8 (#22e4d1) -L 7 (#7dac02) -U 4 (#58e171) -L 7 (#17e332) -D 12 (#211931) -L 4 (#7e1732) -D 5 (#502911) -L 4 (#88c6c2) -D 5 (#430ba1) -L 3 (#3e4de0) -D 13 (#481b11) -L 5 (#5925e0) -U 4 (#1cecb1) -L 7 (#11ecf0) -U 7 (#634bc1) -R 7 (#6218d2) -U 7 (#7990f3) -L 5 (#576b42) -U 4 (#7990f1) -L 10 (#145832) -U 9 (#609ef1) -L 3 (#0d8822) -U 4 (#2b1f83) -L 3 (#77a562) -U 5 (#2b1f81) -L 6 (#3d05c2) -U 7 (#4b56d1) -L 5 (#1f6272) -U 8 (#916891) -R 6 (#087ce0) -U 6 (#2cf203) -R 12 (#285e60) -U 9 (#6ae623) -R 9 (#8a34a0) -U 9 (#6ae621) -L 9 (#15b200) -U 11 (#40c541) -R 5 (#0c7fc0) -D 7 (#2d5ad3) -R 9 (#42f280) -D 7 (#8140a3) -R 3 (#255770) -D 10 (#8140a1) -R 12 (#4ac260) -D 5 (#2d5ad1) -R 8 (#083780) -U 15 (#40c543) -R 7 (#028ab0) -U 13 (#2cf201) -R 5 (#1461d0) -U 2 (#23bff1) -R 4 (#1a4992) -U 3 (#355fc1) -R 7 (#6cafd2) -U 5 (#355fc3) -R 6 (#226752) -D 6 (#5af021) -R 11 (#526e82) -D 6 (#055ac1) -R 4 (#460a42) -D 3 (#055ac3) -R 6 (#565542) -D 3 (#3cd6a1) -L 7 (#2da922) -D 10 (#708ea3) -R 7 (#687472) -D 4 (#4ec333) -R 4 (#58d602) -U 7 (#4dd3e3) -R 3 (#23a7c0) -U 10 (#51fa83) -R 5 (#23a7c2) -D 5 (#188363) -R 14 (#5bc432) -U 4 (#3f0d23) -R 8 (#27a940) -U 3 (#62a3a3) -R 10 (#27a942) -U 6 (#0ceab3) -R 2 (#4479c2) -U 12 (#8beb63) -L 2 (#0b84a2) -U 3 (#3aa313) -L 7 (#270672) -U 15 (#4bd563) -L 5 (#4d8072) -U 6 (#045183) -R 12 (#08fed2) -U 11 (#52d323) -R 2 (#050992) -U 9 (#618533) -R 4 (#17a282) -D 7 (#08e921) -R 3 (#1a0d22) -D 6 (#0e8541) -R 11 (#61b232) -D 7 (#6635f1) -R 5 (#617832) -D 5 (#08f4f3) -R 2 (#490c22) -D 3 (#234821) -R 3 (#476942) -D 12 (#234823) -R 11 (#31b6d2) -D 4 (#08f4f1) -L 6 (#129582) -D 6 (#507ed1) -R 6 (#1e7010) -D 8 (#5490e1) -R 10 (#093bb0) -D 4 (#7cefc1) -R 9 (#6fe430) -D 3 (#0160b1) -L 8 (#1a8570) -D 2 (#2722f3) -L 4 (#2eb860) -D 12 (#572d83) -L 7 (#556c20) -U 12 (#50d5c1) -L 6 (#3a0932) -D 3 (#0a1701) -L 6 (#2294f0) -D 4 (#5f04e1) -L 13 (#62c590) -D 7 (#5f04e3) -R 6 (#1660e0) -D 2 (#34e001) -R 6 (#23b340) -D 12 (#1e92e1) -R 6 (#786d10) -U 12 (#44f8d1) -R 4 (#786d12) -D 3 (#3f6cf1) -R 3 (#2e2812) -D 3 (#185ac3) -R 3 (#7976e2) -D 14 (#0a5201) -R 4 (#15e3e2) -D 3 (#825221) -R 3 (#699e12) -U 3 (#8ca423) -R 14 (#04ffb2) -U 3 (#185ac1) -R 2 (#0a3482) -U 4 (#59d541) -L 10 (#5b8ab2) -U 4 (#59d543) -L 6 (#395af2) -U 3 (#2fdcb1) -R 7 (#1d5670) -U 3 (#3801c1) -R 6 (#65de30) -U 7 (#522db1) -R 11 (#9a9020) -U 12 (#382413) -R 11 (#55b6c0) -U 8 (#382411) -L 4 (#4549e0) -U 7 (#2f1091) -L 7 (#127550) -U 7 (#3e2ee1) -R 7 (#1b7ba0) -U 5 (#0177e1) -L 10 (#581e30) -U 4 (#0177e3) -L 8 (#287b30) -U 5 (#4667a1) -R 6 (#3a6730) -U 6 (#7575e1) -R 6 (#4d8f90) -U 8 (#06a251) -R 2 (#32a980) -U 5 (#92bbf3) -R 3 (#465200) -D 4 (#1e82a3) -R 7 (#5e49b0) -U 4 (#282471) -R 6 (#95ba62) -U 3 (#3fc1e1) -R 3 (#95ba60) -U 9 (#495841) -R 3 (#3bece0) -D 13 (#06a253) -R 3 (#58ed10) -D 4 (#3c4df3) -R 7 (#830800) -D 10 (#3c4df1) -R 4 (#39bca0) -D 4 (#0e26a1) -R 6 (#09cd40) -D 6 (#725971) -R 10 (#624800) -D 11 (#49ae11) -R 11 (#3ed060) -D 7 (#49ae13) -L 12 (#3e0b20) -D 4 (#569191) -L 3 (#1bb070) -D 7 (#0b1803) -L 10 (#045fa0) -U 6 (#8cb0a3) -L 7 (#57ca40) -D 6 (#146f43) -L 9 (#5ad0b0) -D 3 (#22f873) -R 10 (#249e42) -D 5 (#429003) -R 11 (#35bf52) -D 7 (#162bc1) -R 7 (#5689a2) -D 10 (#162bc3) -R 12 (#286a32) -D 9 (#54b443) -R 10 (#505c32) -D 3 (#831903) -R 7 (#003ab0) -D 11 (#6a9af3) -R 10 (#39f710) -U 11 (#1f31b3) -R 5 (#6fc5c0) -D 4 (#071b73) -R 7 (#3fe110) -D 9 (#5fd6e3) -R 9 (#3fd500) -D 3 (#2fc9b3) -R 6 (#727a40) -D 7 (#531d23) -R 14 (#02afc0) -D 6 (#1e5cb1) -R 4 (#717490) -D 12 (#6efba1) -R 11 (#5996f0) -U 5 (#763861) -L 5 (#444cf0) -U 8 (#763863) -R 7 (#2e2c60) -U 7 (#543fa1) -L 7 (#95e230) -U 3 (#543fa3) -R 5 (#41fd20) -U 3 (#19bf61) -R 5 (#656540) -D 7 (#391283) -R 4 (#33ebc0) -D 13 (#391281) -R 9 (#709320) -D 6 (#498291) -R 3 (#03c942) -D 6 (#3391a1) -R 6 (#5a83e2) -D 5 (#4eaff1) -R 7 (#2ca112) -D 4 (#2de1c1) -L 6 (#8724f0) -D 9 (#4b7fc1) -L 5 (#005232) -U 9 (#322291) -L 7 (#6a7682) -D 4 (#5d2381) -L 5 (#6e5312) -U 13 (#5d2383) -L 8 (#4a5e52) -D 13 (#61a5a1) -L 3 (#2adb12) -D 6 (#1056e3) -L 3 (#74eb12) -U 10 (#1056e1) -L 12 (#4c3122) -D 9 (#02d251) -R 9 (#30a702) -D 7 (#7cd9f1) -R 10 (#56a522) -D 6 (#25e4f1) -R 7 (#720682) -D 3 (#11a711) -R 10 (#4810c0) -U 9 (#7233d1) -R 13 (#47d8b0) -D 5 (#222c51) -R 6 (#270630) -U 9 (#6c2991) -R 5 (#251ce0) -D 9 (#0ce373) -R 5 (#0f3af0) -D 4 (#234033) -L 13 (#399410) -D 3 (#1091f3) -L 11 (#12ab92) -D 3 (#2c05c3) -L 9 (#53cc00) -D 5 (#662eb3) -R 3 (#53cc02) -D 3 (#19fbf3) -R 8 (#12ab90) -D 11 (#13a3c3) -R 10 (#6b7ed0) -D 7 (#480071) -L 10 (#39ba10) -D 12 (#414181) -L 11 (#6be3c0) -D 4 (#308403) -L 4 (#5081d2) -U 3 (#4a1c33) -L 6 (#412360) -U 11 (#5cad03) -L 4 (#412362) -U 11 (#1670a3) -L 8 (#5081d0) -U 7 (#36b3f3) -L 8 (#4a86c0) -D 7 (#1903f1) -L 11 (#5aa690) -U 9 (#88cd01) -L 3 (#3843d0) -U 14 (#4c44d1) -L 8 (#92ea62) -D 5 (#205b31) -L 14 (#2d2130) -D 4 (#1600d1) -L 2 (#5eed20) -D 8 (#504601) -L 9 (#4238f2) -D 10 (#8a3821) -L 3 (#524dd2) -D 6 (#8a3823) -L 3 (#106f82) -U 8 (#3d0d81) -L 6 (#1ec032) -U 6 (#040993) -L 4 (#1ff1d2) -D 14 (#17b973) -L 3 (#3c2ae2) -D 7 (#7c2501) -L 7 (#633cd2) -D 4 (#6530d3) -L 3 (#082de2) -D 7 (#16f433) -L 13 (#89eb52) -D 5 (#17b971) -L 3 (#252512) -U 15 (#040991) -L 2 (#90d092) -U 10 (#0a1021) -L 8 (#1cd900) -U 6 (#4a13d1) -R 10 (#7a6bf2) -U 4 (#4683c1) -R 7 (#7a6bf0) -D 11 (#3a66f1) -R 8 (#488f20) -U 11 (#7135a1) -R 5 (#4cc380) -U 5 (#0bf121) -R 3 (#4c2e80) -U 2 (#7908a1) -R 3 (#259e00) -U 10 (#6bafe3) -L 5 (#52e6d0) -U 4 (#506603) -L 6 (#1fec10) -D 7 (#3a1983) -R 6 (#389e30) -D 2 (#2f7281) -L 6 (#55f170) -D 7 (#4cb8e1) -L 5 (#389e30) -U 6 (#2642e1) -L 10 (#7394e0) -U 3 (#642bf1) -R 10 (#7394e2) -U 7 (#132c01) -L 6 (#3c4a80) -D 4 (#3e4d21) -L 4 (#989ad0) -U 7 (#473211) -L 8 (#0aa900) -D 6 (#3a8a11) -L 12 (#4307a2) -D 9 (#13b0c1) -L 6 (#7e59a2) -D 11 (#00a041) -L 3 (#44b0d2) -D 6 (#0efc51) -L 6 (#8a1302) -D 9 (#160fa1) -L 4 (#4afa62) -D 2 (#68e871) -L 14 (#5ecd60) -D 5 (#6a51d1) -L 5 (#764000) -D 8 (#1a6d61) -L 4 (#713042) -D 14 (#0b92e1) -L 5 (#5b77e2) -D 3 (#0a0581) -R 10 (#212752) -D 3 (#0a0583) -R 14 (#3f0ca2) -D 8 (#13d911) -R 3 (#307832) -D 4 (#72d201) -R 6 (#133522) -U 13 (#6e4581) -R 4 (#70fe22) -D 13 (#082221) -R 7 (#44fff2) -D 4 (#731171) -R 3 (#10eda2) -D 9 (#0e5d31) -L 14 (#37bc32) -D 6 (#3852c3) -L 7 (#5f43c2) -U 13 (#8c7593) -L 9 (#2ff4f2) -U 10 (#1787b3) -L 13 (#68b4a2) -U 3 (#15fd23) -L 3 (#515622) -U 3 (#618313) -L 11 (#2d09d2) -U 10 (#6bb2f3) -L 5 (#1f22a2) -U 10 (#4d8e33) -L 6 (#1cb690) -U 3 (#09c3b3) -L 9 (#214c20) -U 9 (#5bfe23) -L 9 (#848910) -U 10 (#1a73e3) -L 10 (#3d9252) -U 3 (#089003) -R 11 (#7ddbb2) -U 8 (#20c473) -R 15 (#071dc2) -U 7 (#554823) -R 13 (#0cfb42) -U 7 (#1ccaa1) -L 15 (#847822) -U 8 (#5f0271) -L 4 (#03cdd2) -U 10 (#4f69b1) -L 3 (#4b1902) -U 8 (#8129b1) -L 4 (#5e69f2) -D 5 (#1f33b3) -L 5 (#2e2582) -D 13 (#67aea3) -L 4 (#54aba2) -U 3 (#08d7a3) -L 4 (#4eebe0) -D 8 (#030763) -L 9 (#2d4760) -D 14 (#79e223) -L 9 (#7c3342) -D 3 (#334c93) -L 4 (#2b0202) -D 9 (#04d053) -L 2 (#1475a2) -D 7 (#8aed93) -L 8 (#62b4f2) -D 5 (#14c931) -R 11 (#29bc82) -D 3 (#65a951) -R 12 (#656f62) -D 3 (#7a7283) -L 8 (#2bec52) -D 7 (#1a75a3) -L 8 (#988402) -D 4 (#1a75a1) -L 3 (#1aad22) -D 9 (#373923) -L 10 (#7e3ef0) -U 7 (#3e1c93) -L 11 (#3f89d0) -U 6 (#3e1c91) -L 3 (#652e40) -D 9 (#35acc3) -L 7 (#5b0fa0) -U 4 (#46ca63) -L 10 (#079fa0) -U 7 (#391523) -L 3 (#079fa2) -U 3 (#585573) -L 8 (#1f43e0) -D 2 (#403c21) -L 9 (#144b10) -D 5 (#8fa921) -L 5 (#144b12) -U 7 (#084fb1) -L 4 (#661600) -D 6 (#5e06f3) -L 13 (#3f87a0) -D 8 (#3ca8a1) -L 13 (#4214e0) -D 10 (#567b51) -R 4 (#7a3080) -D 8 (#17de11) -R 8 (#644090) -D 12 (#55ba83) -R 3 (#025e60) -D 8 (#554783) -R 6 (#0d2eb0) -D 10 (#552813) -L 6 (#61a7d0) -D 10 (#272cb3) -L 7 (#34d6a0) -D 3 (#36cf03) -R 11 (#14be00) -D 3 (#52b543) -R 4 (#1fa362) -D 11 (#713693) -L 3 (#652112) -D 8 (#5c8463) -L 12 (#4c1362) -D 4 (#66e201) -L 8 (#07caa2) -D 9 (#6ccbd1) -L 3 (#3b9ee2) -D 5 (#5798b1) -L 13 (#4fb342) -U 6 (#231223) -L 2 (#33e3b2) -U 5 (#022ea3) -L 6 (#3f1112) -U 6 (#3dde83) -L 6 (#2732a0) -U 8 (#1e6bc3) -L 8 (#10f4e0) -U 15 (#45e363) -L 3 (#10f4e2) -U 4 (#4c9523) -R 11 (#2732a2) -U 12 (#174303) -L 10 (#5b4532) -U 13 (#6195e1) -L 8 (#7fab60) -U 2 (#1e7dd1) -L 2 (#7fab62) -U 12 (#4da741) -L 4 (#09efc2) -D 5 (#3d0d83) -L 5 (#47d532) -U 6 (#1f7441) -L 12 (#558832) -D 6 (#24e093) -L 4 (#20bfc2) -U 6 (#606283) -L 11 (#639142) -U 2 (#854311) -L 5 (#318ff2) -D 8 (#7037c1) -L 12 (#1ee752) -U 5 (#6bad43) -L 5 (#662cd2) -U 6 (#23fec3) -L 6 (#11cec2) -U 9 (#0c5b23) -L 8 (#91c052) -U 3 (#62e783) -L 6 (#08ee02) -U 11 (#11a283)