Ejemplo n.º 1
0
def load_instructions(filename, script=__file__):
    for line in load(filename, script=script):
        left, right = line.split(' = ')
        if left == 'mask':
            yield 'mask', right
        else:
            yield int(re.match(r'^mem\[(\d+)\]$', left).group(1)), int(right)
Ejemplo n.º 2
0
def part1(filename):
    instructions_list = [
        line.split(',') for line in load(filename, script=__file__)
    ]
    intersections = set.intersection(*[
        set(wire_positions(instructions)) for instructions in instructions_list
    ])
    return closest_to_zero_by_manhattan(intersections)
Ejemplo n.º 3
0
def load_distances(filename, script=__file__):
    inputs = [
        re.match(r'(.*) to (.*) = (.*)', line).groups()
        for line in load(filename, script=script)
    ]
    distances = {}
    for a, b, dist in inputs:
        distances[a, b] = distances[b, a] = int(dist)
    return distances
Ejemplo n.º 4
0
def load_multiline(filename, script=__file__):
    lines = []
    for line in load(filename, script=script):
        if line:
            lines.append(line)
        else:
            yield lines
            lines = []
    if lines:
        yield lines
Ejemplo n.º 5
0
def part2(filename):
    instructions_list = [
        line.split(',') for line in load(filename, script=__file__)
    ]
    intersections = dict.fromkeys(
        set.intersection(*[
            set(wire_positions(instructions))
            for instructions in instructions_list
        ]), 0)
    for instructions in instructions_list:
        for dist, coord in enumerate(wire_positions(instructions), 1):
            if coord in intersections:
                intersections[coord] += dist
    return min(intersections.values())
Ejemplo n.º 6
0
def solve(filename, extra_check):
    start, end = map(int, load(filename, script=__file__)[0].split('-', 2))
    return sum(
        is_sorted(s) and extra_check(s, 2)
        for s in map(str, range(start, end + 1)))
Ejemplo n.º 7
0
def load_steps(filename, script=__file__):
    return load(filename, script=__file__)[0]
Ejemplo n.º 8
0
def load_secret(filename, script=__file__):
  return load(filename, script=script)[0]
Ejemplo n.º 9
0
def load_dirs(filename, script=__file__):
    return [(line[0], int(line[1:])) for line in load(filename, script=script)]
Ejemplo n.º 10
0
def load_math(filename, script=__file__):
    return [
        re.split(r' +',
                 re.sub(r'([()])', r' \1 ', line).strip())
        for line in load(filename, script=script)
    ]
Ejemplo n.º 11
0
def solve(filename, script):
    memory = load_memory(filename, script=__file__)
    input = parse_input(load(script, script=__file__))
    return execute_springdroid(memory, input)
Ejemplo n.º 12
0
def load_regex(filename, regex, script=__file__):
    return [
        re.match(regex, line).groups()
        for line in load(filename, script=script)
    ]
Ejemplo n.º 13
0
def load_grid(filename, script=__file__):
    return [[c for c in line] for line in load(filename, script=script)]
Ejemplo n.º 14
0
def part1(filename):
    lines = load(filename, script=__file__)
    return max(map(seat_id, lines))
Ejemplo n.º 15
0
def load_csv_ints(filename, script=__file__):
    return [
        int(token) for line in load(filename, script=script)
        for token in line.split(',')
    ]
Ejemplo n.º 16
0
def part2(filename):
    lines = load(filename, script=__file__)
    seats = set(map(seat_id, lines))
    for seat in range(min(seats) + 1, max(seats)):
        if seat not in seats:
            return seat
Ejemplo n.º 17
0
def load_orbits(filename, script=__file__):
  return [line.split(')') for line in load(filename, script=script)]
Ejemplo n.º 18
0
def load_commands(filename, regexes=CARD_REGEXES, script=__file__):
  return [match_regexes(line, regexes) for line in load(filename, script=script)]
Ejemplo n.º 19
0
def load_instructions(filename, script=__file__):
  instructions = [line.split(' -> ') for line in load(filename, script=script)]
  return {target: parse_instruction(expression) for expression, target in instructions}
Ejemplo n.º 20
0
def load_digits(filename, script=__file__):
    return [
        int(digit) for line in load(filename, script=script) for digit in line
    ]
Ejemplo n.º 21
0
def load_dimensions(filename, script=__file__):
  return [map(int, line.split('x')) for line in load(filename, script=script)]
Ejemplo n.º 22
0
def load_instructions(filename, script=__file__):
    for line in load(filename, script=script):
        op, amt = line.split(' ')
        yield [op, int(amt)]
Ejemplo n.º 23
0
def load_paths(filename, script=__file__):
    return [parse_path(line) for line in load(filename, script=script)]
Ejemplo n.º 24
0
def load_formulas(filename, script=__file__):
    return {
        i[-1][1]: (i[-1][0], i[:-1])
        for i in (list(map(split_quantity, re.split(', | => ', line)))
                  for line in load(filename, script=script))
    }
Ejemplo n.º 25
0
def load_grid(filename, script=__file__):
    rows = [line for line in load(filename, script=script)]
    return {(x, y): cell
            for y, row in enumerate(rows) for x, cell in enumerate(row)}
Ejemplo n.º 26
0
def load_bodies(filename, script=__file__):
    return [
        Body(*map(int,
                  re.match(r'<x=(.+), y=(.+), z=(.+)>', line).groups()))
        for line in load(filename, script=script)
    ]
Ejemplo n.º 27
0
def load_json(filename, script=__file__):
    return json.loads('\n'.join(load(filename, script=script)))
Ejemplo n.º 28
0
def load_memory(filename, script=__file__):
  return next([int(s) for s in line.split(',')] for line in load(filename, script=script))
Ejemplo n.º 29
0
def load_strings(filename, script=__file__):
    return load(filename, script=script)
Ejemplo n.º 30
0
def load_digits(filename, script=__file__):
    return next(to_digits(line) for line in load(filename, script=script))