Example #1
0
 def test_get_aim_position_trace(self):
     expected_trace = [(0, 0, 0), (5, 0, 0), (5, 0, 5), (13, 40, 5),
                       (13, 40, 2), (13, 40, 10), (15, 60, 10)]
     submarine = Submarine("test_data.txt")
     trace = submarine.get_aim_position_trace()
     for idx, trace_point in enumerate(trace):
         with self.subTest(i=idx):
             self.assertEqual(expected_trace[idx], trace_point)
Example #2
0
class BoardSubmarines:
    FIRST_SUBMARINE = Submarine(3)
    FIRST_SUBMARINE_COORDINATES = [(1, 1), (1, 2), (1, 3)]

    SECOND_SUBMARINE = Submarine(3)
    SECOND_SUBMARINE_COORDINATES = [(2, 5), (2, 6), (2, 7)]

    THIRD_SUBMARINE = Submarine(2)
    THIRD_SUBMARINE_COORDINATES = [(9, 7), (9, 8)]

    FOURTH_SUBMARINE = Submarine(4)
    FOURTH_SUBMARINE_COORDINATES = [(4, 8), (5, 8), (6, 8), (7, 8)]

    FIFTH_SUBMARINE = Submarine(5)
    FIFTH_SUBMARINE_COORDINATES = [(7, 1), (7, 2), (7, 3), (7, 4), (7, 5)]
Example #3
0
    def moveSubs(self, timeStep):

        listy = [205, 275, 345, 415, 485, 555, 625, 690, 765]
        for i in range(9):
            if self.subs[i] == None:
                if random() < self.makeProb:
                    y = listy[i]
                    self.subs[i] = Submarine(y, self.win)
            else:
                self.subs[i].submove(timeStep)
                if self.subs[i].offScreen():
                    self.subs[i].undraw()
                    self.subs[i] = None
Example #4
0
#!/usr/bin/env python
# vim:set fileencoding=utf8: #

import sys

from command import Command
from submarine import Submarine

commands = [Command(x) for x in sys.stdin.readlines()]

sub = Submarine()

for c in commands:
    sub.execute_command(c)

print('Part 1 Solution: {}'.format(sub.horizontal() * sub.depth()))

sub = Submarine(True)
for c in commands:
    sub.execute_command(c)

print('Part 2 Solution: {}'.format(sub.horizontal() * sub.depth()))
Example #5
0
def part2(lines: List[str]):
    sub = Submarine().move_lines(lines)
    return sub.pos.horizontal * sub.pos.depth
Example #6
0
 def test_command_list(self):
     submarine = Submarine("test_data.txt")
     command = submarine.commands[1]
     self.assertIsInstance(command, Command)
     self.assertEqual(6, len(submarine.commands))
Example #7
0
 def test_get_aim_position(self):
     submarine = Submarine("input_data.txt")
     horizontal, depth = submarine.get_aim_position()
     self.assertEqual(1947878632, horizontal * depth)
Example #8
0
 def test_get_position_trace(self):
     submarine = Submarine("test_data.txt")
     trace = submarine.get_position_trace()
     self.assertEqual(7, len(trace))
Example #9
0
 def test_solve_day2_puzzle1(self):
     submarine = Submarine("input_data.txt")
     horizontal, depth = submarine.get_position()
     self.assertEqual(1938402, horizontal * depth)
Example #10
0
 def test_get_position(self):
     submarine = Submarine("test_data.txt")
     horizontal, depth = submarine.get_position()
     self.assertEqual(15, horizontal)
     self.assertEqual(10, depth)