def test_answer_part_b(self): result = day04.part_b(util.get_file_contents('day04.txt')) self.assertEqual(result, '9962624')
def test_answer_part_b(self): result = day24.part_b(util.get_file_contents('day24.txt')) self.assertEqual(result, '74850409')
def generate_meson_build_file(paths): template = get_file_contents('meson.template') formatted = ',\n'.join([" '" + p + "'" for p in paths]) script = template.replace('###BENCHMARKS', formatted) set_file_contents('meson.build', script)
def test_answer_part_b(self): result = day11.part_b(util.get_file_contents('day11.txt')) self.assertEqual(result, 'cqkaabcc')
def test_answer_part_a(self): # noqa D102 result = day25.part_a(util.get_file_contents('day25.txt')) self.assertEqual(result, '5744')
def test_answer_part_b(self): result = day07.part_b(util.get_file_contents('day07.txt')) self.assertEqual(result, '14710')
def test_answer_part_b(self): # noqa D102 result = day16.part_b(util.get_file_contents('day16.txt')) self.assertEqual(result, 'hklecbpnjigoafmd')
def test_answer_part_b(self): # noqa D102 result = day17.part_b(util.get_file_contents('day17.txt')) self.assertEqual(result, '28954211')
def part_one(positions): m = median(positions) distances = [abs(pos - m) for pos in positions] fuel_spent = sum(distances) return m, fuel_spent def part_two(positions): # iterate over all positions, determine min cost for all to align there min_cost = None best_pos = 0 for i in range(0, max(positions)): costs = [] for j in range(0, len(positions)): start = abs(positions[j] - i) # sum(1, n) = n(n+1)/2 cost = (start * (start + 1)) / 2 costs.append(cost) if not min_cost or sum(costs) < min_cost: min_cost = sum(costs) best_pos = i return best_pos, min_cost positions = [int(x) for x in get_file_contents('p7.txt')[0].split(',')] pos, fuel_spent = part_one(positions) print(f'Day 7 part 1: alignment position: {pos} | {fuel_spent}') pos, fuel_spent = part_two(positions) print(f'Day 7 part 2: alignment position: {pos} | {fuel_spent}')
def test_answer_part_b(self): result = day10.part_b(util.get_file_contents('day10.txt')) self.assertEqual(result, '4db3799145278dc9f73dcdbc680bd53d')
from util import get_file_contents split_lines = [line.split(' ') for line in get_file_contents('p2.txt')] x = 0 y = 0 for k, v in split_lines: v = int(v) if k == 'forward': x += v elif k == 'down': y += v elif k == 'up': y -= v print(f'Day 2 ({x}, {y}): {x*y}') x = 0 y = 0 aim = 0 for k, v in split_lines: v = int(v) if k == 'forward': x += v y += aim * v elif k == 'down': aim += v elif k == 'up': aim -= v print(f'Day 2 ({x}, {y}): {x * y}')
from util import get_file_contents lines = [int(x) for x in get_file_contents('p1.txt')] s = 0 for i in range(1, len(lines)): if lines[i] > lines[i - 1]: s += 1 print(f'Day 1 part 1: {s}') lines = [int(x) for x in get_file_contents('p1.txt')] sums = [] for i in range(len(lines) - 2): window = lines[i:i + 3] sums.append(sum(window)) s = 0 for i in range(1, len(sums)): if sums[i] > sums[i - 1]: s += 1 print(f'Day 1 part 2: {s}')
def test_answer_part_b(self): result = day20.part_b(util.get_file_contents('day20.txt')) self.assertEqual(result, '786240')
from collections import Counter from util import get_file_contents fish = [int(x) for x in get_file_contents('p6.txt')[0].split(',')] print(f'Initial state: {fish}') def part_one(n): for i in range(1, n + 1): for j in range(0, len(fish)): new_val = fish[j] - 1 if new_val == 0: fish[j] = new_val elif fish[j] == 0: fish.append(8) fish[j] = 6 else: fish[j] = new_val return fish def part_two(n): f = Counter(fish) for i in range(n): new_fish_count = f[0] # increment all ages for i in range(8): f[i] = f[i + 1] f[8] = new_fish_count
def test_answer_part_b(self): result = day15.part_b(util.get_file_contents('day15.txt')) self.assertEqual(result, '15862900')
def get_text(qad, domain, web_dir, wikipedia_dir): local_file = os.path.join( web_dir, qad['Filename']) if domain == 'SearchResults' else os.path.join( wikipedia_dir, qad['Filename']) return UTIL.get_file_contents(local_file, encoding='utf-8')
def test_answer_part_a(self): result = day18.part_a(util.get_file_contents('day18.txt')) self.assertEqual(result, '1061')
def test_answer_part_a(self): # noqa D102 result = day19.part_a(util.get_file_contents('day19.txt')) self.assertEqual(result, 'FEZDNIVJWT')
def test_answer_part_a(self): # noqa D102 result = day16.part_a(util.get_file_contents('day16.txt')) self.assertEqual(result, 'lgpkniodmjacfbeh')
def test_answer_part_b(self): # noqa D102 result = day19.part_b(util.get_file_contents('day19.txt')) self.assertEqual(result, '17200')
def test_answer_part_a(self): result = day11.part_a(util.get_file_contents('day11.txt')) self.assertEqual(result, 'cqjxxyzz')
def test_answer_part_a(self): result = day02.part_a(util.get_file_contents('day02.txt')) self.assertEqual(result, '1606483')
def test_answer_part_b(self): # noqa D102 result = day22.part_b(util.get_file_contents('day22.txt')) self.assertEqual(result, '2512144')
def test_answer_part_a(self): result = day05.part_a(util.get_file_contents('day05.txt')) self.assertEqual(result, '372671')
def test_answer_part_a(self): result = day24.part_a(util.get_file_contents('day24.txt')) self.assertEqual(result, '10723906903')
def test_answer_part_b(self): result = day05.part_b(util.get_file_contents('day05.txt')) self.assertEqual(result, '25608480')
def test_answer_part_b(self): result = day03.part_b(util.get_file_contents('day03.txt')) self.assertEqual(result, '369601')
def test_answer_part_b(self): result = day12.part_b(util.get_file_contents('day12.txt')) self.assertEqual(result, '87842')
from collections import OrderedDict from util import get_file_contents lines = get_file_contents('p4.txt') numbers = list(map(int, lines[0].split(','))) class Square: val = None marked = False def __init__(self, val, marked): self.val = val self.marked = marked def __str__(self): return str(self.val) + ' [x]' if self.marked else ' []' def is_winning(board): # check rows for i in range(len(board)): if all([square.marked for square in board[i]]): return True # check cols, transpose board to compare cols cols = list(zip(*board)) for j in range(len(cols)): if all([square.marked for square in cols[j]]): print('Col winner! {cols[j]}') return True
def test_answer_part_a(self): result = day04.part_a(util.get_file_contents('day04.txt')) self.assertEqual(result, '282749')