2023 day 10
This commit is contained in:
parent
bfcad28fff
commit
a9fc4c9e60
9 changed files with 570 additions and 0 deletions
84
2023/10/part2/lib/lib.go
Normal file
84
2023/10/part2/lib/lib.go
Normal file
|
@ -0,0 +1,84 @@
|
|||
|
||||
package part2
|
||||
|
||||
import (
|
||||
"git.tristans.cloud/tristan/aoc/2023/10/part1/lib"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type Loop map[[2]int]bool
|
||||
|
||||
func GetLoop(pipeMap []string) ( loop Loop ) {
|
||||
x,y := part1.FindStart(pipeMap)
|
||||
loop = Loop{{x,y}: true}
|
||||
side,x,y := part1.FindFirst(pipeMap, x,y)
|
||||
for pipeMap[y][x] != 'S' {
|
||||
loop[[2]int{x,y}] = true
|
||||
side,x,y = part1.FindNext(pipeMap, side, x,y)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func GetShapeOfS(pipeMap []string) () {
|
||||
return
|
||||
}
|
||||
|
||||
const CLEAR = "\u001b[0;0m";
|
||||
const OUT_OF_LOOP = CLEAR;
|
||||
const ON_LOOP = "\u001b[0;31m";
|
||||
const IN_LOOP = "\u001b[0;33m";
|
||||
|
||||
func GetVolume(pipeMap []string) int {
|
||||
loop := GetLoop(pipeMap)
|
||||
count := 0
|
||||
for y,line := range pipeMap {
|
||||
inLoop := false
|
||||
onDownEdge := false
|
||||
onUpEdge := false
|
||||
for x,c := range line {
|
||||
_,onLoop := loop[[2]int{x,y}]
|
||||
|
||||
if onLoop {
|
||||
switch c {
|
||||
case '|':
|
||||
inLoop = !inLoop
|
||||
case 'L':
|
||||
onDownEdge = true
|
||||
case 'F':
|
||||
onUpEdge = true
|
||||
case '7':
|
||||
if onDownEdge {
|
||||
onDownEdge = false
|
||||
inLoop = !inLoop
|
||||
} else if onUpEdge {
|
||||
onUpEdge = false
|
||||
}
|
||||
case 'J':
|
||||
if onUpEdge {
|
||||
onUpEdge = false
|
||||
inLoop = !inLoop
|
||||
} else if onDownEdge {
|
||||
onDownEdge = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
color := OUT_OF_LOOP
|
||||
if onLoop {
|
||||
color = ON_LOOP
|
||||
}
|
||||
if inLoop && !onLoop {
|
||||
count++
|
||||
color = IN_LOOP
|
||||
}
|
||||
if c == 'S' {
|
||||
color = "\u001b[41;30m"
|
||||
}
|
||||
fmt.Printf("%v%c", color, c)
|
||||
}
|
||||
println(CLEAR)
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue