diff --git a/day18/input b/day18/input new file mode 100644 index 0000000..48a2458 --- /dev/null +++ b/day18/input @@ -0,0 +1,618 @@ +L 7 (#357ea0) +U 2 (#931393) +L 4 (#3a7350) +U 10 (#02c563) +L 4 (#81f110) +U 5 (#74d543) +L 9 (#256002) +U 6 (#708cf3) +L 4 (#4c90e0) +U 8 (#0ac253) +L 8 (#4c90e2) +U 5 (#693483) +R 6 (#256000) +U 6 (#27cc33) +R 8 (#3bf170) +U 3 (#376663) +L 4 (#035da0) +U 6 (#045753) +L 10 (#826390) +U 4 (#7a8c43) +L 10 (#271b30) +U 10 (#6d21f3) +L 10 (#4a97c2) +D 2 (#641f33) +L 6 (#8468c2) +D 3 (#4316e3) +R 10 (#2dc6b2) +D 11 (#5776a3) +R 7 (#6319d0) +D 7 (#6573e3) +L 11 (#7e0de0) +D 6 (#7d1f63) +L 6 (#4c51e2) +D 5 (#5de033) +L 5 (#59cb30) +U 11 (#2bb943) +L 3 (#434650) +U 6 (#2bb941) +L 8 (#20d440) +U 6 (#3c4843) +L 4 (#535852) +D 6 (#818223) +L 7 (#144d02) +U 4 (#818221) +L 3 (#564072) +U 5 (#2e7f43) +L 12 (#4c51e0) +U 9 (#3b61d3) +L 9 (#14d352) +U 4 (#727ac3) +L 7 (#2f39c2) +U 7 (#0516d3) +L 4 (#9d1aa2) +U 4 (#22d7e3) +R 9 (#321810) +U 6 (#740ad3) +R 5 (#4cfb40) +D 7 (#740ad1) +R 8 (#38f8c0) +D 11 (#1f22e3) +R 4 (#0e5630) +U 18 (#62bcb3) +R 3 (#292920) +D 6 (#7b6263) +R 3 (#0d3bd0) +U 9 (#82c2b3) +L 8 (#426530) +U 13 (#40cf11) +L 2 (#2ca6c0) +U 4 (#577ac1) +L 6 (#1ec6a0) +U 3 (#247691) +L 10 (#69b330) +U 6 (#3db1f3) +L 5 (#357750) +U 5 (#adbae3) +L 13 (#508510) +D 8 (#0ebc21) +L 2 (#11ae92) +D 4 (#8e3c61) +L 12 (#11ae90) +U 9 (#4e7451) +L 8 (#11ac20) +U 3 (#633511) +L 3 (#1091b2) +U 16 (#5b17e1) +R 3 (#25f402) +U 4 (#50ed21) +R 13 (#50e172) +U 8 (#ac0503) +R 13 (#5ca752) +U 9 (#119051) +R 4 (#012c32) +U 8 (#aabdf1) +R 2 (#678e72) +U 5 (#46f071) +R 7 (#890120) +U 4 (#0c2131) +R 7 (#62ffe0) +U 10 (#08cdc1) +R 7 (#0927c0) +D 14 (#880c31) +R 7 (#0927c2) +U 9 (#4043a1) +R 3 (#533660) +U 4 (#314eb3) +R 5 (#89f670) +D 7 (#59a0f3) +R 11 (#41cfc0) +D 9 (#20c953) +L 8 (#83fc42) +D 9 (#798a53) +L 2 (#83fc40) +D 11 (#2f7c73) +R 10 (#5a7880) +D 4 (#72f003) +R 4 (#184650) +D 3 (#1146d1) +R 5 (#5ce420) +D 4 (#915c31) +R 11 (#257a20) +U 5 (#78faf3) +R 13 (#595510) +U 8 (#29a813) +R 3 (#050b70) +U 8 (#1bcac3) +R 12 (#53c3a0) +U 3 (#752613) +R 10 (#282602) +U 7 (#6d5a53) +R 6 (#6266d2) +U 6 (#0ff141) +R 8 (#40f1e2) +U 6 (#0ff143) +R 7 (#814a02) +U 9 (#22a8b3) +R 2 (#469720) +U 2 (#358e33) +R 12 (#9d5ce0) +D 5 (#358e31) +R 3 (#2cb960) +D 3 (#17cf63) +L 4 (#a20580) +D 4 (#29c2e1) +L 10 (#9c87f0) +D 5 (#3cd241) +R 8 (#4c6400) +D 2 (#3aca21) +R 2 (#661a10) +D 9 (#997e51) +L 3 (#661a12) +D 4 (#4c65e1) +L 7 (#82e570) +D 4 (#72e2a1) +R 14 (#369ab0) +D 3 (#256c01) +R 7 (#7449e0) +D 7 (#582f41) +R 8 (#820b42) +U 5 (#212c51) +R 7 (#30a812) +U 6 (#8bd2f1) +L 5 (#8e4622) +U 12 (#016441) +L 6 (#030532) +U 9 (#7ffcc1) +L 4 (#362f62) +U 4 (#41b291) +R 10 (#77ccb0) +U 7 (#3e3811) +R 5 (#52abd0) +U 3 (#3e3813) +R 13 (#30e6c0) +U 6 (#2763d3) +R 13 (#468d70) +U 9 (#2763d1) +R 4 (#490740) +U 5 (#16c7b1) +R 13 (#0698c0) +U 3 (#3092a1) +L 6 (#34dc72) +U 5 (#6eedb1) +L 4 (#34dc70) +U 5 (#3bb131) +L 13 (#60d040) +U 3 (#502ad1) +L 3 (#42e190) +U 16 (#1550a1) +L 5 (#9144e0) +U 5 (#0e1761) +L 9 (#0740d2) +U 7 (#4ff951) +L 8 (#2ca952) +U 7 (#309051) +L 3 (#a03c52) +U 12 (#05c2d1) +L 3 (#800432) +U 8 (#3dce71) +L 5 (#192882) +U 9 (#4c2d43) +L 5 (#419c22) +U 5 (#b1aaf3) +L 4 (#66bec2) +U 6 (#24f6a3) +L 7 (#2d7eb2) +U 10 (#5c6651) +L 6 (#167982) +D 6 (#5e9201) +L 7 (#167980) +D 10 (#1ba941) +L 6 (#1887a2) +D 4 (#4c2d41) +R 12 (#465332) +D 7 (#4f4261) +L 5 (#18f3b2) +D 14 (#3a0001) +R 5 (#18f3b0) +D 5 (#477441) +R 11 (#03f1b0) +D 7 (#66e581) +L 6 (#09d890) +D 8 (#3db093) +L 9 (#252580) +D 7 (#1b8853) +L 3 (#963ea0) +D 6 (#1b8851) +L 5 (#132d70) +D 8 (#3db091) +L 8 (#0f6be0) +D 6 (#66e583) +L 5 (#5e59d0) +U 10 (#1fe881) +R 4 (#4b8912) +U 10 (#7eb3c1) +L 7 (#4b8910) +D 8 (#166151) +L 7 (#49db70) +U 8 (#02a761) +L 10 (#39e420) +U 3 (#492dd1) +R 6 (#48e850) +U 5 (#703fb1) +R 16 (#4c6b72) +U 3 (#10fdd1) +R 2 (#359bc2) +U 3 (#a2b691) +L 4 (#3c6712) +U 3 (#0613b1) +L 11 (#53dde2) +U 11 (#662e11) +L 10 (#7164d2) +U 3 (#3af111) +R 4 (#3a2be2) +U 3 (#040021) +R 3 (#0da842) +U 3 (#b32a51) +R 4 (#52af42) +U 15 (#035bb1) +R 6 (#0d6b52) +U 5 (#261bd1) +R 5 (#7314e0) +U 3 (#50ed33) +L 13 (#526630) +U 5 (#704043) +L 9 (#3f1350) +U 7 (#0c7273) +R 5 (#493b90) +U 2 (#30c193) +R 9 (#33ba10) +U 7 (#75b9c3) +R 7 (#0c2ef0) +U 8 (#042593) +R 10 (#5b3cc0) +U 10 (#66b891) +R 8 (#33d8e0) +U 5 (#43e851) +R 3 (#30ca70) +U 2 (#099de1) +R 8 (#54ef50) +U 5 (#4adfa1) +R 5 (#87a9b2) +U 6 (#765601) +R 2 (#87a9b0) +U 8 (#02cc61) +L 14 (#063ef0) +U 6 (#242451) +R 5 (#04c3f0) +U 3 (#2622d1) +R 11 (#770830) +U 9 (#64cd61) +R 8 (#3f7700) +U 3 (#97bc41) +L 14 (#4328a0) +U 6 (#1d3ed1) +L 10 (#3f5090) +U 10 (#549f11) +R 5 (#401c12) +U 9 (#1db141) +R 9 (#3ab0c2) +U 6 (#027201) +R 12 (#8398b2) +U 2 (#5e76d1) +R 6 (#6b9210) +D 6 (#59c901) +R 9 (#6b9212) +D 5 (#23be31) +R 5 (#170352) +D 6 (#6404d1) +R 12 (#4577e0) +D 7 (#a84041) +L 14 (#4a3910) +D 4 (#528a21) +L 4 (#459bd0) +D 8 (#5c3d21) +L 4 (#6efdb2) +D 6 (#20a931) +R 3 (#15cd22) +D 7 (#7c9c13) +R 6 (#7e8af2) +D 6 (#2b0663) +R 7 (#304942) +D 3 (#277bb3) +R 6 (#2ade02) +D 3 (#b2ff33) +R 13 (#2524b2) +D 3 (#1cc843) +R 4 (#6c16c2) +D 3 (#876163) +R 3 (#436032) +D 8 (#6520e1) +R 2 (#1c69d2) +D 15 (#a123d1) +R 5 (#1c69d0) +U 6 (#785fd1) +R 3 (#18e722) +D 11 (#a7a271) +R 7 (#04d402) +D 3 (#20a933) +R 10 (#83d842) +D 5 (#89d7b1) +R 4 (#672c02) +D 10 (#394b21) +R 5 (#520a32) +D 4 (#5b1951) +R 8 (#187f52) +D 3 (#471901) +R 7 (#2d9542) +D 13 (#b049b1) +R 3 (#526ba2) +D 9 (#6445d3) +R 5 (#7ddda2) +D 2 (#6445d1) +R 17 (#8f7f92) +D 3 (#824f13) +R 9 (#29ec62) +D 4 (#31cb73) +R 8 (#53c0a2) +D 7 (#1b1321) +L 6 (#6183d2) +D 3 (#4e9f01) +L 3 (#6582e2) +D 13 (#484c11) +R 9 (#0683e0) +D 8 (#8186e1) +L 7 (#7c7340) +D 7 (#8186e3) +L 4 (#440f90) +D 8 (#1ba571) +L 7 (#267130) +D 6 (#288601) +L 3 (#6c3dc0) +U 8 (#36ceb1) +L 2 (#03b370) +U 10 (#27e7d1) +L 3 (#4ecfd0) +U 6 (#840633) +L 6 (#281d50) +U 4 (#840631) +L 8 (#70c000) +D 11 (#27e7d3) +L 8 (#506fe0) +D 2 (#36ceb3) +L 7 (#549e70) +D 4 (#3855e1) +R 7 (#826de2) +D 4 (#459461) +R 8 (#1b5db2) +D 7 (#588f91) +L 8 (#97c742) +D 4 (#72fbf1) +L 5 (#5ea652) +D 5 (#565203) +L 13 (#4d0d22) +D 9 (#753983) +R 13 (#40f5b2) +D 5 (#459463) +L 4 (#00e1e2) +D 3 (#054db1) +R 7 (#1109b2) +D 3 (#51ac81) +R 6 (#786302) +D 5 (#1d4111) +R 11 (#384d62) +D 8 (#0abf31) +R 3 (#9e4960) +D 2 (#56d781) +R 5 (#2370b0) +U 15 (#1e2401) +R 5 (#015242) +D 2 (#09c081) +R 10 (#068442) +D 6 (#8b50f1) +R 2 (#74fa32) +D 6 (#8b50f3) +R 3 (#5c62e2) +D 9 (#4e15b1) +R 9 (#882932) +D 11 (#5207a3) +R 6 (#858b62) +D 6 (#87cd73) +R 4 (#389ac2) +D 8 (#0093b3) +R 6 (#2c2582) +D 6 (#483b71) +R 4 (#967a82) +D 11 (#483b73) +R 8 (#139412) +D 3 (#43d833) +R 3 (#39ce82) +D 12 (#1b3e53) +R 10 (#70ef10) +D 4 (#2cb373) +L 13 (#32fb60) +D 3 (#5239e3) +L 13 (#98c7d2) +D 4 (#323a43) +L 13 (#0b22a2) +D 8 (#2ce053) +L 7 (#7696e2) +D 7 (#505353) +L 8 (#b06560) +D 11 (#127133) +R 3 (#0a2af2) +D 10 (#7fcd23) +R 11 (#646af2) +D 9 (#19db13) +R 3 (#1facf2) +D 4 (#278353) +R 9 (#7da710) +D 12 (#97eec3) +R 3 (#324190) +D 7 (#0d7793) +R 4 (#afe8a2) +D 10 (#5c84d3) +R 5 (#812562) +D 4 (#2d50f3) +L 16 (#b1f652) +D 3 (#051f51) +L 6 (#47f1c2) +D 10 (#9968d1) +L 2 (#64a0a2) +D 6 (#9968d3) +L 6 (#6b9ae2) +D 2 (#6972b3) +L 8 (#319422) +D 6 (#a5c243) +L 6 (#1572e0) +D 5 (#a2e233) +R 13 (#1572e2) +D 8 (#0f0be3) +R 7 (#5c79c2) +D 3 (#2ebab1) +R 3 (#431082) +D 10 (#090461) +R 5 (#222c82) +D 9 (#4e4681) +L 4 (#732d30) +U 6 (#678f01) +L 5 (#387c20) +U 9 (#71c291) +L 7 (#aba952) +D 11 (#059f41) +L 4 (#222c80) +D 4 (#3944a1) +L 8 (#431080) +D 7 (#22e801) +R 6 (#03da22) +D 4 (#264601) +L 6 (#5eb852) +D 7 (#2cb323) +L 13 (#1d2bd2) +D 2 (#2cb321) +L 3 (#5b2ef2) +U 9 (#264603) +L 2 (#16f302) +U 6 (#051f53) +L 9 (#4bd602) +U 4 (#385d93) +L 9 (#736600) +U 6 (#38ebf3) +L 13 (#41dc90) +U 5 (#073e13) +L 6 (#031ff0) +U 11 (#784b53) +L 5 (#50b290) +U 7 (#3e8d53) +L 8 (#50b292) +U 5 (#752f43) +L 15 (#4583e0) +U 5 (#7dbe13) +L 3 (#8db280) +U 4 (#4212a1) +L 12 (#a4bbf0) +U 3 (#66d011) +L 5 (#336120) +U 4 (#479a81) +R 6 (#78af90) +U 4 (#352181) +R 5 (#78af92) +U 10 (#421b01) +R 5 (#4143e0) +U 4 (#494a51) +R 13 (#57dea0) +U 9 (#312a23) +R 12 (#894440) +U 6 (#312a21) +R 5 (#4e2a70) +U 4 (#61a223) +R 3 (#1c5820) +U 7 (#146ba1) +R 5 (#4da250) +U 3 (#146ba3) +R 10 (#555d30) +U 2 (#52e6c3) +R 3 (#078620) +U 12 (#23ce33) +L 10 (#15b752) +U 5 (#3447b1) +L 8 (#656962) +U 9 (#3447b3) +L 3 (#65f2b2) +D 14 (#05c0d3) +L 4 (#20fb32) +U 10 (#23fea3) +L 11 (#6fb332) +U 9 (#3eac33) +L 7 (#00ea52) +D 13 (#8b56d3) +L 2 (#115f30) +D 7 (#365993) +L 2 (#167ef0) +D 3 (#3a33e3) +L 2 (#1e9ef0) +D 7 (#755883) +L 5 (#6e64b0) +D 5 (#6b9661) +L 6 (#76e2b0) +U 3 (#43f601) +L 5 (#46e7a0) +U 7 (#5c9be3) +L 3 (#328892) +U 9 (#8c7073) +R 5 (#3c6020) +U 6 (#943bd3) +R 3 (#498750) +U 10 (#0f8f33) +L 11 (#36f0f0) +D 7 (#2af483) +L 12 (#207430) +D 3 (#0c9011) +L 10 (#0ed572) +D 5 (#426c31) +L 9 (#7ddd92) +D 5 (#319fb1) +R 11 (#7ddd90) +D 4 (#44de41) +R 6 (#0ed570) +D 3 (#094551) +R 10 (#004c10) +D 4 (#6b53f3) +L 11 (#506b90) +D 4 (#2f2a23) +L 5 (#39b5f0) +D 3 (#8ca543) +L 6 (#39b5f2) +D 10 (#20ea63) +L 2 (#66cec0) +D 2 (#22cf93) +L 11 (#3ee352) +D 6 (#591893) +R 12 (#14d660) +D 4 (#5c95f3) +R 3 (#14d662) +D 4 (#37d7b3) +R 5 (#025f32) +D 13 (#7ddd23) +L 8 (#3a93c2) +D 4 (#063123) +L 12 (#9a7522) +D 3 (#61ae11) +R 9 (#572b22) +D 4 (#4fcde1) +R 9 (#130512) +U 4 (#a1ee51) +R 6 (#130510) +D 4 (#1e2a31) +R 11 (#275c72) +D 3 (#129543) +L 10 (#585302) +D 11 (#608d93) +L 8 (#62bf02) +U 11 (#27f113) +L 9 (#322732) +D 3 (#4a7f63) +L 6 (#664bb2) +U 6 (#5a4ea3) +L 9 (#507222) +U 3 (#2e1ca3) diff --git a/day18/sample1.in b/day18/sample1.in new file mode 100644 index 0000000..fc7612e --- /dev/null +++ b/day18/sample1.in @@ -0,0 +1,14 @@ +R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3) diff --git a/day18/sol.tcl b/day18/sol.tcl new file mode 100755 index 0000000..43cfd90 --- /dev/null +++ b/day18/sol.tcl @@ -0,0 +1,57 @@ +#!/usr/bin/env tclsh + +proc solve {input} { + set data {} + while {[gets $input line] >= 0} { + lappend data $line + } + set data [join $data] + set x 0 + set y 0 + set y0 0 + set y1 1 + set x0 0 + set x1 1 + set grid [dict create 0,0 1] + foreach {dir steps color} $data { + puts "$x $y $dir $steps $color" + for {set i 0} {$i < $steps} {incr i} { + switch $dir { + {U} {incr y -1} + {D} {incr y} + {L} {incr x -1} + {R} {incr x} + } + dict set grid $x,$y 1 + set x0 [expr {min($x0,$x)}] + set y0 [expr {min($y0,$y)}] + set x1 [expr {max($x1,$x+1)}] + set y1 [expr {max($y1,$y+1)}] + } + } + set t 0 + for {set y $y0} {$y < $y1} {incr y} { + set row "" + set in 0 + for {set x $x0} {$x < $x1} {incr x} { + if {[dict exists $grid $x,$y]} { + if {[dict exists $grid $x,[expr {$y+1}]]} { + set in [expr {!$in}] + } + lappend row "#" + incr t + } else { + if {$in} { + lappend row "o" + incr t + } else { + lappend row "." + } + } + } + puts [join $row ""] + } + puts "$t" +} + +solve stdin