diff options
Diffstat (limited to 'aoc/2022/09/part-one.tcl')
-rwxr-xr-x | aoc/2022/09/part-one.tcl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/aoc/2022/09/part-one.tcl b/aoc/2022/09/part-one.tcl new file mode 100755 index 0000000..3e7716a --- /dev/null +++ b/aoc/2022/09/part-one.tcl @@ -0,0 +1,25 @@ +#!/usr/bin/env tclsh +proc vec x {list [expr {abs($x)}] [expr {($x>0)-($x<0)}]} +set tx [set hx 0] +set ty [set hy 0] +while {1} { + set line [gets stdin] + if {[eof stdin] || $line == ""} then break + lassign [split $line] d n + for {set i 0} {$i < $n} {incr i} { + switch $d { + R {incr hx 1} + U {incr hy 1} + L {incr hx -1} + D {incr hy -1} + } + lassign [vec [expr {$hx-$tx}]] mx dx + lassign [vec [expr {$hy-$ty}]] my dy + if {$mx == 2 || $my == 2} { + incr tx $dx + incr ty $dy + } + set v($tx,$ty) 1 + } +} +puts [array size v] |