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