Ejemplo n.º 1
0
    def test_that_fabric_counts_overlapping_inches_count(
            self, piece1, piece2, overlapping_inches):
        fabric = Fabric(4, 4)
        fabric.claim(Piece(piece1))
        fabric.claim(Piece(piece2))

        self.assertEqual(overlapping_inches, fabric.overlapping_inches)
Ejemplo n.º 2
0
    def test_that_fabric_counts_overlapping_pieces_2x2(self):
        fabric = Fabric(4, 4)
        fabric.claim(Piece("#1 @ 0,0: 2x2"))
        fabric.claim(Piece("#1 @ 1,1: 2x2"))

        self.assertEqual("\n"
                         "11..\n"
                         "121.\n"
                         ".11.\n"
                         "....\n", fabric.area())
Ejemplo n.º 3
0
 def test_that_it_populates_attributes(self):
     piece = Piece("#1 @ 906,735: 28x17")
     self.assertEqual(1, piece.number)
     self.assertEqual(906, piece.left_offset)
     self.assertEqual(735, piece.top_offset)
     self.assertEqual(28, piece.width)
     self.assertEqual(17, piece.height)
Ejemplo n.º 4
0
    def test_that_fabric_counts_single_piece_2x2_asymmetrical(self):
        piece = Piece("#1 @ 2,1: 2x2")
        fabric = Fabric(4, 4)
        fabric.claim(piece)

        self.assertEqual("\n"
                         "....\n"
                         "..11\n"
                         "..11\n"
                         "....\n", fabric.area())
Ejemplo n.º 5
0
def solve_part_2():
    text_file = open("day03.input.txt", "r")
    pieces = list(map(lambda x: Piece(x), text_file.readlines()))
    text_file.close()

    for piece1 in pieces:
        overlaps = False
        for piece2 in pieces:
            if piece1 == piece2:
                continue
            if piece1.overlaps(piece2):
                overlaps = True
                continue
        if not overlaps:
            print("2. Non-overlapping piece:", piece1.number)
Ejemplo n.º 6
0
def solve_part_1():
    text_file = open("day03.input.txt", "r")
    pieces = list(map(lambda x: Piece(x), text_file.readlines()))
    text_file.close()

    max_width = 0
    max_height = 0
    for piece in pieces:
        if piece.left_offset + piece.width > max_width:
            max_width = piece.left_offset + piece.width
        if piece.top_offset + piece.height > max_height:
            max_height = piece.top_offset + piece.height

    fabric = Fabric(max_width, max_height)
    for piece in pieces:
        fabric.claim(piece)

    print("1. Number of overlapping inches: ", fabric.overlapping_inches)

    out_file = open("day03.out.txt", "w")
    out_file.write(fabric.area())
    out_file.close()
Ejemplo n.º 7
0
    def test_that_fabric_counts_single_piece_1x1(self):
        piece = Piece("#1 @ 0,0: 1x1")
        fabric = Fabric(2, 2)
        fabric.claim(piece)

        self.assertEqual("\n" "1.\n" "..\n", fabric.area())
Ejemplo n.º 8
0
    def test_that_piece_equals_to_itself(self):
        piece = Piece("#1 @ 2,2: 2x2")

        self.assertEqual(True, piece == piece)
Ejemplo n.º 9
0
    def test_that_piece_does_not_overlaps_with_another_piece(self, p1, p2):
        piece1 = Piece(p1)
        piece2 = Piece(p2)

        self.assertEqual(False, piece1.overlaps(piece2))
        self.assertEqual(False, piece2.overlaps(piece1))
Ejemplo n.º 10
0
    def test_that_piece_does_not_overlaps_with_another_piece_wtf(self):
        piece1 = Piece("#1 @ 1,2: 2x3")
        piece2 = Piece("#2 @ 1,0: 2x2")

        self.assertEqual(False, piece1.overlaps(piece2))
Ejemplo n.º 11
0
    def test_that_piece_overlaps_with_another_piece(self, s1, s2):
        piece1 = Piece(s1)
        piece2 = Piece(s2)

        self.assertEqual(True, piece1.overlaps(piece2))
        self.assertEqual(True, piece2.overlaps(piece1))
Ejemplo n.º 12
0
    def test_that_piece_contains_point(self):
        piece = Piece("#1 @ 0,0: 2x2")

        self.assertEqual(True, piece.contains((0, 0)))
Ejemplo n.º 13
0
    def test_that_it_has_corners(self):
        piece = Piece("#1 @ 1,1: 2x3")

        self.assertEqual([(1, 1), (2, 1), (2, 3), (1, 3)], piece.Corners)