Beispiel #1
0
def parse_data_into_groups(data_path):
    answer_groups = []
    current_group = []
    for line in read_lines(data_path):
        if line != "\n":
            current_group.append(line.strip())
        else:
            answer_groups.append(AnswerGroup(current_group))
            current_group = []
    answer_groups.append(AnswerGroup(current_group))
    return answer_groups
Beispiel #2
0
def get_passports(input_path):
    passport_list = []
    passport = ""
    for line in read_lines(input_path):
        if line == "\n":
            passport_list.append(passport)
            passport = ""
        else:
            passport += " " + line.strip()

    # put the last passport in!
    passport_list.append(passport)

    return passport_list
Beispiel #3
0
def get_num_valid_passwords(pw_validator):
    num_valid = 0
    for line in read_lines("day2/day2.txt"):
        if check_password_string(line, pw_validator):
            num_valid += 1
    print(num_valid)
Beispiel #4
0
        if direction in FORWARD_CHARS:
            low = midpoint
        else:
            high = midpoint
    return low


def get_seat_id(directions):
    row = use_coords(directions[:7], "row")
    col = use_coords(directions[7:], "col")
    seat_id = row * 8 + col
    # print(f"row: {row}, col: {col}, id: {seat_id}")
    return seat_id


assert get_seat_id("BFFFBBFRRR") == 567
assert get_seat_id("FFFBBBFRRR") == 119
assert get_seat_id("BBFFBBFRLL") == 820

seat_ids = {
    seat_id
    for seat_id in
    [get_seat_id(seat.strip()) for seat in read_lines("day5/data.txt")]
}

print("highest seat id", max(seat_ids))

for i in range(min(seat_ids), max(seat_ids)):
    if i not in seat_ids:
        print(f"your seat is {i}!")
Beispiel #5
0
        row_num = 0
        col_num = 0

        while row_num < self.map_height:
            if self.tree_map[row_num][col_num] == self.TREE_CHAR:
                self.num_trees += 1
            row_num += self.move_down
            col_num = (col_num + self.move_right) % self.map_width

        return self.num_trees


multiply_slopes = [[1, 1], [1, 3], [1, 5], [1, 7], [2, 1]]

test_map_panel = []
for line in read_lines("day3/test.txt"):
    test_map_panel.append([space for space in line.strip()])

test_traversal = MapTraversal(test_map_panel, 1, 3)
assert test_traversal.run() == 7

test_results = [
    MapTraversal(test_map_panel, x, y).run() for [x, y] in multiply_slopes
]
assert reduce(mul, test_results) == 336

part_1_map_panel = []
for line in read_lines("day3/day3.txt"):
    part_1_map_panel.append([space for space in line.strip()])

part_1_traversal = MapTraversal(part_1_map_panel, 1, 3)
Beispiel #6
0
def run(datapath, seat_selection_method):
    data = [list(seats.strip()) for seats in read_lines(datapath)]
    final = get_final_arrangement(data, seat_selection_method)
    return get_num_occupied_seats(final)
Beispiel #7
0
def compose_bag_dict(datapath):
    bag_dict = {}
    for line in read_lines(datapath):
        bag_type, bags_inside = get_bag_name_and_contents(line.strip())
        bag_dict[bag_type] = bags_inside
    return bag_dict