This commit is contained in:
Karl Spickermann 2021-12-14 18:24:48 +01:00
parent 38756e9f01
commit 199b6502b2
3 changed files with 183 additions and 0 deletions

63
src/day14/day14.go Normal file
View File

@ -0,0 +1,63 @@
package main
import (
"AOC2021/src/helper"
"fmt"
"os"
"strings"
)
func main() {
args := os.Args[1:]
input, err := helper.GetInput(args[0])
if err != nil {
fmt.Println(err)
}
startPolymer := input[0]
insertionRuleMap := make(map[string]rune)
for _, row := range input[2:] {
splitRow := strings.Split(row, " -> ")
insertionRuleMap[splitRow[0]] = rune(splitRow[1][0])
}
runeMap := make(map[rune]int)
pairMap := make(map[string]int)
for i := 0; i < len(startPolymer); i++ {
if i < len(startPolymer)-1 {
pairMap[startPolymer[i:i+2]]++
}
runeMap[rune(startPolymer[i])]++
}
for i := 0; i < 10; i++ {
pairMap = insert(pairMap, insertionRuleMap, &runeMap)
}
calculateResultNumber(runeMap, 99999)
for i := 0; i < 30; i++ {
pairMap = insert(pairMap, insertionRuleMap, &runeMap)
}
calculateResultNumber(runeMap, 99999999999999)
}
func calculateResultNumber(runeMap map[rune]int, minAmountDefault int) {
maxAmount := 0
minAmount := minAmountDefault
for _, val := range runeMap {
if val > maxAmount {
maxAmount = val
}
if val < minAmount {
minAmount = val
}
}
fmt.Println(maxAmount - minAmount)
}
func insert(pairMap map[string]int, insertionRuleMap map[string]rune, runeMap *map[rune]int) map[string]int {
newPairmap := make(map[string]int)
for pair, amount := range pairMap {
insertionValue := insertionRuleMap[pair]
(*runeMap)[insertionValue] += amount
newPairmap[string(insertionValue)+pair[1:]] += amount
newPairmap[pair[:1]+string(insertionValue)] += amount
}
return newPairmap
}

102
src/day14/day14Input.txt Normal file
View File

@ -0,0 +1,102 @@
KFVHFSSVNCSNHCPCNPVO
KS -> O
SP -> V
OH -> F
VC -> P
BO -> S
CV -> H
FO -> N
KV -> V
OV -> B
NB -> K
FS -> F
KB -> N
HK -> C
VP -> B
SV -> S
FP -> P
BS -> B
BP -> K
OS -> K
PB -> C
HB -> H
VN -> S
FB -> C
OC -> N
OO -> F
PC -> O
FK -> K
OP -> V
BH -> C
NP -> C
KF -> H
SK -> F
HN -> O
CB -> O
SN -> N
VF -> S
KC -> H
HF -> V
NC -> P
BN -> F
KO -> C
PS -> B
HO -> S
CH -> O
KP -> K
VK -> V
BB -> V
BF -> P
CS -> K
CN -> H
PK -> C
SH -> O
BC -> H
FN -> N
BK -> N
PN -> B
PO -> O
SC -> S
NO -> S
KN -> O
VB -> C
SF -> H
FH -> C
FF -> B
VO -> S
PH -> F
CK -> B
FC -> P
VV -> F
VH -> O
OF -> O
HP -> K
CO -> V
VS -> V
SB -> F
SS -> K
CF -> O
OK -> V
ON -> B
NS -> H
SO -> B
NV -> V
NH -> B
NN -> K
KH -> H
FV -> B
KK -> N
OB -> F
NK -> F
CC -> S
PP -> B
PF -> H
HC -> P
PV -> F
BV -> N
NF -> N
HV -> S
HH -> C
HS -> O
CP -> O

18
src/day14/day14Test.txt Normal file
View File

@ -0,0 +1,18 @@
NNCB
CH -> B
HH -> N
CB -> H
NH -> C
HB -> C
HC -> B
HN -> C
NN -> C
BH -> H
NC -> B
NB -> B
BN -> B
BB -> N
BC -> B
CC -> N
CN -> C