def test_processShortStruct(self): grid = processInputFile( os.path.join(os.path.dirname(__file__), "test_input2.txt")) self.assertEqual(len(grid), 9) self.assertEqual(grid[4][3], 1) self.assertEqual(8, countOccupiedIn8(grid, 4, 3))
def test_findYourTicket(self): struct = processInputFile(getInputPath()) self.assertEqual(20, rowIndexAfter(struct, "your ticket")) self.assertEqual([ 131, 103, 109, 67, 127, 97, 89, 79, 163, 59, 73, 83, 61, 107, 53, 193, 167, 101, 71, 197 ], parseTicketFromRowString(struct[21]))
def test_testFile100(self): input_path = os.path.join(os.path.dirname(__file__), "test_input.txt") tiles = processInputFile(input_path) self.assertEqual(10, countBlack(tiles)) for _ in range(100): conway(tiles) self.assertEqual(2208, countBlack(tiles))
def test_processShortStruct2(self): grid = processInputFile( os.path.join(os.path.dirname(__file__), "test_input3.txt")) printGrid(grid) self.assertEqual(len(grid), 3) self.assertEqual(grid[1][1], 1) self.assertEqual(1, countOccupiedIn8(grid, 1, 0))
def test_loadRealFile(self): ruleStruct, messages = processInputFile( getInputPath() ) self.assertEqual(130,len(ruleStruct)) self.assertEqual(259,len(messages)) self.assertEqual(True, canIMatchThisStringForThisRule("b",12,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("a",106,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("ababbbababaaaaabbbabaaaa",0,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("abaaabaaabaaaaaaaabbaaab",0,{},ruleStruct))
def test_loadShortFile(self): struct = processInputFile( os.path.join(os.path.dirname(__file__), "test_input_2.txt")) self.assertEqual(10, len(struct)) rules, myTicket, otherTickets = parseInputFile(struct) self.assertEqual(3, len(rules)) self.assertEqual([7, 1, 14], myTicket) self.assertEqual([[7, 3, 47], [40, 4, 50], [55, 2, 20], [38, 6, 12]], otherTickets) sum = sumAllBadTicketValues(rules, myTicket, otherTickets) self.assertEqual(71, sum)
def test_testFile(self): input_path = os.path.join(os.path.dirname(__file__), "test_input.txt") tiles = processInputFile(input_path) self.assertEqual(10, countBlack(tiles)) conway(tiles) self.assertEqual(15, countBlack(tiles)) conway(tiles) self.assertEqual(12, countBlack(tiles)) conway(tiles) self.assertEqual(25, countBlack(tiles)) conway(tiles) self.assertEqual(14, countBlack(tiles))
def test_loadFile(self): processInputFile(getInputPath()) # row 0 .###.#.# self.assertEqual(False, isCellActive(0, 0, 0)) self.assertEqual(True, isCellActive(1, 0, 0)) self.assertEqual(True, isCellActive(2, 0, 0)) self.assertEqual(True, isCellActive(3, 0, 0)) self.assertEqual(False, isCellActive(4, 0, 0)) self.assertEqual(True, isCellActive(5, 0, 0)) self.assertEqual(False, isCellActive(6, 0, 0)) self.assertEqual(True, isCellActive(7, 0, 0)) # row 5 ######## self.assertEqual(True, isCellActive(0, 5, 0)) self.assertEqual(True, isCellActive(1, 5, 0)) self.assertEqual(True, isCellActive(2, 5, 0)) self.assertEqual(True, isCellActive(3, 5, 0)) self.assertEqual(True, isCellActive(4, 5, 0)) self.assertEqual(True, isCellActive(5, 5, 0)) self.assertEqual(True, isCellActive(6, 5, 0)) self.assertEqual(True, isCellActive(7, 5, 0)) self.assertEqual((0, 0, 0, 7, 7, 0), getBoundingBox()) self.assertEqual(41, countActive())
def test_loadTestFile(self): tiles = processInputFile( os.path.join(os.path.dirname(__file__), "test_input_2.txt")) puzzle = checkAllPossibleArrangementsOf(tiles) n = 3 outputArray = [['_' for i in range(n * 8)] for j in range(n * 8)] i = 0 for r in range(n): for c in range(n): tile = puzzle['fitted'][i] orientation = puzzle['fittedOrientation'][i] writeAt(outputArray, r * 8, c * 8, tile, orientation) i = i + 1 writeImageToFile(outputArray)
def test_parseRule(self): struct = processInputFile(getInputPath()) rule = parseFieldRuleFromRow(struct, 0) self.assertEqual(len(rule), 5) self.assertEqual(rule[1], 37) self.assertEqual(rule[2], 594) self.assertEqual(rule[3], 615) self.assertEqual(rule[4], 952) self.assertEqual(False, isNumberValidForRule(rule, 36)) self.assertEqual(True, isNumberValidForRule(rule, 37)) self.assertEqual(True, isNumberValidForRule(rule, 500)) self.assertEqual(False, isNumberValidForRule(rule, 600)) self.assertEqual(True, isNumberValidForRule(rule, 615)) self.assertEqual(True, isNumberValidForRule(rule, 800)) self.assertEqual(True, isNumberValidForRule(rule, 952)) self.assertEqual(False, isNumberValidForRule(rule, 1000))
def test_loadTestFile(self): ruleStruct, messages = processInputFile( os.path.join(os.path.dirname(__file__),"test_input_2.txt") ) self.assertEqual(6,len(ruleStruct)) self.assertEqual(5,len(messages)) self.assertEqual(ruleStruct[4],[[-1]]) #4: "a" only one option, 'a' self.assertEqual(ruleStruct[5],[[-2]]) #5: "b" only one option, 'b' self.assertEqual(ruleStruct[2],[[4,4],[5,5]])# 2: 4 4 | 5 5 self.assertEqual(messages[0],"ababbb") validMessages = followEveryPath(ruleStruct,0) self.assertEqual(True, "ababbb" in validMessages) self.assertEqual(True, "abbbab" in validMessages) self.assertEqual(False, "aaabbb" in validMessages) self.assertEqual(False, "bababa" in validMessages) self.assertEqual(False, "aaaabbb" in validMessages) count = testAllMessagesAndCountValid(ruleStruct,messages) self.assertEqual(2,count)
def test_loadTestFile(self): ruleStruct, messages = processInputFile( os.path.join(os.path.dirname(__file__),"test_input_2.txt") ) self.assertEqual(6,len(ruleStruct)) self.assertEqual(5,len(messages)) self.assertEqual(ruleStruct[4],[[-1]]) #4: "a" only one option, 'a' self.assertEqual(ruleStruct[5],[[-2]]) #5: "b" only one option, 'b' self.assertEqual(ruleStruct[2],[[4,4],[5,5]])# 2: 4 4 | 5 5 self.assertEqual(messages[0],"ababbb") self.assertEqual(True, canIMatchThisStringForThisRule("ba",3,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("bb",2,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("babb",1,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("a",4,{},ruleStruct)) self.assertEqual(True, canIMatchThisStringForThisRule("b",5,{},ruleStruct)) self.assertEqual(True, testIsMessagesValid(ruleStruct,"ababbb")) self.assertEqual(True, testIsMessagesValid(ruleStruct,"abbbab")) self.assertEqual(False, testIsMessagesValid(ruleStruct,"aaabbb")) self.assertEqual(False, testIsMessagesValid(ruleStruct,"bababa")) self.assertEqual(False, testIsMessagesValid(ruleStruct,"aaaabbb")) count = testAllMessagesAndCountValid(ruleStruct,messages) self.assertEqual(2,count)
def test_loadTestFile(self): filepath = os.path.join(os.path.dirname(__file__), "test_input_2.txt") struct = processInputFile(filepath) self.assertEqual(len(struct), 3) self.assertTrue("dairy" in struct) self.assertTrue("soy" in struct) self.assertTrue("fish" in struct) self.assertEqual(len(struct["dairy"]), 2) dairy0 = struct["dairy"][0] self.assertEqual(len(dairy0), 4) dairy1 = struct["dairy"][1] self.assertEqual(len(dairy1), 4) self.assertEqual(len(struct["fish"]), 2) self.assertEqual(len(struct["soy"]), 1) self.assertEqual(["mxmxvkd"], intersectAllCombinations(struct["dairy"])) self.assertEqual((True, "mxmxvkd"), hasUniqueIngredient("dairy", struct)) self.assertEqual((False, ""), hasUniqueIngredient("fish", struct)) self.assertEqual((False, ""), hasUniqueIngredient("soy", struct)) known = removeKnownAllergens(struct) self.assertEqual(len(known), 3) allClear = [] for key in struct: itemArrays = struct[key] for itemArray in itemArrays: for item in itemArray: assert len(item) == 2 if item[1] == "": allClear.append(item[0]) allClearSet = set(allClear) print(allClearSet) print(len(allClearSet)) processInputFile2(filepath, allClear)
def test_inputFileLength(self): struct = processInputFile(getInputPath()) self.assertEqual(len(struct), 1000)
def test_testFile(self): input_path = os.path.join(os.path.dirname(__file__), "test_input.txt") count = processInputFile(input_path) self.assertEqual(10, count)
def test_inputFileLength(self): struct = processInputFile(getInputPath()) self.assertEqual(len(struct), 90) self.assertFalse(self.checkIfDuplicates(struct))
def test_mainInputFileLength(self): struct = processInputFile( getInputPath() ) self.assertEqual(len(struct),9) #print(list(struct)) self.assertEqual(struct,[(0, 29), (19, 41), (29, 521), (37, 23), (42, 13), (46, 17), (60, 601), (66, 37), (79, 19)])
def test_loadTestFile(self): processInputFile( os.path.join(os.path.dirname(__file__), "test_input_2.txt")) self.assertEqual(False, isCellActive(0, 0, 0)) self.assertEqual(True, isCellActive(1, 0, 0)) self.assertEqual(False, isCellActive(2, 0, 0)) self.assertEqual((0, 0, 0, 2, 2, 0), getBoundingBox()) printBoundingBox() doCycles(1) self.assertEqual((0, 0, -1, 2, 2, 1), getBoundingBox()) printBoundingBox() # After 1 cycle: # z=-1 # #.. # ..# # .#. z = -1 self.assertEqual(True, isCellActive(0, 0, z)) self.assertEqual(False, isCellActive(1, 0, z)) self.assertEqual(False, isCellActive(2, 0, z)) self.assertEqual(False, isCellActive(0, 1, z)) self.assertEqual(False, isCellActive(1, 1, z)) self.assertEqual(True, isCellActive(2, 1, z)) self.assertEqual(False, isCellActive(0, 2, z)) self.assertEqual(True, isCellActive(1, 2, z)) self.assertEqual(False, isCellActive(2, 2, z)) # z=0 # #.# # .## # .#. z = 0 self.assertEqual(True, isCellActive(0, 0, z)) self.assertEqual(False, isCellActive(1, 0, z)) self.assertEqual(True, isCellActive(2, 0, z)) self.assertEqual(False, isCellActive(0, 1, z)) self.assertEqual(True, isCellActive(1, 1, z)) self.assertEqual(True, isCellActive(2, 1, z)) self.assertEqual(True, isCellActive(0, 2, z)) self.assertEqual(False, isCellActive(1, 2, z)) self.assertEqual(True, isCellActive(2, 2, z)) z = +1 # z=1 # #.. # ..# # .#. self.assertEqual(True, isCellActive(0, 0, z)) self.assertEqual(False, isCellActive(1, 0, z)) self.assertEqual(False, isCellActive(2, 0, z)) self.assertEqual(False, isCellActive(0, 1, z)) self.assertEqual(False, isCellActive(1, 1, z)) self.assertEqual(True, isCellActive(2, 1, z)) self.assertEqual(False, isCellActive(0, 2, z)) self.assertEqual(True, isCellActive(1, 2, z)) self.assertEqual(False, isCellActive(2, 2, z)) doCycles(5) self.assertEqual(112, countActive())
def test_inputFileLength(self): struct = processInputFile( os.path.join(os.path.dirname(__file__), "test_input.txt")) self.assertEqual(len(struct), 10)
def test_followShort(self): struct = processInputFile( os.path.join(os.path.dirname(__file__), "test_input.txt")) followCourse(struct)
def test_inputFileLength(self): struct = processInputFile(getInputPath()) self.assertEqual(len(struct), 611) self.assertEqual(len(indicesOfJmps(struct)), 225) self.assertEqual(len(indicesOfNops(struct)), 56)
def test_finNearbyTickets(self): struct = processInputFile(getInputPath()) self.assertEqual(22, rowIndexAfter(struct, "nearby tickets"))
def test_loadFile(self): processInputFile(getInputPath())
def test_loadTestFileCheckTile2(self): tiles = processInputFile( os.path.join(os.path.dirname(__file__), "test_input_2.txt")) self.assertEqual( [2311, 1951, 1171, 1427, 1489, 2473, 2971, 2729, 3079], getTileIDs(tiles)) ## Check second tile 1951 self.assertEqual(1951, tiles[1].getID()) charArrays = tiles[1].getCharsArrays() self.assertEqual(charArrays[0], "#.##...##.") self.assertEqual(charArrays[1], ".#####..#.") self.assertEqual(charArrays[2], "#...##.#..") self.assertEqual(charArrays[3], "##.#..#..#") rCharArrays = tiles[1].getReversedCharsArrays() self.assertEqual(rCharArrays[0], ".##...##.#") self.assertEqual(rCharArrays[1], ".#..#####.") self.assertEqual(rCharArrays[2], "..#.##...#") self.assertEqual(rCharArrays[3], "#..#..#.##") self.assertEqual("1011000110", tiles[0].charToBinStr(charArrays[0])) self.assertEqual("0111110010", tiles[1].charToBinStr(charArrays[1])) self.assertEqual("1000110100", tiles[1].charToBinStr(charArrays[2])) self.assertEqual("1101001001", tiles[1].charToBinStr(charArrays[3])) self.assertEqual("0110001101", tiles[1].charToBinStr(rCharArrays[0])) self.assertEqual("0100111110", tiles[1].charToBinStr(rCharArrays[1])) self.assertEqual("0010110001", tiles[1].charToBinStr(rCharArrays[2])) self.assertEqual("1001001011", tiles[1].charToBinStr(rCharArrays[3])) self.assertEqual(int("1011000110", 2), tiles[1].charStringToInt(charArrays[0])) self.assertEqual(int("0111110010", 2), tiles[1].charStringToInt(charArrays[1])) self.assertEqual(int("1000110100", 2), tiles[1].charStringToInt(charArrays[2])) self.assertEqual(int("1101001001", 2), tiles[1].charStringToInt(charArrays[3])) self.assertEqual(int("0110001101", 2), tiles[1].charStringToInt(rCharArrays[0])) self.assertEqual(int("0100111110", 2), tiles[1].charStringToInt(rCharArrays[1])) self.assertEqual(int("0010110001", 2), tiles[1].charStringToInt(rCharArrays[2])) self.assertEqual(int("1001001011", 2), tiles[1].charStringToInt(rCharArrays[3])) self.assertEqual(710, tiles[1].charStringToInt(charArrays[0])) self.assertEqual(498, tiles[1].charStringToInt(charArrays[1])) self.assertEqual(564, tiles[1].charStringToInt(charArrays[2])) self.assertEqual(841, tiles[1].charStringToInt(charArrays[3])) self.assertEqual(397, tiles[1].charStringToInt(rCharArrays[0])) self.assertEqual(318, tiles[1].charStringToInt(rCharArrays[1])) self.assertEqual(177, tiles[1].charStringToInt(rCharArrays[2])) self.assertEqual(587, tiles[1].charStringToInt(rCharArrays[3])) rotations = tiles[1].getRotations() self.assertEqual(8, len(rotations)) defaultRotation = rotations[0] self.assertEqual(4, len(defaultRotation)) N = 710 E = 498 S = 564 W = 841 rN = 397 rE = 318 rS = 177 rW = 587 self.assertEqual(N, tiles[1].charStringToInt(charArrays[0])) self.assertEqual(E, tiles[1].charStringToInt(charArrays[1])) self.assertEqual(S, tiles[1].charStringToInt(charArrays[2])) self.assertEqual(W, tiles[1].charStringToInt(charArrays[3])) # The 8 cycles should be # N,E,S,W # E,rS,W,rN # rS,rW,rN,rE # rW,N,rE,S # S,rE,N,rW # rE,rN,rW,rS # rN,W,rS,E # W,S,E,N self.assertEqual([N, E, S, W], rotations[0]) self.assertEqual([E, rS, W, rN], rotations[1]) self.assertEqual([rS, rW, rN, rE], rotations[2]) self.assertEqual([rW, N, rE, S], rotations[3]) self.assertEqual([S, rE, N, rW], rotations[4]) self.assertEqual([rE, rN, rW, rS], rotations[5]) self.assertEqual([rN, W, rS, E], rotations[6]) self.assertEqual([W, S, E, N], rotations[7]) # In the correct solution, tile 1951 is rotated to give #564,318,710,587 found = False for i in range(8): lN = tiles[1].getBorderTop(i) lE = tiles[1].getBorderRight(i) lS = tiles[1].getBorderBottom(i) lW = tiles[1].getBorderLeft(i) if (lN == 564): if (lE == 318): if (lS == 710): if (lW == 587): found = True self.assertTrue(found) # 1951 2311 #subsetOfTiles = [] #for tile in tiles: #id = tile.getID() #if id == 1951 or id == 2311 or id == 2729 or id == 1427: #subsetOfTiles.append(tile) #self.assertEqual(4,len(subsetOfTiles)) #checkAllPossibleArrangementsOf(subsetOfTiles) checkAllPossibleArrangementsOf(tiles)
def test_loadFile(self): struct = processInputFile(getInputPath()) self.assertEqual(260, len(struct))
def test_mainInputFileLength(self): struct = processInputFile(getInputPath()) self.assertEqual(len(struct), 10) self.assertEqual(struct[0], 1002461)
def test_mainInputFileLength(self): struct = processInputFile(getInputPath())
def test_loadTestFile(self): tiles = processInputFile( os.path.join(os.path.dirname(__file__), "test_input_2.txt")) self.assertEqual( [2311, 1951, 1171, 1427, 1489, 2473, 2971, 2729, 3079], getTileIDs(tiles)) self.assertEqual(2311, tiles[0].getID()) charArrays = tiles[0].getCharsArrays() self.assertEqual(charArrays[0], "..##.#..#.") self.assertEqual(charArrays[1], "...#.##..#") self.assertEqual(charArrays[2], "..###..###") self.assertEqual(charArrays[3], ".#####..#.") rCharArrays = tiles[0].getReversedCharsArrays() self.assertEqual(rCharArrays[0], ".#..#.##..") self.assertEqual(rCharArrays[1], "#..##.#...") self.assertEqual(rCharArrays[2], "###..###..") self.assertEqual(rCharArrays[3], ".#..#####.") self.assertEqual("0011010010", tiles[0].charToBinStr(charArrays[0])) self.assertEqual("0001011001", tiles[0].charToBinStr(charArrays[1])) self.assertEqual("0011100111", tiles[0].charToBinStr(charArrays[2])) self.assertEqual("0111110010", tiles[0].charToBinStr(charArrays[3])) self.assertEqual("0100101100", tiles[0].charToBinStr(rCharArrays[0])) self.assertEqual("1001101000", tiles[0].charToBinStr(rCharArrays[1])) self.assertEqual("1110011100", tiles[0].charToBinStr(rCharArrays[2])) self.assertEqual("0100111110", tiles[0].charToBinStr(rCharArrays[3])) self.assertEqual(int("0011010010", 2), tiles[0].charStringToInt(charArrays[0])) self.assertEqual(int("0001011001", 2), tiles[0].charStringToInt(charArrays[1])) self.assertEqual(int("0011100111", 2), tiles[0].charStringToInt(charArrays[2])) self.assertEqual(int("0111110010", 2), tiles[0].charStringToInt(charArrays[3])) self.assertEqual(int("0100101100", 2), tiles[0].charStringToInt(rCharArrays[0])) self.assertEqual(int("1001101000", 2), tiles[0].charStringToInt(rCharArrays[1])) self.assertEqual(int("1110011100", 2), tiles[0].charStringToInt(rCharArrays[2])) self.assertEqual(int("0100111110", 2), tiles[0].charStringToInt(rCharArrays[3])) self.assertEqual(210, tiles[0].charStringToInt(charArrays[0])) self.assertEqual(89, tiles[0].charStringToInt(charArrays[1])) self.assertEqual(231, tiles[0].charStringToInt(charArrays[2])) self.assertEqual(498, tiles[0].charStringToInt(charArrays[3])) self.assertEqual(300, tiles[0].charStringToInt(rCharArrays[0])) self.assertEqual(616, tiles[0].charStringToInt(rCharArrays[1])) self.assertEqual(924, tiles[0].charStringToInt(rCharArrays[2])) self.assertEqual(318, tiles[0].charStringToInt(rCharArrays[3])) rotations = tiles[0].getRotations() self.assertEqual(8, len(rotations)) defaultRotation = rotations[0] self.assertEqual(4, len(defaultRotation)) N = 210 E = 89 S = 231 W = 498 rN = 300 rE = 616 rS = 924 rW = 318 self.assertEqual(N, tiles[0].charStringToInt(charArrays[0])) self.assertEqual(E, tiles[0].charStringToInt(charArrays[1])) self.assertEqual(S, tiles[0].charStringToInt(charArrays[2])) self.assertEqual(W, tiles[0].charStringToInt(charArrays[3])) # The 8 cycles should be # N,E,S,W # E,rS,W,rN # rS,rW,rN,rE # rW,N,rE,S # S,rE,N,rW # rE,rN,rW,rS # rN,W,rS,E # W,S,E,N self.assertEqual([N, E, S, W], rotations[0]) self.assertEqual([E, rS, W, rN], rotations[1]) self.assertEqual([rS, rW, rN, rE], rotations[2]) self.assertEqual([rW, N, rE, S], rotations[3]) self.assertEqual([S, rE, N, rW], rotations[4]) self.assertEqual([rE, rN, rW, rS], rotations[5]) self.assertEqual([rN, W, rS, E], rotations[6]) self.assertEqual([W, S, E, N], rotations[7])
def test_testInputFile2(self): struct = processInputFile( os.path.join(os.path.dirname(__file__), "test_input_2.txt")) self.assertEqual(len(struct), 4) self.assertEqual(165, processStruct(struct))
def test_resetWayPointThenTriagle6(self): struct = processInputFile( os.path.join(os.path.dirname(__file__), "test_input_6.txt")) self.assertEqual(0, followCourse(struct))