2023 Day 14 Complete!

This commit is contained in:
2023-12-14 08:31:55 -06:00
parent ed635d9088
commit 0c611fdc3b
5 changed files with 479 additions and 33 deletions

View File

@@ -42,6 +42,44 @@ func StringSliceToCoordByteMap(input []string) CoordByteMap {
return ret
}
func (m *CoordByteMap) GetPos(x, y int) byte {
return m.Get(Coordinate{X: x, Y: y})
}
func (m *CoordByteMap) Get(pos Coordinate) byte {
if v, ok := m.Field[pos]; ok {
return v
}
return 0
}
func (m *CoordByteMap) Opt(pos Coordinate, def byte) byte {
if v, ok := m.Field[pos]; ok {
return v
}
return def
}
func (m *CoordByteMap) Put(pos Coordinate, val byte) {
if pos.X < m.TLX {
m.TLX = pos.X
}
if pos.Y < m.TLY {
m.TLY = pos.Y
}
if pos.X > m.BRX {
m.BRX = pos.X
}
if pos.Y > m.BRY {
m.BRY = pos.Y
}
m.Field[pos] = val
}
func (m *CoordByteMap) Delete(pos Coordinate) {
delete(m.Field, pos)
}
func (m *CoordByteMap) Height() int {
return m.BRY - m.TLY
}
@@ -223,39 +261,6 @@ func (m *CoordByteMap) Count(b byte) int {
return ret
}
func (m *CoordByteMap) Get(pos Coordinate) byte {
if v, ok := m.Field[pos]; ok {
return v
}
return 0
}
func (m *CoordByteMap) Opt(pos Coordinate, def byte) byte {
if v, ok := m.Field[pos]; ok {
return v
}
return def
}
func (m *CoordByteMap) Put(pos Coordinate, val byte) {
if pos.X < m.TLX {
m.TLX = pos.X
}
if pos.Y < m.TLY {
m.TLY = pos.Y
}
if pos.X > m.BRX {
m.BRX = pos.X
}
if pos.Y > m.BRY {
m.BRY = pos.Y
}
m.Field[pos] = val
}
func (m *CoordByteMap) Delete(pos Coordinate) {
delete(m.Field, pos)
}
func (m *CoordByteMap) GrowNorth(size int, val byte) {
tlY := m.TLY - 1
for x := m.TLX; x <= m.BRX; x++ {