Day14
This commit is contained in:
parent
38756e9f01
commit
199b6502b2
|
@ -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
|
||||||
|
}
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue
Block a user