parent
7da7595db4
commit
9802ed1f35
@ -0,0 +1,250 @@
|
||||
fonbsmjyqugrapsczckghtvdxl
|
||||
fonpsmjyquwrnpeczikghtvdxw
|
||||
fonbsmdymuwrapexzikghtvdxl
|
||||
fonwsmjyquwrapeczikghttdpl
|
||||
fonbsmjkquwrapeczjkghtvdxx
|
||||
yonbsmjyquwrapecgikghtvdxc
|
||||
donbsmjyquqrapeczikghtadxl
|
||||
monbsmjyquprgpeczikghtvdxl
|
||||
fonbsmjyquwvapecqgkghtvdxl
|
||||
fonbsmjyquwrkphczikghsvdxl
|
||||
fonbomjyeuwvapeczikghtvdxl
|
||||
fonwsmjyjuwrapoczikghtvdxl
|
||||
foybsmjyquwcapeczikghsvdxl
|
||||
fonbsmjyquwrtaeczikgptvdxl
|
||||
ponbsmpyquwjapeczikghtvdxl
|
||||
flnbcmjyquwrqpeczikghtvdxl
|
||||
fonbsmjyquwrapegzikvbtvdxl
|
||||
fonbjmjyqgwrazeczikghtvdxl
|
||||
zoabsmjyquwkapeczikghtvdxl
|
||||
fonbsmjyquwrapecziktxkvdxl
|
||||
fonbsxjyrpwrapeczikghtvdxl
|
||||
fonbsmjbquwqapeciikghtvdxl
|
||||
lonbsmjyquwraphczikghtvdul
|
||||
ftnbsmjyquwrapcczikghtxdxl
|
||||
fonbsmjyqgwrapeczikghtldxc
|
||||
fonbsmjsquwmapeyzikghtvdxl
|
||||
fonbsmjyqfwrapecziqghtgdxl
|
||||
yonbsmjyquwraveczikgftvdxl
|
||||
fovbsmjyquwrapeczikggkvdxl
|
||||
fonbsmjyquwrapezzikghbvdvl
|
||||
fonzsmxyquwrapeczukghtvdxl
|
||||
fonbemjyquwrapevzikghtvrxl
|
||||
conbsxjxquwrapeczikghtvdxl
|
||||
fonbsmjsmewrapeczikghtvdxl
|
||||
folbsmjyqhwrapqczikghtvdxl
|
||||
fonbsmjyquwrzneczikghtvdxn
|
||||
fonbsmjyquirapeczikjhtvdll
|
||||
fontsmgyquwrgpeczikghtvdxl
|
||||
fonbsmjyauwrapeczbfghtvdxl
|
||||
ftnbsmjyquwrapecpifghtvdxl
|
||||
fonvsmjyqewrapeczikghlvdxl
|
||||
fonbsljyquwrapecziklhtvdxw
|
||||
fonbbmjyquwrapeczikghvadxl
|
||||
ponbsmjyquwrspeczikghivdxl
|
||||
fonbsmjcquwrapeccikghtvuxl
|
||||
fonbsmjnquwrapetzikghtvlxl
|
||||
fonbsmjymuwrapeczieghtvdxr
|
||||
ffnbsxnyquwrapeczikghtvdxl
|
||||
fonbsmjytuwrajeczzkghtvdxl
|
||||
fonssmjyquwhapeczikghkvdxl
|
||||
fonbsajyuuwrapeczikghlvdxl
|
||||
fonbsmjyquwrapeczihghtcixl
|
||||
fohbsmjyquwrapzczirghtvdxl
|
||||
fonbsmjyquwrapecjqnghtvdxl
|
||||
fonbsmjytuhrapeczihghtvdxl
|
||||
foabumjyquwrapeczikghtvdxz
|
||||
conbsmjyqtwrapeczikggtvdxl
|
||||
fonbsmjyiqwrapeczokghtvdxl
|
||||
fondsmjypuwrapeczikghtvjxl
|
||||
fonbswjyquwrapeczikgvtydxl
|
||||
fonbsmjyqqwrapeczikkhtvdbl
|
||||
fonbsmjyquwrapemzitghtvdsl
|
||||
fonbsmjyquwrspecziegxtvdxl
|
||||
fonbsmpyquwrgpeczikghtwdxl
|
||||
fodbsmjqquwrapeczmkghtvdxl
|
||||
fonbsmjkquwrapeczikghpvdxr
|
||||
fonbsmjyquwrapeczikshzvmxl
|
||||
fznbsmjyqulrapeczikghkvdxl
|
||||
fonbsmjyquwripeczikghtbdjl
|
||||
fcnbsmjyquzrapecyikghtvdxl
|
||||
ronbxmjyquwrapeczikghgvdxl
|
||||
fonbsmuyvuwrgpeczikghtvdxl
|
||||
fonbsmjyyuwraplczikghtudxl
|
||||
poxbsmjyqewrapeczikghtvdxl
|
||||
foabsmjyquwrapecziqghtvpxl
|
||||
ponbsmjrquwrapeczikchtvdxl
|
||||
fonzzmjyquwrapeczikghtvdxs
|
||||
wonbsmjyquwghpeczikghtvdxl
|
||||
fofbsejyquwrapeczikgctvdxl
|
||||
ponbsmjyquwrayegzikghtvdxl
|
||||
fonbumjyquwripeczikghtvdxf
|
||||
fonbsmqyquwrapeczikgftvdxv
|
||||
qonbsmjyquwraplczitghtvdxl
|
||||
fmnbsajdquwrapeczikghtvdxl
|
||||
fonbsrjyquwrapempikghtvdxl
|
||||
fonbsmjyquwrapeczikgotudxw
|
||||
fonbsmtyquwrapeflikghtvdxl
|
||||
fzqbsmjyquwrapecjikghtvdxl
|
||||
fdnbsmjyquwraqeclikghtvdxl
|
||||
fvnbsijyquwrapechikghtvdxl
|
||||
fovbsmjyquwsapeczikghqvdxl
|
||||
ffjbsmjyqgwrapeczikghtvdxl
|
||||
fonbsmjyquwrapeczvkhhivdxl
|
||||
forbamjjquwrapeczikghtvdxl
|
||||
fonbwmjyquwtapeyzikghtvdxl
|
||||
fonvsmjyquwrapeczikglnvdxl
|
||||
fonnsmjyguwrapeczikghtvxxl
|
||||
fopbsmjyquwrapeczikghtvaxz
|
||||
fonbsmjyquwiapeczikrhavdxl
|
||||
fonbsujyquwrapeczikthtvdjl
|
||||
fonpsmkyeuwrapeczikghtvdxl
|
||||
fonbsmjyquwrapeczqkgttvdxk
|
||||
fonbsmjyqzwrapeczikgrtddxl
|
||||
fokbsmjiquwrapeczikgltvdxl
|
||||
fonbsmjyqbwrapeczikghttdxo
|
||||
fonbsejyquwrapeczikghbvdal
|
||||
fonblmjyquwyaveczikghtvdxl
|
||||
fonbsmjyquwlzpepzikghtvdxl
|
||||
fonbsmjyqulrapbczigghtvdxl
|
||||
fonbsmjyxuwrapecziyghtvsxl
|
||||
fonbyjjyquwrapeczikghtvdxn
|
||||
fonbhmjyquwrapeczikghtjhxl
|
||||
fonbspjykuwraieczikghtvdxl
|
||||
aonbsmjyquwwapeczikchtvdxl
|
||||
fombsmjyquwyapeczikghtvdll
|
||||
fonbsmjynuwrapeczivgbtvdxl
|
||||
xonbsmjfquwrapeczikghqvdxl
|
||||
fonbyzjyquwzapeczikghtvdxl
|
||||
fbnbsmjyquwrapeczimgvtvdxl
|
||||
qonbsmjyquwraoeczikgftvdxl
|
||||
fonbsrjyquwrapeczikghtvjxm
|
||||
fonbsmjyquwrapxjzykghtvdxl
|
||||
fonbwgjyquwrapecziklhtvdxl
|
||||
fonjcmjyouwrapeczikghtvdxl
|
||||
fonbsmjyquwrapefzisuhtvdxl
|
||||
fonbsmjyqywrspeczikghtvnxl
|
||||
qonbsmjyquwrapeczlkuhtvdxl
|
||||
fonbsmjyqlprapeczikghtvdbl
|
||||
fonbsmjzquwrapedzikfhtvdxl
|
||||
fonbsmjyquwrapeczizghtvjxq
|
||||
fonbsmxyquwrrpeczikghtvcxl
|
||||
fonpsmjyquwoapeczikghjvdxl
|
||||
fonbshkyauwrapeczikghtvdxl
|
||||
fonbsmjysuwrapeczilghpvdxl
|
||||
fovwsxjyquwrapeczikghtvdxl
|
||||
fonbsmjyquwrppecnikghmvdxl
|
||||
fonbkmjyiuwrrpeczikghtvdxl
|
||||
gonbsmjyquwrapeczikphtudxl
|
||||
foncsmjyqlwrapeczimghtvdxl
|
||||
fonbsmjhquwrtpeczikghtvdxg
|
||||
fogbsmjyquarapeczikghtvdil
|
||||
fonbsmjyquwraperzekghwvdxl
|
||||
fonbstjyquwrapeczicghtedxl
|
||||
fonbsmjoquhrapeczikgotvdxl
|
||||
fonbsmjykuwrareczikgdtvdxl
|
||||
fonbsmjyvuwrayeczivghtvdxl
|
||||
fonbzmgyquwraptczikghtvdxl
|
||||
fonbsmjyqubrapeczikgftvdxb
|
||||
fonbgmjyjuwrapeczikghtvdul
|
||||
fonbsmjzqurrapeczikghtvfxl
|
||||
fonbsmjyiuwrapeczikgstvtxl
|
||||
fpnbstjyquwrapeczikghtvdcl
|
||||
fonbpmjyquwrapeczivghtndxl
|
||||
fonbsmjyquwrapeczilgptvvxl
|
||||
fonbsmjyqdwripecbikghtvdxl
|
||||
fonbsmjytuwgapnczikghtvdxl
|
||||
fonbsejyquwrapedzikghtvdml
|
||||
fonbsojyqdwrapeczikghtgdxl
|
||||
fonbsmjykuwrayeczicghtvdxl
|
||||
foubsmtyquwrapeczikchtvdxl
|
||||
fonbqmjyqukrapeyzikghtvdxl
|
||||
fonbsmjyquwaapenzikghtvdwl
|
||||
fonbsmeyquwrapeyzixghtvdxl
|
||||
fonusmjyquhrapeczikgytvdxl
|
||||
fonbsmjyquwrapwazikqhtvdxl
|
||||
fonwsmeyquwrapeczikghhvdxl
|
||||
fonmsmjyquxrspeczikghtvdxl
|
||||
fonqsmjyqxwrapeczikghtvdml
|
||||
fonfsmjyquwrapeuzikgatvdxl
|
||||
fonvsmjyquwrapeczikgrtvdul
|
||||
fonbsmayquwrapeczikihtvdxm
|
||||
fonbsmnyquwrapecdifghtvdxl
|
||||
fonbsmjyeuwraseczikghtvdxo
|
||||
fonbvvjyquwrapeczikghtvdxi
|
||||
fonbsmjyquwrapeczbkghtorxl
|
||||
tonbsmjyqvwrapeczikghtvdcl
|
||||
fonbsmjyquwrapeczhkgbtvdkl
|
||||
fonqsmjyquwrapenzibghtvdxl
|
||||
fontsmeyqudrapeczikghtvdxl
|
||||
qonbsmjyauwrapeczikghtvdbl
|
||||
fynbsmjyluwrapeczekghtvdxl
|
||||
fonbsmjhquwrappczikghtvdxt
|
||||
conbsmjyquwrapeczikahtvdxz
|
||||
fonbsmjyquorapeczikvftvdxl
|
||||
fonbsriyquwrapeczikchtvdxl
|
||||
yonfsmjyquwrapeczikghtvdxq
|
||||
fonaomjyquwrapecziwghtvdxl
|
||||
fonbsxsyqdwrapeczikghtvdxl
|
||||
fonbsqjyouwrapeczikgltvdxl
|
||||
fonbstsyquwraleczikghtvdxl
|
||||
fonbsmjyquwraoecztkghtvdsl
|
||||
fonbsmjyquwrapezzjkghmvdxl
|
||||
fonbwmjyqnwrapecpikghtvdxl
|
||||
fonbsmvyqbwrapeczikghtvdsl
|
||||
fonbsijyquwrazeczikghtvdwl
|
||||
fonbsmjyouwrapewzikghtldxl
|
||||
xonbsmjyqcwrapeczikghtvdul
|
||||
fonbgmjxquwrajeczikghtvdxl
|
||||
fokbsmjyquwrapechikghtrdxl
|
||||
fonbqmjyqawrapeczikghtrdxl
|
||||
fonbwmjzquwtapeyzikghtvdxl
|
||||
fonbsmjyquwrapecdikgatvdnl
|
||||
fonbsmjyqowrkpeczikghtvdxj
|
||||
fonbsmjyquwkapejzikuhtvdxl
|
||||
fonbsmjyquwrabeozikghtmdxl
|
||||
fonbsijyeuwrapeczikghtvdxh
|
||||
fonbsmjhquprapeczizghtvdxl
|
||||
fonesmjyquwrapcczikghtvdxh
|
||||
fonbamjyquwrapeczifrhtvdxl
|
||||
foabsmjyquwpapeczikghtvdxs
|
||||
fonbsmjyquwrapeczukghivdxh
|
||||
fonbsejyoulrapeczikghtvdxl
|
||||
fonbsmjyquwraceczikgdmvdxl
|
||||
eonbsmjyquerppeczikghtvdxl
|
||||
ffnzsmjyquwgapeczikghtvdxl
|
||||
donbsmyyquwrapeczirghtvdxl
|
||||
fjnbsmjyqufrapeczikghtwdxl
|
||||
fonfsmjyquwrareczigghtvdxl
|
||||
fonusmjyquwrapeczikgetvexl
|
||||
tonbsmjyqpwrapeczikghtjdxl
|
||||
fonbsmjhqukkapeczikghtvdxl
|
||||
fonbsmjyqusraseczikghtvzxl
|
||||
fonbsmjyquygapeczxkghtvdxl
|
||||
folbsmjyquwraqeczikghjvdxl
|
||||
fonbsmjyquwrppecjinghtvdxl
|
||||
fonbsmjyquwraepczhkghtvdxl
|
||||
fonbfmjyquwrapeczisghtrdxl
|
||||
fsnbsmjwqubrapeczikghtvdxl
|
||||
fonbspjyquwrapjczikghtedxl
|
||||
fowbsmjyquwrapeczikghtbdbl
|
||||
fonbymjyquwrapeczikghlvdrl
|
||||
fonbsmjyruwrapecbikghtvixl
|
||||
fonyqmjyqufrapeczikghtvdxl
|
||||
focbscjyquwrapeczmkghtvdxl
|
||||
fonbsmjyqtwnkpeczikghtvdxl
|
||||
eonbsmjyquwrameczizghtvdxl
|
||||
zonbsmjyqcwrapeczikghtvhxl
|
||||
foubsmjyquwrapehzikghtvnxl
|
||||
ffnbsmjyquwrapetzikghtjdxl
|
||||
fonbjgjyquwrapkczikghtvdxl
|
||||
fonbwmjyquwqapeczdkghtvdxl
|
||||
forbsmjyquwrapeczikkhtvdml
|
||||
fonbsmjyiuwrapeczivghevdxl
|
||||
fonbsmjyquwrapeglikghwvdxl
|
||||
fopgsmjyquwrapegzikghtvdxl
|
||||
fonbsmjyqzwrajeczikghtldxl
|
||||
fonbsmjyruwrapexzmkghtvdxl
|
||||
fonbsmjyquwrdpeczikxstvdxl
|
||||
fonbsmjyquwrapeezivghtvdql
|
||||
fonbdmjyqujsapeczikghtvdxl
|
||||
@ -0,0 +1,206 @@
|
||||
//
|
||||
// Advent of Code 2018 "Day 2: Inventory Management System"
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class Inventory {
|
||||
var IDarray: [String] = []
|
||||
var IDarrayOfdict: [[Character : Int]] = []
|
||||
var validIDs: [String] = []
|
||||
|
||||
// Supply filename for input ex: '/home/peterr/AOC2018/Sources/AOC2018/data/day02.txt'
|
||||
init(withFile filename: String) {
|
||||
let IDs = Tools.readFile(fromPath: filename)
|
||||
IDarray = IDs.components(separatedBy: "\n")
|
||||
// This gurd statement is just an excuse to use guard
|
||||
// I'm assuming the last string is an empty string, if not DON'T remove the last string
|
||||
guard let lastStr = IDarray.last, lastStr.count == 0 else { return }
|
||||
IDarray.removeLast() // empty string
|
||||
}
|
||||
|
||||
// Supply test data in the form of a String
|
||||
init(withString IDs: String) {
|
||||
IDarray = IDs.components(separatedBy: "\n")
|
||||
}
|
||||
|
||||
func createDictionaryCount(withID ID: String) -> [Character : Int] {
|
||||
var retVal: [Character : Int] = [:]
|
||||
for idChar in ID {
|
||||
|
||||
if let count = retVal[idChar] {
|
||||
retVal[idChar] = count + 1
|
||||
} else {
|
||||
retVal[idChar] = 1
|
||||
}
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
|
||||
func createArrayOfDicts() {
|
||||
for idStr in IDarray {
|
||||
IDarrayOfdict.append( createDictionaryCount(withID: idStr))
|
||||
}
|
||||
}
|
||||
|
||||
func countExactlyNLetters(number: Int) -> Int {
|
||||
var retVal = 0
|
||||
if IDarrayOfdict.count < 1 {
|
||||
createArrayOfDicts()
|
||||
}
|
||||
// Set up new dictionary of combination of all
|
||||
for index in 0..<IDarrayOfdict.count {
|
||||
for (_, count) in IDarrayOfdict[index] {
|
||||
if count == number {
|
||||
retVal += 1
|
||||
validIDs.append(IDarray[index])
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
|
||||
func computeChecksum() -> Int {
|
||||
let twos = countExactlyNLetters(number: 2)
|
||||
let threes = countExactlyNLetters(number: 3)
|
||||
return twos * threes
|
||||
}
|
||||
|
||||
// Find IDs that differ by only one character at the identical location
|
||||
// Use a diff filter on the output of 'zip' (zip : Creates a sequence of pairs built out of two underlying sequences)
|
||||
// Only add the indicies of the IDs if there is only one diff
|
||||
func determineListOfCandidates() -> (box1: Int, box2: Int) {
|
||||
var retVal: (box1: Int, box2: Int) = (0,0)
|
||||
var difference: [(Character, Character)] = []
|
||||
for index in 0..<IDarray.count-1 {
|
||||
for inner in index+1..<IDarray.count {
|
||||
difference = zip(IDarray[index], IDarray[inner]).filter{ $0 != $1 }
|
||||
if difference.count == 1 {
|
||||
retVal = (index, inner)
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
}
|
||||
|
||||
class Day02: AOCDay {
|
||||
lazy var tests: (() -> ()) = day02Tests
|
||||
lazy var final: (() -> ()) = day02Final
|
||||
|
||||
let testString = """
|
||||
abcdef
|
||||
bababc
|
||||
abbcde
|
||||
abcccd
|
||||
aabcdd
|
||||
abcdee
|
||||
ababab
|
||||
"""
|
||||
let testStringPart2 = """
|
||||
abcde
|
||||
fghij
|
||||
klmno
|
||||
pqrst
|
||||
fguij
|
||||
axcye
|
||||
wvxyz
|
||||
"""
|
||||
|
||||
func testInventoryInitWithFile() {
|
||||
let inv = Inventory(withFile: "/home/peterr/AOC2018/Sources/AOC2018/data/day02.txt")
|
||||
XCTAssertEqual(test: "testInventoryInitWithFile count", withExpression: (inv.IDarray.count == 250))
|
||||
XCTAssertEqual(test: "testInventoryInitWithFile [3]", withExpression: (inv.IDarray[3] == "fonwsmjyquwrapeczikghttdpl"))
|
||||
if let lastString = inv.IDarray.last {
|
||||
XCTAssertEqual(test: "testInventoryInitWithFile [last]", withExpression: (lastString == "fonbdmjyqujsapeczikghtvdxl"))
|
||||
}
|
||||
}
|
||||
|
||||
// abcdef contains no letters that appear exactly two or three times.
|
||||
// bababc contains two a and three b, so it counts for both.
|
||||
// abbcde contains two b, but no letter appears exactly three times.
|
||||
// abcccd contains three c, but no letter appears exactly two times.
|
||||
// aabcdd contains two a and two d, but it only counts once.
|
||||
// abcdee contains two e.
|
||||
// ababab contains three a and three b, but it only counts once.
|
||||
func testInventoryInitWithString() {
|
||||
let inv = Inventory(withString: testString)
|
||||
XCTAssertEqual(test: "testInventoryInitWithString count", withExpression: (inv.IDarray.count == 7))
|
||||
XCTAssertEqual(test: "testInventoryInitWithString [3]", withExpression: (inv.IDarray[3] == "abcccd"))
|
||||
if let lastString = inv.IDarray.last {
|
||||
XCTAssertEqual(test: "testInventoryInitWithString [last]", withExpression: (lastString == "ababab"))
|
||||
}
|
||||
}
|
||||
|
||||
func testCreateDictionaryCount() {
|
||||
let inv = Inventory(withString: testString)
|
||||
var dict = inv.createDictionaryCount(withID: inv.IDarray[0])
|
||||
XCTAssertEqual(test: "testCreateDictionaryCount [0][a]", withExpression: (dict["a"] == 1))
|
||||
dict = inv.createDictionaryCount(withID: inv.IDarray[1])
|
||||
XCTAssertEqual(test: "testCreateDictionaryCount [1][a]", withExpression: (dict["a"] == 2))
|
||||
XCTAssertEqual(test: "testCreateDictionaryCount [1][b]", withExpression: (dict["b"] == 3))
|
||||
dict = inv.createDictionaryCount(withID: inv.IDarray[6])
|
||||
XCTAssertEqual(test: "testCreateDictionaryCount [6][a]", withExpression: (dict["a"] == 3))
|
||||
XCTAssertEqual(test: "testCreateDictionaryCount [6][b]", withExpression: (dict["b"] == 3))
|
||||
}
|
||||
|
||||
func testCreateArrayOfDicts() {
|
||||
let inv = Inventory(withString: testString)
|
||||
inv.createArrayOfDicts() //inv.IDarrayOfdict[][]
|
||||
|
||||
XCTAssertEqual(test: "testCreateArrayOfDicts count", withExpression: (inv.IDarrayOfdict.count == 7))
|
||||
if inv.IDarrayOfdict.count > 6 {
|
||||
XCTAssertEqual(test: "testCreateArrayOfDicts [0][a]", withExpression: (inv.IDarrayOfdict[0]["a"] == 1))
|
||||
XCTAssertEqual(test: "testCreateArrayOfDicts [1][a]", withExpression: (inv.IDarrayOfdict[1]["a"] == 2))
|
||||
XCTAssertEqual(test: "testCreateArrayOfDicts [1][b]", withExpression: (inv.IDarrayOfdict[1]["b"] == 3))
|
||||
XCTAssertEqual(test: "testCreateArrayOfDicts [6][a]", withExpression: (inv.IDarrayOfdict[6]["a"] == 3))
|
||||
XCTAssertEqual(test: "testCreateArrayOfDicts [6][b]", withExpression: (inv.IDarrayOfdict[6]["b"] == 3))
|
||||
}
|
||||
}
|
||||
|
||||
func testCountExactlyNLetters() {
|
||||
let inv = Inventory(withString: testString)
|
||||
let twos = inv.countExactlyNLetters(number: 2)
|
||||
XCTAssertEqual(test: "testCountExactlyNLetters 2", withExpression: (twos == 4))
|
||||
let threes = inv.countExactlyNLetters(number: 3)
|
||||
XCTAssertEqual(test: "testCountExactlyNLetters 3", withExpression: (threes == 3))
|
||||
}
|
||||
|
||||
func testComputeChecksum() {
|
||||
let inv = Inventory(withString: testString)
|
||||
let checksum = inv.computeChecksum()
|
||||
XCTAssertEqual(test: "testComputeChecksum", withExpression: (checksum == 12))
|
||||
}
|
||||
|
||||
func testDetermineListOfCandidates() {
|
||||
let inv = Inventory(withString: testStringPart2)
|
||||
let candidate = inv.determineListOfCandidates()
|
||||
XCTAssertEqual(test: "testDetermineListOfCandidates", withExpression: (candidate == (1, 4)))
|
||||
}
|
||||
|
||||
func day02Tests() {
|
||||
testInventoryInitWithFile()
|
||||
testInventoryInitWithString()
|
||||
testCreateDictionaryCount()
|
||||
testCreateArrayOfDicts()
|
||||
testCountExactlyNLetters()
|
||||
testComputeChecksum()
|
||||
testDetermineListOfCandidates()
|
||||
}
|
||||
|
||||
func day02Final() {
|
||||
// let retVal = "None"
|
||||
let inv = Inventory(withFile: "/home/peterr/AOC2018/Sources/AOC2018/data/day02.txt")
|
||||
let checksum = inv.computeChecksum()
|
||||
let ID = inv.determineListOfCandidates()
|
||||
print("Answer to part 1 is: \(checksum)")
|
||||
|
||||
var answer = ""
|
||||
let answerChars = zip(inv.IDarray[ID.box1], inv.IDarray[ID.box2]).filter{ $0 == $1 }
|
||||
for tuple in answerChars {
|
||||
answer.append(tuple.0)
|
||||
}
|
||||
print("Answer to part 2 is: \(answer)")
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue