コード例 #1
0
        return False


def count_matching(messages):
    count = 0
    for message in messages:
        if is_valid(message):
            count += 1

    return count


def solved19(input_data):
    DECODED.clear()
    rules = extract_rules(input_data)
    decode_rules(rules)
    messages = extract_messages(input_data)

    return count_matching(messages)


if __name__ == '__main__':
    test_data = utils.loadStringData("./data/d19_example.txt")
    real_data = utils.loadStringData("./data/d19_real.txt")

    test = solved19(test_data)
    real = solved19(real_data)

    print(utils.OUTPUT_STRING.format("example", test))
    print(utils.OUTPUT_STRING.format("exercise", real))
コード例 #2
0
def calculate_result(order, my_ticket):
    result = 1
    for key in order.keys():
        if key.startswith('departure'):
            result *= my_ticket[order[key]]

    return result


def solved16(input_data):
    rules = extract_rules(input_data)
    tickets = extract_nearby_tickets(input_data)
    valid_tickets = get_valid_tickets(rules, tickets)
    my_ticket = extract_my_ticket(input_data)
    valid_tickets.append(my_ticket)
    field_order = determine_field_order(rules, valid_tickets)

    print(field_order)
    return calculate_result(field_order, my_ticket)


if __name__ == '__main__':
    #test_data = utils.loadStringData("./data/d16_example2.txt")
    real_data = utils.loadStringData("./data/d16_real.txt")

    #test = solved16(test_data)
    real = solved16(real_data)

    #print(utils.OUTPUT_STRING.format("example", test))
    print(utils.OUTPUT_STRING.format("exercise", real))
コード例 #3
0
        if not validate_element(element):
            return False

    return True


def solved04(input_data):
    count = 0

    passports = transform_input_data(input_data)
    for passport in passports:
        if is_passport_valid(passport):
            count += 1

    return count


if __name__ == '__main__':
    valid_test_data = utils.loadStringData("./data/d04_example_p2_valid.txt")
    invalid_test_data = utils.loadStringData(
        "./data/d04_example_p2_invalid.txt")
    real_data = utils.loadStringData("./data/d04_real.txt")

    valid = solved04(valid_test_data)
    invalid = solved04(invalid_test_data)
    real = solved04(real_data)

    print(utils.OUTPUT_STRING.format("example invalid", invalid))
    print(utils.OUTPUT_STRING.format("example valid", valid))
    print(utils.OUTPUT_STRING.format("exercise", real))
コード例 #4
0
    return all_bags


def do_children_have_children(all_bags, children):
    for child in children:
        if len(all_bags.get(child)) > 0:
            return True
    return False


def solved07(input_data):
    MAIN_BAG = 'shiny gold'
    all_bags = extract_bags_tree(input_data)
    count = get_children_count(all_bags, MAIN_BAG)

    return count - 1


if __name__ == '__main__':
    test_data = utils.loadStringData("./data/d07_example.txt")
    test_data2 = utils.loadStringData("./data/d07_example_2.txt")
    real_data = utils.loadStringData("./data/d07_real.txt")

    test = solved07(test_data)
    test2 = solved07(test_data2)
    real = solved07(real_data)

    print(utils.OUTPUT_STRING.format("example 1", test))
    print(utils.OUTPUT_STRING.format("example 2", test2))
    print(utils.OUTPUT_STRING.format("exercise", real))