def test_text_init(self):
        "Test the Elves object creation from text"

        # 1. Create Elves object from text
        myobj = elves.Elves(text=aoc_19.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 1)
        self.assertEqual(myobj.number, 5)
        self.assertEqual(len(myobj.elves), 5)

        # 3. Check methods
        self.assertEqual(myobj.on_left(1), 2)
        self.assertEqual(myobj.on_left(2), 3)
        self.assertEqual(myobj.on_left(3), 4)
        self.assertEqual(myobj.on_left(4), 5)
        self.assertEqual(myobj.on_left(5), 1)

        self.assertEqual(myobj.across(1, 5), 3)

        myobj.takes(1, 2)
        myobj.takes(3, 4)
        myobj.takes(5, 1)
        self.assertEqual(myobj.on_left(3), 5)
        myobj.takes(3, 5)
        self.assertEqual(myobj.presents(3), 5)
    def test_part_one(self):
        "Test part one example of Elves object"

        # 1. Create Elves object from text
        myobj = elves.Elves(text=aoc_19.from_text(PART_ONE_TEXT))

        # 2. Check the part one result
        self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
    def test_part_two(self):
        "Test part two example of Elves object"

        # 1. Create Elves object from text
        myobj = elves.Elves(part2=True, text=aoc_19.from_text(PART_TWO_TEXT))

        # 2. Check the part two result
        self.assertEqual(myobj.part_two(verbose=False), PART_TWO_RESULT)
    def test_part_two_science(self):
        "Output the result of a whole bunch of part2 runs"

        for number in range(2, 200):
            myobj = elves.Elves(text=[str(number)])
            two = myobj.party_on_two()
            dude = myobj.party_on_dude()
            #print("%d,%d,%d" % (number, two, dude))
            self.assertEqual(two, dude)
    def test_empty_init(self):
        "Test the default Elves creation"

        # 1. Create default Elves object
        myobj = elves.Elves()

        # 2. Make sure it has the default values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(myobj.text, None)
        self.assertEqual(myobj.number, 0)
        self.assertEqual(len(myobj.elves), 0)
Beispiel #6
0
def part_two(args, input_lines):
    "Process part two of the puzzle"

    # 1. Create the puzzle solver
    solver = elves.Elves(part2=True, text=input_lines)

    # 2. Determine the solution for part two
    solution = solver.part_two(verbose=args.verbose, limit=args.limit)
    if solution is None:
        print("There is no solution")
    else:
        print("The solution for part two is %s" % (solution))

    # 3. Return result
    return solution is not None