#!/bin/env tclsh source lib.tcl setup 4 puts {Part 1: XMAS word search count} set height [llength $input] set width [string length [lindex $input 0]] set w2 [expr {$height * 2}] set w3 [expr {$height * 3}] set input [join $input ""] set xmas_hits 0 for {set i 0} {$i < [string length $input]} {incr i} { set start $xmas_hits if {$width - ($i % $width) > 3 && [sindex $input $i $i+1 $i+2 $i+3] == "XMAS"} { puts $i incr xmas_hits } if {$i % $width > 3 && [sindex $input $i $i-1 $i-2 $i-3] == "XMAS"} { puts $i incr xmas_hits } if {$height - ($i / $width % $height) > 3 && [sindex $input $i $i+$width $i+$w2 $i+$w3] == "XMAS"} { puts $i incr xmas_hits } if {$i / $width % $height > 3 && [sindex $input $i $i-$width $i-$w2 $i-$w3] == "XMAS"} { puts $i incr xmas_hits } # down-right if {$height - ($i / $width % $height) > 3 && $width - ($i % $width) > 3 && [sindex $input $i [expr {$i+$width+1}] [expr {$i+$w2+2}] [expr {$i+$w3+3}]] == "XMAS"} { puts $i incr xmas_hits } # down-left if {$height - ($i / $width % $height) > 3 && $i % $width > 3 && [sindex $input $i [expr {$i+$width-1}] [expr {$i+$w2-2}] [expr {$i+$w3-3}]] == "XMAS"} { puts $i incr xmas_hits } # up-right if {$i / $width % $height > 3 && $width - ($i % $width) > 3 && [sindex $input $i [expr {$i-$width+1}] [expr {$i-$w2+2}] [expr {$i-$w3+3}]] == "XMAS"} { puts $i incr xmas_hits } # up-left if {$i / $width % $height > 3 && $i % $width > 3 && [sindex $input $i [expr {$i-$width-1}] [expr {$i-$w2-2}] [expr {$i-$w3-3}]] == "XMAS"} { puts $i incr xmas_hits } } puts "Count: $xmas_hits" puts "" puts {Part 2: } puts "2: $"