Compare commits

..

No commits in common. "40053ef992f3bcb7bdb8faaf11e57151f4ac206a" and "365e67056b68c7fc8bf32206a795a225e7efcf69" have entirely different histories.

5 changed files with 1 additions and 221 deletions

View File

@ -22,8 +22,7 @@ let package = Package(
.executable(name: "10", targets: ["10"]), .executable(name: "10", targets: ["10"]),
.executable(name: "11", targets: ["11"]), .executable(name: "11", targets: ["11"]),
.executable(name: "12", targets: ["12"]), .executable(name: "12", targets: ["12"]),
.executable(name: "13", targets: ["13"]), .executable(name: "13", targets: ["13"])
.executable(name: "14", targets: ["14"])
], ],
dependencies: [ dependencies: [
// Dependencies declare other packages that this package depends on. // Dependencies declare other packages that this package depends on.
@ -107,10 +106,6 @@ let package = Package(
.executableTarget( .executableTarget(
name: "13", name: "13",
dependencies: [ .targetItem(name: "Runner", condition: nil) ] dependencies: [ .targetItem(name: "Runner", condition: nil) ]
),
.executableTarget(
name: "14",
dependencies: [ .targetItem(name: "Runner", condition: nil) ]
) )
] ]
) )

View File

@ -1,83 +0,0 @@
//
// File.swift
//
//
// Created by Max Nuding on 14.12.21.
//
import Foundation
import Runner
struct Pair: Hashable {
let first: String.Element
let second: String.Element
init(_ str: String) {
first = str.first!
second = str.last!
}
init(first: String.Element, second: String.Element) {
self.first = first
self.second = second
}
}
class Day14: Runnable {
let inputPath: String
required init(inputPath: String) {
self.inputPath = inputPath
}
public func run() {
let input = try! String(contentsOfFile: inputPath)
let parts = input
.trimmingCharacters(in: .newlines)
.components(separatedBy: "\n\n")
let startingPolymer = parts.first!
let replacements = parts.last!
.components(separatedBy: .newlines)
.map {$0.components(separatedBy: " -> ")}
.reduce(into: [Pair:String.Element](), {
$0[Pair($1.first!)] = $1.last!.first!
})
var pairCounts = [Pair:Int]()
for i in startingPolymer.indices {
let next = startingPolymer.index(i, offsetBy: 1)
guard next != startingPolymer.endIndex else {
continue
}
pairCounts[Pair(first: startingPolymer[i], second: startingPolymer[next]), default: 0] += 1
}
var charCount = startingPolymer.reduce(into: [String.Element:Int](), {
$0[$1, default: 0] += 1
})
for step in 1...40 {
let tmpPairCounts = pairCounts
for pairCount in tmpPairCounts {
let pair = pairCount.key
let replacement = replacements[pair]!
pairCounts[pair]! -= pairCount.value
pairCounts[Pair(first: pair.first, second: replacement), default: 0] += pairCount.value
pairCounts[Pair(first: replacement, second: pair.second), default: 0] += pairCount.value
charCount[replacement, default: 0] += pairCount.value
}
if step == 10 {
printResult(charCount: charCount)
}
}
printResult(charCount: charCount)
}
func printResult(charCount: [String.Element:Int]) {
// Sort instead of min/max so we need to only go through the dict once
let sorted = charCount.sorted(by: {$0.value > $1.value })
let maxC = sorted.first!
let minC = sorted.last!
print(maxC.value - minC.value)
}
}

View File

@ -1,12 +0,0 @@
//
// File.swift
//
//
// Created by Max Nuding on 14.12.21.
//
import Foundation
import Runner
//Runner(target: Day14.self, day: "14", isTest: true).run()
Runner(target: Day14.self, day: "14", isTest: false).run()

View File

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

View File

@ -1,18 +0,0 @@
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