day 13 part 1
parent
c55423d6f3
commit
918d64f258
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,15 @@
|
||||||
|
#.##..##.
|
||||||
|
..#.##.#.
|
||||||
|
##......#
|
||||||
|
##......#
|
||||||
|
..#.##.#.
|
||||||
|
..##..##.
|
||||||
|
#.#.##.#.
|
||||||
|
|
||||||
|
#...##..#
|
||||||
|
#....#..#
|
||||||
|
..##..###
|
||||||
|
#####.##.
|
||||||
|
#####.##.
|
||||||
|
..##..###
|
||||||
|
#....#..#
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/usr/bin/env tclsh
|
||||||
|
source ../prelude.tcl
|
||||||
|
|
||||||
|
set input stdin
|
||||||
|
set patterns [read $input]
|
||||||
|
set patterns [string trim $patterns]
|
||||||
|
#puts "$patterns"
|
||||||
|
set patterns [string map {"\n\n" "|"} $patterns]
|
||||||
|
#puts "$patterns"
|
||||||
|
set patterns [split $patterns "|"]
|
||||||
|
#puts "$patterns"
|
||||||
|
set patterns [lmap p $patterns {split $p "\n"}]
|
||||||
|
puts "$patterns"
|
||||||
|
#puts "$patterns"
|
||||||
|
|
||||||
|
proc reflect pattern {
|
||||||
|
set total 0
|
||||||
|
foreach pat [list $pattern [transpose $pattern]] factor {100 1} {
|
||||||
|
#puts "reflect $pat"
|
||||||
|
for {set i 1} {$i < [llength $pat]} {incr i} {
|
||||||
|
set ok 1
|
||||||
|
for {set j 0} {$i + $j < [llength $pat] && $i-$j-1 >= 0} {incr j} {
|
||||||
|
if {[lindex $pat $i+$j] ne [lindex $pat [expr {$i-$j-1}]]} {
|
||||||
|
set ok 0
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if {$ok} {
|
||||||
|
#puts "$i $factor"
|
||||||
|
incr total [expr {$i * $factor}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $total
|
||||||
|
}
|
||||||
|
|
||||||
|
proc column {lst i} {
|
||||||
|
set c {}
|
||||||
|
foreach row $lst {
|
||||||
|
lappend c [string index $row $i]
|
||||||
|
}
|
||||||
|
return [join $c ""]
|
||||||
|
}
|
||||||
|
|
||||||
|
proc transpose pat {
|
||||||
|
set C [string length [lindex $pat 0]]
|
||||||
|
set out {}
|
||||||
|
for {set i 0} {$i < $C} {incr i} {
|
||||||
|
lappend out [column $pat $i]
|
||||||
|
}
|
||||||
|
return $out
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach pat $patterns {
|
||||||
|
puts "[reflect $pat] <| $pat"
|
||||||
|
}
|
||||||
|
|
||||||
|
puts [ladd [lmap pat $patterns {reflect $pat}]]
|
Loading…
Reference in New Issue