コード例 #1
0
    def __init__(self, filename):
        positions = read_input(filename, separator='\n')
        regex = r"x=(-?\d+).+y=(-?\d+).+z=(-?\d+)"
        self.bodies = []

        for body_pos in positions:
            match = re.search(regex, body_pos)
            pos = int(match.group(1)), int(match.group(2)), int(match.group(3))
            self.bodies.append(CelestialBody(pos))
コード例 #2
0
ファイル: day3.py プロジェクト: mpunkenhofer/aoc2019
def main():
    path1, path2 = read_input('input', separator='\n')
    wire1, wire2 = to_points(str.split(path1, ',')), to_points(str.split(path2, ','))

    min_dist = get_min_distance(wire1, wire2)
    print('Answer to Day 3 - Part 1: {}'.format(min_dist))

    min_delay = get_min_delay(wire1, wire2)
    print('Answer to Day 3 - Part 2: {}'.format(min_delay))
コード例 #3
0
ファイル: day1.py プロジェクト: mpunkenhofer/aoc2019
def main():
    # Part day1
    modules = [int(number) for number in read_input('input', '\n')]
    fuel_requirements = [floor(module / 3) - 2 for module in modules]
    total_fuel_requirement = sum(fuel_requirements)
    print('Answer for Part day1: {}'.format(total_fuel_requirement))

    # Part day2
    new_fuel_requirements = [
        calculate_fuel_requirements(module) for module in modules
    ]
    print('Answer for Part day2: {}'.format(sum(new_fuel_requirements)))
コード例 #4
0
ファイル: day16.py プロジェクト: mpunkenhofer/aoc2019
def main():
    output_resolution = 8
    input_signal = list(map(int, read_input('input')))
    signal = fft(input_signal, 21, True)
    print('Answer for Day16 - Part 1: {}'.format(''.join(
        map(str, signal[:output_resolution]))))

    input_signal *= 10000
    offset = int(''.join(map(str, input_signal[:7])))
    signal = fft(input_signal[offset:], 100, True)
    print('Answer for Day16 - Part 2: {}'.format(''.join(
        map(str, signal[:output_resolution]))))
コード例 #5
0
ファイル: day2.py プロジェクト: mpunkenhofer/aoc2019
def main():
    program = list(map(int, read_input(separator=',')))
    memory = program.copy()
    memory[1] = 12
    memory[2] = 2
    memory = run_program(memory)
    print('Answer to Day 2 - Part 1: {}'.format(memory[0]))

    for noun in range(99):
        for verb in range(99):
            memory = program.copy()
            memory[1] = noun
            memory[2] = verb
            memory = run_program(memory)
            if memory[0] == 19690720:
                print('Answer to Day 2 - Part 2: noun {} verb {}; Answer: {}'.
                      format(noun, verb, 100 * noun + verb))
コード例 #6
0
ファイル: day10.py プロジェクト: mpunkenhofer/aoc2019
def main():
    asteroid_map = read_input('test_input4', '\n')
    print('Answer for Day10 - Part 1: {}'.format(
        new_monitor_station(asteroid_map)))
    print('Answer for Day10 - Part 2: {}'.format(
        vaporize_asteroid(asteroid_map, (11, 13), 200)))
コード例 #7
0
 def test_tc0(self):
     asteroid_map = read_input('day10/test_input0', '\n')
     self.assertEqual(new_monitor_station(asteroid_map), ((3, 4), 8))
コード例 #8
0
 def test_tc4(self):
     asteroid_map = read_input('day10/test_input4', '\n')
     self.assertEqual(new_monitor_station(asteroid_map), ((11, 13), 210))
コード例 #9
0
 def test_tc3(self):
     asteroid_map = read_input('day10/test_input3', '\n')
     self.assertEqual(new_monitor_station(asteroid_map), ((6, 3), 41))
コード例 #10
0
 def test_tc2(self):
     asteroid_map = read_input('day10/test_input2', '\n')
     self.assertEqual(new_monitor_station(asteroid_map), ((1, 2), 35))
コード例 #11
0
 def test_tc1(self):
     asteroid_map = read_input('day10/test_input1', '\n')
     self.assertEqual(new_monitor_station(asteroid_map), ((5, 8), 33))
コード例 #12
0
ファイル: test_day16.py プロジェクト: mpunkenhofer/aoc2019
 def test_tc0(self):
     input_signal = list(map(int, read_input('day16/test_input0')))
     signal = fft(input_signal, 4)
     self.assertEqual(''.join(map(str, signal[:8])), '01029498')
コード例 #13
0
ファイル: test_day16.py プロジェクト: mpunkenhofer/aoc2019
 def test_tc2(self):
     input_signal = list(map(int, read_input('day16/test_input2')))
     signal = fft(input_signal, 100)
     self.assertEqual(''.join(map(str, signal[:8])), '73745418')
コード例 #14
0
ファイル: test_day16.py プロジェクト: mpunkenhofer/aoc2019
 def test_tc1(self):
     input_signal = list(map(int, read_input('day16/test_input1')))
     signal = fft(input_signal, 100)
     self.assertEqual(''.join(map(str, signal[:8])), '24176176')
コード例 #15
0
def main():
    reaction_list = read_input('test_input3', '\n')
    reactions = parse_reactions(reaction_list)
    print('Answer for Day11 - Part 1: {}'.format(
        calculate_requirements(reactions, 'FUEL')))
    print('Answer for Day11 - Part 2: {}'.format(2))
コード例 #16
0
ファイル: day6.py プロジェクト: mpunkenhofer/aoc2019
def main():
    orbit_map = read_input('input', separator='\n')
    print('Answer for Day6 - Part 1: {}'.format(calculate_orbits(orbit_map)))
    print('Answer for Day6 - Part 2: {}'.format(
        calculate_min_transfers(orbit_map, 'YOU', 'SAN')))
コード例 #17
0
ファイル: test_day6.py プロジェクト: mpunkenhofer/aoc2019
 def test_tc1(self):
     self.assertEqual(
         calculate_orbits(read_input('day6/test_input1', '\n')), 42)
コード例 #18
0
ファイル: test_day6.py プロジェクト: mpunkenhofer/aoc2019
 def test_tc2(self):
     self.assertEqual(
         calculate_min_transfers(read_input('day6/test_input2', '\n'),
                                 'YOU', 'SAN'), 4)
コード例 #19
0
 def load(filename):
     return list(map(int, read_input(filename=filename, separator=',')))
コード例 #20
0
ファイル: day8.py プロジェクト: mpunkenhofer/aoc2019
def main():
    image_data = list(map(int, read_input()))
    image_width, image_height = 25, 6
    print('Answer for Day7 - Part 1: {}'.format(calculate_checksum(image_data, image_width, image_height)))
    print('Answer for Day7 - Part 2')
    print_image(decode_image(image_data, image_width, image_height), image_width, image_height)
コード例 #21
0
ファイル: test_day16.py プロジェクト: mpunkenhofer/aoc2019
 def test_tc3(self):
     input_signal = list(map(int, read_input('day16/test_input3')))
     signal = fft(input_signal, 100)
     self.assertEqual(''.join(map(str, signal[:8])), '52432133')