#!/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 i1 $input set input {} foreach line $i1 { lappend input [split $line ""] } set xmas_hits 0 set x_mas_hits 0 for {set y 0} {$y < $height} {incr y} { for {set x 0} {$x < $width} {incr x} { if {$x > 2 && [lrindex $input [list $y $x] [list $y $x-1] [list $y $x-2] [list $y $x-3]] in {{X M A S} {S A M X}}} {incr xmas_hits} if {$y > 2 && [lrindex $input [list $y $x] [list $y-1 $x] [list $y-2 $x] [list $y-3 $x]] in {{X M A S} {S A M X}}} {incr xmas_hits} if {$x < ($width - 3) && $y > 2 && [lrindex $input [list $y $x] [list $y-1 $x+1] [list $y-2 $x+2] [list $y-3 $x+3]] in {{X M A S} {S A M X}}} {incr xmas_hits} if {$x > 2 && $y > 2 && [lrindex $input [list $y $x] [list $y-1 $x-1] [list $y-2 $x-2] [list $y-3 $x-3]] in {{X M A S} {S A M X}}} {incr xmas_hits} # ABC # DEF # GHI # -> A C E G I if {$x > 1 && $y > 1 && [lrindex $input [list $y-2 $x-2] [list $y-2 $x] [list $y-1 $x-1] [list $y $x-2] [list $y $x]] in {{M M A S S} {M S A M S} {S S A M M} {S M A S M}}} {incr x_mas_hits} } } puts "Count: $xmas_hits" puts "" puts {Part 2: X-MAS pattern search count} puts "Count: $x_mas_hits"