コード例 #1
0
 def test_with_input(self):
     lines = read_input_lines(16)
     self.assertEqual(part_2(lines), 1053686852011)
コード例 #2
0
 def test_with_input(self):
     lines = utils.read_input_lines(12)
     self.assertEqual(part_2(lines), 29401)
コード例 #3
0
 def test_with_input(self):
     layout = utils.read_input_lines(11)
     self.assertEqual(part_2(layout), 2259)
コード例 #4
0
 def test_with_input(self):
     lines = utils.read_input_lines(4)
     self.assertEqual(day4.part1.count_valid_passports(lines), 242)
コード例 #5
0
 def test_with_input(self):
     program = read_input_lines(14)
     self.assertEqual(part_2(program), 3608464522781)
コード例 #6
0
 def test_with_input(self):
     lines = utils.read_input_lines(7)
     self.assertEqual(day7.part_2(lines), 57281)
コード例 #7
0
 def test_with_input(self):
     joltages = utils.read_input_lines(10)
     self.assertEqual(day10.part_1(joltages), 2310)
コード例 #8
0
 def test_with_input(self):
     lines = utils.read_input_lines(2)
     self.assertEqual(day2.part_2_valid_passwords(lines), 699)
コード例 #9
0
 def test_with_input(self):
     lines = read_input_lines(20)
     self.assertEqual(part_1(lines), 15670959891893)
コード例 #10
0
 def test_with_input(self):
     lines = utils.read_input_lines(8)
     self.assertEqual(day8.part_2(lines), 552)
コード例 #11
0
 def test_with_input(self):
     lines = read_input_lines(22)
     self.assertEqual(part_1(lines), 31455)
コード例 #12
0
from utils import read_input_lines

INPUT = read_input_lines(14)
コード例 #13
0
 def test_with_input(self):
     lines = read_input_lines(18)
     self.assertEqual(sum(part_2(line) for line in lines), 20394514442037)
コード例 #14
0
 def test_with_input(self):
     lines = read_input_lines(18)
     self.assertEqual(sum(part_1(line) for line in lines), 650217205854)
コード例 #15
0
 def test_with_input(self):
     lines = read_input_lines(17)
     self.assertEqual(part_2(lines), 1884)
コード例 #16
0
 def test_with_input(self):
     lines = utils.read_input_lines(9)
     self.assertEqual(day9.part_1(lines, 25), 26134589)
コード例 #17
0
 def test_with_input(self):
     lines = read_input_lines(21)
     self.assertEqual(part_2(lines),
                      "rhvbn,mmcpg,kjf,fvk,lbmt,jgtb,hcbdb,zrb")
コード例 #18
0
 def test_with_input(self):
     invalid_number = 26134589
     lines = utils.read_input_lines(9)
     self.assertEqual(day9.part_2(lines, invalid_number), 3535124)
コード例 #19
0
from typing import Tuple, Dict

from utils import read_input_lines

INPUT = read_input_lines('day3')

Point = Tuple[int, int]
WirePoints = Dict[Point, int]


def part1(wire1: WirePoints, wire2: WirePoints) -> int:
    def dist(point: Point) -> int:
        x, y = point
        return abs(x) + abs(y)
    
    return min(map(dist, set(wire1.keys()).intersection(wire2)))


def part2(wire1: WirePoints, wire2: WirePoints) -> int:
    return min(wire1[point] + wire2[point] for point in set(wire1.keys()).intersection(wire2.keys()))


def get_wire_points(wire_str: str) -> WirePoints:
    points = {}
    x = 0
    y = 0
    i_step = 0

    for step in wire_str.split(','):
        direction = step[0]
        dist = int(step[1:])
コード例 #20
0
 def test_with_input(self):
     lines = read_input_lines(24)
     self.assertEqual(part_2(lines), 3831)
コード例 #21
0
 def test_with_input(self):
     joltages = utils.read_input_lines(10)
     self.assertEqual(day10.part_2(joltages), 64793042714624)
コード例 #22
0
import re
from typing import List

import numpy as np

from utils import read_input_lines, test_case

INPUT = read_input_lines('day12')


def parse_input(inp: List[str]) -> np.ndarray:
    l = []
    for line in inp:
        x, y, z = map(int, re.findall(r'-?\d+', line))
        l.append(np.array([x, y, z, 0, 0, 0]))
    
    return np.array(l)


def total_energy(moons: np.ndarray) -> int:
    te = 0
    
    for x, y, z, dx, dy, dz in moons:
        pe = abs(x) + abs(y) + abs(z)
        ke = abs(dx) + abs(dy) + abs(dz)
        te += pe * ke
    
    return te


# @numba.njit
コード例 #23
0
 def test_with_input(self):
     program = read_input_lines(14)
     self.assertEqual(part_1(program), 12610010960049)
コード例 #24
0
 def test_with_input(self):
     lines = read_input_lines(13)
     self.assertEqual(part_1(lines), 259)
コード例 #25
0
from utils import read_input_lines

commands = read_input_lines("day_8_input.txt")


def split_command(cmd):
    tokens = cmd.split()
    command = tokens[0]
    offset = int(tokens[1])
    return (command, offset)


def parse_command_lines(lines):
    return [split_command(c) for c in commands]


def run_commands(cmds):
    acc = 0
    visited_command_ids = set()
    got_into_inifinite_loop = False
    command_offset = 0
    while not got_into_inifinite_loop:
        if command_offset == len(commands):
            print("Finished the program! Yay")
            break
        cmd = cmds[command_offset]
        # print(cmd, command_offset)
        command = cmd[0]
        action = cmd[1]
        visited_command_ids.add(command_offset)
        if command == "nop":
コード例 #26
0
 def test_with_input(self):
     bus_ids = read_input_lines(13)[1]
     self.assertEqual(part_2(bus_ids), 210612924879242)
コード例 #27
0
 def test_with_input(self):
     lines = utils.read_input_lines(6)
     self.assertEqual(day6.part_2(lines), 3550)
コード例 #28
0
 def test_with_input(self):
     entries = [int(n) for n in utils.read_input_lines(1)]
     self.assertEqual(day1.part_2_answer(entries), 162292410)
コード例 #29
0
 def test_with_input(self):
     lines = read_input_lines(25)
     self.assertEqual(part_1(lines), 297257)
コード例 #30
0
from utils import read_input_lines
import copy

seating = read_input_lines('day_11.txt')
for i in range(len(seating)):
    seating[i] = list(seating[i])

print(len(seating))
print(len(seating[0]))


#Part 1
def count_occupied_adjacent_seats(seating_state, row, column):
    row_count = len(seating_state)
    column_count = len(seating_state[0])
    occupied_count = 0

    for r in range(row - 1, row + 2):
        for c in range(column - 1, column + 2):
            #out of bound or "target" place
            if r < 0 or r > row_count - 1 or c < 0 or c > column_count - 1 or (c == column and r == row):
                continue
            
            seat = seating_state[r][c]
            if seat == '#':
                occupied_count += 1

    return occupied_count

example = [['#', '.', '#'],
           ['#', '#', '#'],