Ejemplo n.º 1
0
	def test_answer_part_b(self):
		result = day04.part_b(util.get_file_contents('day04.txt'))
		self.assertEqual(result, '9962624')
Ejemplo n.º 2
0
 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)
Ejemplo n.º 4
0
 def test_answer_part_b(self):
     result = day11.part_b(util.get_file_contents('day11.txt'))
     self.assertEqual(result, 'cqkaabcc')
Ejemplo n.º 5
0
 def test_answer_part_a(self):  # noqa D102
     result = day25.part_a(util.get_file_contents('day25.txt'))
     self.assertEqual(result, '5744')
Ejemplo n.º 6
0
 def test_answer_part_b(self):
     result = day07.part_b(util.get_file_contents('day07.txt'))
     self.assertEqual(result, '14710')
Ejemplo n.º 7
0
 def test_answer_part_b(self):  # noqa D102
     result = day16.part_b(util.get_file_contents('day16.txt'))
     self.assertEqual(result, 'hklecbpnjigoafmd')
Ejemplo n.º 8
0
 def test_answer_part_b(self):  # noqa D102
     result = day17.part_b(util.get_file_contents('day17.txt'))
     self.assertEqual(result, '28954211')
Ejemplo n.º 9
0
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}')
Ejemplo n.º 10
0
 def test_answer_part_b(self):
     result = day10.part_b(util.get_file_contents('day10.txt'))
     self.assertEqual(result, '4db3799145278dc9f73dcdbc680bd53d')
Ejemplo n.º 11
0
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}')
Ejemplo n.º 12
0
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}')
Ejemplo n.º 13
0
 def test_answer_part_b(self):
     result = day20.part_b(util.get_file_contents('day20.txt'))
     self.assertEqual(result, '786240')
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
	def test_answer_part_b(self):
		result = day15.part_b(util.get_file_contents('day15.txt'))
		self.assertEqual(result, '15862900')
Ejemplo n.º 16
0
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')
Ejemplo n.º 17
0
 def test_answer_part_a(self):
     result = day18.part_a(util.get_file_contents('day18.txt'))
     self.assertEqual(result, '1061')
Ejemplo n.º 18
0
 def test_answer_part_a(self):  # noqa D102
     result = day19.part_a(util.get_file_contents('day19.txt'))
     self.assertEqual(result, 'FEZDNIVJWT')
Ejemplo n.º 19
0
 def test_answer_part_a(self):  # noqa D102
     result = day16.part_a(util.get_file_contents('day16.txt'))
     self.assertEqual(result, 'lgpkniodmjacfbeh')
Ejemplo n.º 20
0
 def test_answer_part_b(self):  # noqa D102
     result = day19.part_b(util.get_file_contents('day19.txt'))
     self.assertEqual(result, '17200')
Ejemplo n.º 21
0
 def test_answer_part_a(self):
     result = day11.part_a(util.get_file_contents('day11.txt'))
     self.assertEqual(result, 'cqjxxyzz')
Ejemplo n.º 22
0
 def test_answer_part_a(self):
     result = day02.part_a(util.get_file_contents('day02.txt'))
     self.assertEqual(result, '1606483')
Ejemplo n.º 23
0
 def test_answer_part_b(self):  # noqa D102
     result = day22.part_b(util.get_file_contents('day22.txt'))
     self.assertEqual(result, '2512144')
Ejemplo n.º 24
0
 def test_answer_part_a(self):
     result = day05.part_a(util.get_file_contents('day05.txt'))
     self.assertEqual(result, '372671')
Ejemplo n.º 25
0
 def test_answer_part_a(self):
     result = day24.part_a(util.get_file_contents('day24.txt'))
     self.assertEqual(result, '10723906903')
Ejemplo n.º 26
0
 def test_answer_part_b(self):
     result = day05.part_b(util.get_file_contents('day05.txt'))
     self.assertEqual(result, '25608480')
Ejemplo n.º 27
0
 def test_answer_part_b(self):
     result = day03.part_b(util.get_file_contents('day03.txt'))
     self.assertEqual(result, '369601')
Ejemplo n.º 28
0
 def test_answer_part_b(self):
     result = day12.part_b(util.get_file_contents('day12.txt'))
     self.assertEqual(result, '87842')
Ejemplo n.º 29
0
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
Ejemplo n.º 30
0
	def test_answer_part_a(self):
		result = day04.part_a(util.get_file_contents('day04.txt'))
		self.assertEqual(result, '282749')