Day20
This commit is contained in:
parent
815ae0b7d5
commit
1f549fcfd7
|
@ -0,0 +1,108 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"AOC2021/src/helper"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
args := os.Args[1:]
|
||||||
|
input, err := helper.GetInput(args[0])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
enchanceAlg := input[0]
|
||||||
|
picture := make([][]rune, len(input[2:]))
|
||||||
|
for i, row := range input[2:] {
|
||||||
|
picture[i] = []rune(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < 50; i++ {
|
||||||
|
if i%2 == 0 {
|
||||||
|
picture = padPicture(picture, 10)
|
||||||
|
}
|
||||||
|
picture = enhancePicture(picture, enchanceAlg)
|
||||||
|
if i%2 == 1 {
|
||||||
|
picture = removeBorder(picture, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printPicture(picture)
|
||||||
|
fmt.Println(countPixel(picture))
|
||||||
|
}
|
||||||
|
|
||||||
|
func enhancePicture(picture [][]rune, enchanceAlg string) [][]rune {
|
||||||
|
newPicture := make([][]rune, len(picture))
|
||||||
|
for i := 0; i < len(newPicture); i++ {
|
||||||
|
newPicture[i] = make([]rune, len(picture[0]))
|
||||||
|
for j := 0; j < len(newPicture[i]); j++ {
|
||||||
|
newPicture[i][j] = rune(enchanceAlg[enchancePoint(picture, j, i)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newPicture
|
||||||
|
}
|
||||||
|
|
||||||
|
func padPicture(picture [][]rune, n int) [][]rune {
|
||||||
|
newPicture := make([][]rune, len(picture)+n*2)
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
newPicture[i] = []rune(strings.Repeat(".", len(picture)+n*2))
|
||||||
|
}
|
||||||
|
for i := len(newPicture) - 1; i > len(newPicture)-n-1; i-- {
|
||||||
|
newPicture[i] = []rune(strings.Repeat(".", len(picture)+n*2))
|
||||||
|
}
|
||||||
|
for i := n; i < len(newPicture)-n; i++ {
|
||||||
|
newPicture[i] = []rune(strings.Repeat(".", n) + string(picture[i-n]) + strings.Repeat(".", n))
|
||||||
|
}
|
||||||
|
return newPicture
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeBorder(picture [][]rune, n int) [][]rune {
|
||||||
|
var newPicture [][]rune
|
||||||
|
for _, row := range picture[n : len(picture)-n] {
|
||||||
|
newPicture = append(newPicture, row[n:len(row)-n])
|
||||||
|
}
|
||||||
|
return newPicture
|
||||||
|
}
|
||||||
|
|
||||||
|
func enchancePoint(picture [][]rune, x int, y int) int {
|
||||||
|
points := [9][2]int{{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 0}, {0, 1}, {1, -1}, {1, 0}, {1, 1}}
|
||||||
|
var binaryNumber []rune
|
||||||
|
for _, direction := range points {
|
||||||
|
px := x + direction[1]
|
||||||
|
py := y + direction[0]
|
||||||
|
binaryPart := '0'
|
||||||
|
if py < len(picture) && py >= 0 && px < len(picture[0]) && px >= 0 {
|
||||||
|
if picture[py][px] == '#' {
|
||||||
|
binaryPart = '1'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binaryNumber = append(binaryNumber, binaryPart)
|
||||||
|
}
|
||||||
|
if i, err := strconv.ParseInt(string(binaryNumber), 2, 0); err != nil {
|
||||||
|
return -1
|
||||||
|
} else {
|
||||||
|
return int(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func printPicture(picture [][]rune) {
|
||||||
|
fmt.Println("holla")
|
||||||
|
for _, row := range picture {
|
||||||
|
fmt.Println(string(row))
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
|
}
|
||||||
|
|
||||||
|
func countPixel(picture [][]rune) int {
|
||||||
|
sum := 0
|
||||||
|
for _, row := range picture {
|
||||||
|
for _, char := range row {
|
||||||
|
if char == '#' {
|
||||||
|
sum++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
###.#....#.....##....#..#####.###..#...#.####....#..##.#.#...#..###.#####..####.#.#######.#.##..#.#..##.###...###....####.####..#.#.#...##..##.#..#####..###...###.....#..#.#..##....##..#...#.#........####...#.#...##....##..###.#.#..##.#.####..##........##.##.#.#.#.#.#.#...#...###.####.#.######..#.#.##....#.##.....##.#.#.#.##...#...#.#..#..##.#######.###............####...###.#..#.###.#...#.......#.##.##...##..####.##....#####....#..#...#.#.##.#......#####....#####..#..#.##...#.#....##.##..###....##.#....##.
|
||||||
|
|
||||||
|
.......#............#.##...##..#...##.#..####.#..#.##..#.##.##..#.#....#.#####.#.##..#..#..##..#.###
|
||||||
|
.#.####.......#....##....#####.##...######.###.##....####..####.#....#..####..#....#.##..##.##..##..
|
||||||
|
.###.##.#.##.#......#...##.#.#.##..##..##....##...#####...#####..###......####...###.#.###.##.##.##.
|
||||||
|
###.##.....###.##...###..#..##.#.#....####..###.###..###..###.#..#..#..##...#....##..#..####..#...#.
|
||||||
|
..#######..#...##..####.#.#.#.##.#.##.######..#.##.#..####.#.##.####.#.#..##.#.....#.#...###.###....
|
||||||
|
#.###.#....#.###..#.....##....#..##.....#####..###.#..#.####..#....#......#.#.##.#...#####..#.#.####
|
||||||
|
.###.##.##.##..#...#.#.###.#.#####.########.....#####.#.......##...##....#.#.###...#..#...##.#.#.#..
|
||||||
|
.###..###....###.###.###.##.###...##.##.....####.#.##.##..#####.#.#.##..##....##.#..#.#..#..#..#.#..
|
||||||
|
###.#.....#.##.#..#...###.###..##..##...##..#.#.####.#.###.##.#.###..##..#.##.#.#.#..#####..#.#.#..#
|
||||||
|
###.#....#.#...######.##..#.####..##.....#.###.....###...##....###.#######..#......#....####.#..#..#
|
||||||
|
..#...#...#.##.#....###.#######....###..###.#####.###.#..#.....#.#.###.#...#.###..##.#.#.##.##.##...
|
||||||
|
##...#.....##.#.##.##..#..#...#........##....#.#.#....#..##..####..#....#####.##.##..###.###.####.##
|
||||||
|
.#.###.....#...##...#..#..###..#.##..#.##..##.#.##.#.##.#.###...####.#.#...##...####.#....#.#....#.#
|
||||||
|
########.#.#.#.....##.##..###.#..#.#####.##.##.##.##.#..#..#.#.###.##########..##...#..###..#.##..#.
|
||||||
|
......##.##..##.###.####...###.#..##.#.##.####.####...#######..#..#.###..##...###.###.#.#.#.######.#
|
||||||
|
.###.####.#####.#.#.#...##.#.##....#..##.#####.####....#.....##.#.#..##....##..#.#.####...#.##...#.#
|
||||||
|
##....######...#..##..#.#####.##.#####..#......#.#.#..#######.#...##.##..##..#..#.###.#.#......##.#.
|
||||||
|
.##......#..#...#..##..#.#.###..##.#..###.###.##.##.#...#.#.##.#.###....#####....##...##...####.###.
|
||||||
|
####.###....###..###.###......####.#..#####.#......##....#...##..#####....#.#######.##...##.##.##.##
|
||||||
|
#....##.####....#####...##......####.#.#.#.##....#.###.#...##.##...#.#.##.#....#..#.##.#.#..#.#..##.
|
||||||
|
#.##.#.##..##.#.##...#####.###.#..##.....###...#.##.###....#.###..###.####....###..##.###.#..######.
|
||||||
|
..#...##...#...#...#..###..#..#.#......##.#...#...#..#.#..#..#.##.#####...#..##..###...#.###..#....#
|
||||||
|
.##...#.#.....#.###...###....#####...##.#.###..##..###.#...######.#####.#..####.#....###.####..#...#
|
||||||
|
#.##.##.#.#.#..#.#####.###.###.#.###..#.#.##..####.#.######.#.###.#.##...#..#..#..#.#.#..#.#.#..##..
|
||||||
|
#####.####.##.#..##.......#....#...#.#.....#..#.#...#.......##.#######.#.##....#.....##...##...###.#
|
||||||
|
##.#...#.#..####.##.###.####..###..###..#...#.######.##.##.#.#.#..###.#.##.#.#.#..#####..###.##....#
|
||||||
|
.#.##.#.#......#......###.#.####..#.#..###....#####..###..#.######....##..##.##.##....#..#........#.
|
||||||
|
.##.##..#####.....#.###.....#.##....#.....#.#.#..#..#######..#####.....##.###.###.##..##..###...##.#
|
||||||
|
#..#.#.#.####..###.#.##.......#.#.#.#.##.#.#.#.#..##.##.##.......#.#.#..#..###...#.##.#.#..#....###.
|
||||||
|
.#####.#.##.#..#.#...####...###.####.#.#.....####..#...#.###...#....#.#..####.####...#....#.##.###..
|
||||||
|
.....##..#.##.#######....###...##...#.#.##.#..###....#.##..###....##..##.#.###.##..#####........#.##
|
||||||
|
##.#.#.#########..##....#..#.##.#...#..#....##..#.###.#.#.#.###.#.....#......##.##....#.....#.#...##
|
||||||
|
..##..#..#.##...#.....##.##....##.####....#...###..##...##.#......#...#.....#....##...###.###....#..
|
||||||
|
##.#.##.....#.#.##..#......#...####....#.##.#.##..####.##.#.###.#...#..#..##..###..#.###.####.####.#
|
||||||
|
.#.#..####.##.#.###..##.#.###..##.##..#...##..#..#.##..####..####..#...###.######....###.#..#####..#
|
||||||
|
#.##..##.##...#....##...###..#.##...##....#.....#..##.#.###....#......##.##..###.#..######....##.#..
|
||||||
|
#.####.....##.###.##...###.###.#....#.....####.#####......#.#......#..##...##.#....###.##.#....#..#.
|
||||||
|
...###..###.#.#.###.#.#.##.####.#.######.#.##..#...#..##.#.#.#.#.............#..#.#.###.....##.###..
|
||||||
|
#...###.#.##.####..##...###.##...####.##....######.....######.##.##.#..#.##.##.#......#.###.#.#...##
|
||||||
|
####.#.########.##...##.############...###.##...#...######....##.########.##.##..#...##..#.#...##.##
|
||||||
|
###.#..#..##.##....#..#..#..##.#.##.##.......##..#...#.###.#.#....##.#.#.##.#####.##.......#.#.#..##
|
||||||
|
..#######.####.##...#####.#.####.#...#...#..#..##.###.#########....#..###.##..#.##..##.....###.#..#.
|
||||||
|
###.#.#..#.#..###.#.#..#.##...##....#.#..#.......#.###.#.#.#.#####...#...######.##.#....##.#..#.#.#.
|
||||||
|
.##....#.#.###...#.#...####..###.#.#.#..##.##.#..##...#...####..#......#####..####..##.##.##...##..#
|
||||||
|
...##.##..#.#.....##...#..##.#.#.####..##.........##..##.....#.###.##...##.##..#..#...#..#......####
|
||||||
|
......#..#####.....#....##..#####...#.#.##......##....####...#...####.###.#.#.##..#..#...##...###...
|
||||||
|
...###....###.####.#....###......#.#...#.##.#..#######..#....#####.##.#####..###....##.##..##....#.#
|
||||||
|
##...###.####..#...#.##....#..#.#.#..#.#....#.#...#.##..#..######.....##..#.#.######.#.#....##.#.#.#
|
||||||
|
#..##...#..#.##.....####.##.##.#.#.##.#..##..##..#...#####.###.###........#.#.#..#.#.##.#...##..#.#.
|
||||||
|
#####..##....#.#..##.#.##..#.###..##..#.#.###.####.#.#..#.....#..##.####..#.####.###..#.....##....##
|
||||||
|
.##..###.#.#.#.#.####.#.##...###..#####.####.###.##.###.##.#....#.#.#..#.#.##.#..####...###.####.##.
|
||||||
|
#.#.#......#.###.#...###..###...#...#.#..######.###.##.#.####.....#...##.#..##..##.#..##.#.#....#.##
|
||||||
|
#...##...##.#...##....######.########....#..#######.#.####....#..##..##.##.#.###.####.####..###.####
|
||||||
|
#.##..##...#.####.#.#..####.#.##.#.#...####...####.#.#....####..##...#......#........##........####.
|
||||||
|
..##.#..######...#####.#.##.###.##.......#..###..###...#....#..####..#..#..#...##.#.##.####.#.##.#..
|
||||||
|
#..#...###..#..#.#...###.#..#.#...#.....##..#.#...#####...##....##.......####.##..####..##.#..######
|
||||||
|
.##.####..###..##.#.####.###.##...##..###.#.#.##...##.....#..#..#.####..###...##...#######.....##.#.
|
||||||
|
.####.#.#.##...##...###.....####.##..####....##....#...##.##...##.####.###.##...#####..#...#.#...#..
|
||||||
|
....#.#...#..#.#.#....####.##..#.#....#........#...####..###..###.###...#..###.#..#.##.#..#...#.####
|
||||||
|
#..#..##..##.#...#####...#.......#..##..###.#.#.####..###.#...##......##.##.#..#.#.##.#..##.#.#...#.
|
||||||
|
.#####...#.##.###.#.##..###.##.#.#...##..#.#...###.....##.#.##.#..#..####...#.######....#..#.##..#..
|
||||||
|
#.#...#.....#.....######.##.##.##.##.#.#..#..#.#.####..#...#####.##.####..###.##.#.#.#.#..#.#...####
|
||||||
|
##.##.#.#...##.#.###.#####.#...##.........#......#.##.....#.......##....#.#.##..#.#..#.#..##..#.###.
|
||||||
|
....#.#.##.###.##..##.#..#.##.#..#.######.###.##..#..#.#...###.#........###.###.##..####.#...###..#.
|
||||||
|
#####..####.#.###..#####...#.......#.##.#.....#.###.####.......##.#.#.##.#...#....#....#....##...##.
|
||||||
|
.##.#..####...##...##.....##..#.####.#...#..##..#....####.#..#..#.#..#...#.#.#.##.####..######..#.#.
|
||||||
|
#.#.##.##.#.....#...#..#...#.#.#..#.#.#####..#.##..#.##.#......##.#..#.#.#...#...####.#.#.#.#....#..
|
||||||
|
.##..###.##..##...#..##...#..#......#.#####.####.####.#.......##.#.#..#..#.#.##.#..#..###.#.#..##..#
|
||||||
|
#..##...#........##..#...###########.#.###...##.##...##.#.###...####..########..#...##..####..###...
|
||||||
|
.#.#..###.#.##.#.#..#######......####.#....#####...##...#.###.##....#####.#...#######.######..######
|
||||||
|
.#.###..###.##...#...###.########...#.#.#.#..#...#..#.#.....####..#...####......#.#...##.#.###..##.#
|
||||||
|
#.###.###...#..#####.###.#...###..#..#..###.#..#..###.#..##.####..#####..#....#....##.##.#..#.####.#
|
||||||
|
..#.###.#.#.#.#...####.#.##.#...#.##...#.###.##.#.#######.#####.##..####....###.###.##.#.##....##.##
|
||||||
|
#..#.....#..#.##.#....#.####..#.##..####.#..#.#.###..##..#..#..##.####........#..#....#.#.#.###.##..
|
||||||
|
#.##.#.#..##.#####...##.#...#..#...#.#.##.#..##.....##.##.#.#.#.###......#.###.###..###.###..#######
|
||||||
|
##.###.###...#..##.....#######..##.#.##..#.#.....###.#....####.####.#..##.#..#..#..##.....#..###..##
|
||||||
|
#....#..#.#.#..#.#....#.##.#.#.#.###.###.###.##..##.####..####.#.#....#.#######..###.#.....####.#..#
|
||||||
|
###.....#.#####..###.#.#....#.....#.###....##..###.#..#.#.#...###.##....#....#..#......#..#....#..#.
|
||||||
|
.#.#.#.#####........#.#######...#.####...#...#.###..#....#.#.###.##.....##.#.##..#.#.....#.#..##..##
|
||||||
|
...###..#....#.###.#.#.#..##.##.....##.##...#.#........#.#.#####.#...####.#...##..##......#####.###.
|
||||||
|
##.###..#.#...#......#######.#..##....###.#.##.#..###.#..###.#...#..######..........##.#.#.#..#..##.
|
||||||
|
#..###.#...##..#######..#..#.###..#.###.##.######.##.###.##..#######.#..###.##.##...###....##..#.#.#
|
||||||
|
#.#....#..#.###.#.##...#####.##....#...#.##.#..#.##..#...#...##.#..#..#.#.#..#####..##.###....#.#.##
|
||||||
|
###...#.#.#..####.....##.#.##.##..#.####...###....###.#.##.########..#####.##.##.#..#....###..###.##
|
||||||
|
##.###...#.#.#.#.##...##.#.##.#.#..#.#.#.###.##.#.##.##....########.#..#####..##.#.#.#..#####.#..###
|
||||||
|
##..##.##.###.#######.##.......#.#.##.###..##...#...##...#####.#....#.#.#...#.#..#.#.#..####.###.#.#
|
||||||
|
###..#.#..#..#..####.#.#.####..#....######...####..######.##.##..#####....####...##########..#####.#
|
||||||
|
...#####.#.##....##.##....#...##...##.#.#.#.#.......#.##.#...####.##..####.....#...##..##.#...##...#
|
||||||
|
#####.#.###..#..###.#..#..##..##.#.#.#.#..#...###...#.###.###.###..#.#.##.#####...#.#.##.#....#####.
|
||||||
|
###.#..###.#.####.#.#..#.##.##.#.#.##......##.####..#...#....##..#....#.#..#..##...###...##.##.#.#..
|
||||||
|
..#.#..#...##.#....###.##...#...##.##..###..#.#.#.......##.#.#..#.##.#......#.#..#..#...#...#.#.#.##
|
||||||
|
#.#.#.#..###.##.#.#####.###.#.#..###....###...###....#.#..#.......##.#.###..##..#...###.#.##....#..#
|
||||||
|
.#..##......#.#.....##.#...##....####....##.####..#....#...##.######.#..#.#.#....#.#######.....####.
|
||||||
|
..#..###....##.##..##..#.#..####..##...#.####..........##.#.#.#..##..#..#.##....###.####.....#..##.#
|
||||||
|
....#.#.....#.#..#....#..#.###.####..#..##.####....##....#.#..#.#.####.##.......##.##.###.#.##..#.#.
|
||||||
|
..###.##....#.##......####..###..#..##.########.###.##...###.#.....#...###.#..#..#.#....#..#.######.
|
||||||
|
.##.#.........#..#.#..#.#.##.####.#..##...#.###....#..#...##..##.#..#..####.#...#...####.....##...##
|
||||||
|
##..#.#.##.##.#...######..##.##.#.#.#.###..#.#.#....###......##...#.#....#...##.########.##..####.##
|
||||||
|
.#......##.###...##..##..###.####.#....##.#.#.#....##.#....##...######.....##..##....#.###..#..#.##.
|
||||||
|
#...#...#.......#.#.#####.#..###..#..#...###...###..#.#.......###.#..##.#####...##.#####...#.#.####.
|
|
@ -0,0 +1,7 @@
|
||||||
|
..#.#..#####.#.#.#.###.##.....###.##.#..###.####..#####..#....#..#..##..###..######.###...####..#..#####..##..#.#####...##.#.#..#.##..#.#......#.###.######.###.####...#.##.##..#..#..#####.....#.#....###..#.##......#.....#..#..#..##..#...##.######.####.####.#.#...#.......#..#.#.#...####.##.#......#..#...##.#.##..#...##.#.##..###.#......#.#.......#.#.#.####.###.##...#.....####.#..#..#.##.#....##..#.####....##...##..#...#......#.#.......#.......##..####..#...#.#.#...##..#.#..###..#####........#..####......#..#
|
||||||
|
|
||||||
|
#..#.
|
||||||
|
#....
|
||||||
|
##..#
|
||||||
|
..#..
|
||||||
|
..###
|
|
@ -0,0 +1,5 @@
|
||||||
|
#..#.
|
||||||
|
#....
|
||||||
|
##..#
|
||||||
|
..#..
|
||||||
|
..###
|
Loading…
Reference in New Issue
Block a user