This commit is contained in:
Karl Spickermann 2021-12-11 17:40:29 +01:00
parent 4b333ecefd
commit a838083266
4 changed files with 121 additions and 0 deletions

96
src/day11/day11.go Normal file
View File

@ -0,0 +1,96 @@
package main
import (
"AOC2021/src/helper"
"fmt"
"os"
)
type field struct {
energy int
flashed bool
}
func main() {
args := os.Args[1:]
input, err := helper.GetInput(args[0])
if err != nil {
fmt.Println(err)
}
energyMap := [10][10]field{}
for i, line := range input {
for j, r := range line {
energyMap[i][j] = field{int(r - '0'), false}
}
}
flashes := 0
allFlashTogether := false
i := 0
for !allFlashTogether {
stepflashes := step(&energyMap)
flashes += stepflashes
if stepflashes == 100 {
fmt.Printf("First Step, where all octuspuses flash simultaneously: %d \n", i + 1)
allFlashTogether = true
}
if i == 99 {
fmt.Printf("Flashes after 100 Steps: %d \n", flashes)
}
i++
}
}
func step(energyMap *[10][10]field) int{
flashes := 0
for i, _ := range energyMap {
for j, _ := range energyMap[i] {
energyMap[i][j].energy++
}
}
for i, _ := range energyMap {
for j, _ := range energyMap[i] {
if energyMap[i][j].energy > 9 {
flash(energyMap, j, i)
}
}
}
for i, _ := range energyMap {
for j, _ := range energyMap[i] {
if energyMap[i][j].flashed {
energyMap[i][j].energy = 0
flashes++
energyMap[i][j].flashed = false
}
}
}
return flashes
}
func flash(energyMap *[10][10]field, x int, y int) {
if energyMap[y][x].flashed == true {
return
}
energyMap[y][x].flashed = true
directions := [8][2]int{{-1, -1}, {0, -1}, {1, -1}, {+1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}}
for _, direction := range directions {
px := x + direction[0]
py := y + direction[1]
if py < len(energyMap) && py >= 0 && px < len(energyMap[0]) && px >= 0 {
energyMap[py][px].energy++
if energyMap[py][px].energy > 9 {
flash(energyMap, px, py)
}
}
}
}
func printMap(energyMap *[10][10]field) {
for _, line := range energyMap {
lineArray := [10]int{}
for i, field := range line {
lineArray[i] = field.energy
}
fmt.Println(lineArray)
}
}

10
src/day11/day11Input.txt Normal file
View File

@ -0,0 +1,10 @@
2138862165
2726378448
3235172758
6281242643
4256223158
1112268142
1162836182
1543525861
1882656326
8844263151

View File

@ -0,0 +1,5 @@
11111
19991
19191
19991
11111

10
src/day11/day11Test.txt Normal file
View File

@ -0,0 +1,10 @@
5483143223
2745854711
5264556173
6141336146
6357385478
4167524645
2176841721
6882881134
4846848554
5283751526