示例#1
0
def load(info):
    """Initialize the plugin."""
    info['apiRoot'].spec = spec.Spec()
    info['apiRoot'].graph = graph.Graph()
    ingest()
    GitHub.addScopes(['user:email', 'public_repo'])
    events.bind('oauth.auth_callback.after', 'cis', storeToken)
示例#2
0
        def post(self, src_id):
            '''
            Generate a matrix from the source stored at that ID.
            Returns metadata for that matrix.
            '''
            try:
                posted_data = request.get_json(force=True)
                client = db_client()
                col = db_collection(client, DATALOADER_DB_NAME, DATALOADER_COL_NAME)

                try:
                    src = find_source(col, src_id)

                except IndexError:
                    return 'No resource at that URL.', 404

                error, matricesNew = utils.ingest(posted_data, src)

                if error:
                    return 'Unable to create matrix.', 406

                matrices = []
                for each in src['matrices']:
                    matrices.append(each)
                matrices.extend(matricesNew)
                col.update({'src_id':src_id}, { '$set': {'matrices': matrices} })
            except:
                tb = traceback.format_exc()
                return tb, 406
            return matricesNew, 201
示例#3
0
def solve2():
    data = ingest(INPUT_FILE)
    numbers = [int(n) for n in data]

    TARGET_SUM = 2020

    a, b, c = None, None, None

    for i in range(len(numbers)):
        for j in range(len(numbers)):
            for k in range(len(numbers)):
                if i == j or i == k or j == k:
                    # same index, skip
                    pass
                else:
                    x, y, z = numbers[i], numbers[j], numbers[k]
                    if x + y + z == TARGET_SUM:
                        a, b, c = x, y, z
                        break

    if a is None or b is None or c is None:
        raise Exception('No numbers found that sum to: %s' % TARGET_SUM)
    else:
        answer = a * b * c

    return answer
示例#4
0
def solve1():
    data = ingest(INPUT_FILE)
    hill = data

    m, n = (
        len(hill),  # "height" of hill, rows
        len(hill[0]),  # "width" of hill, columns
    )

    SLOPE = Slope(3, 1)

    num_trees_encountered = 0

    i, j = (0, 0)

    while i < m:
        if hill[i][j] == '#':
            num_trees_encountered += 1

        row = hill[i]

        i += SLOPE.y
        j = (j + SLOPE.x) % n

    answer = num_trees_encountered
    return answer
示例#5
0
def solve2():
    data = ingest(INPUT_FILE)
    entries = data

    pattern = r'(?P<lower>\d+)-(?P<upper>\d+) (?P<letter>[a-z]): (?P<password>[a-z]+)'
    regex = re.compile(pattern)

    num_valid_passwords = 0

    for entry in entries:
        m = regex.match(entry)
        if m is None:
            raise Exception('Entry does not match pattern: %s' % entry)
        else:
            i, j, letter, password = [
                int(m.group('lower')) - 1,
                int(m.group('upper')) - 1,
                m.group('letter'),
                m.group('password'),
            ]

            chars = [password[i], password[j]]
            occurrences = len(list(filter(lambda c: c == letter, chars)))
            if occurrences == 1:
                num_valid_passwords += 1

    answer = num_valid_passwords
    return answer
示例#6
0
    def __init__(self):
        data = ingest(INPUT_FILE)

        self.earliest_departure_time = int(data[0])
        bus_ids = [int(bid) for bid in data[1].split(',') if bid != 'x']

        self.bus_schedule = BusSchedule(bus_ids)
示例#7
0
def solve1():
    data = ingest(INPUT_FILE)
    numbers = [int(n) for n in data]

    TARGET_SUM = 2020

    a, b = None, None

    for i in range(len(numbers)):
        for j in range(len(numbers)):
            if i == j:
                # same index, skip
                pass
            else:
                x, y = numbers[i], numbers[j]
                if x + y == TARGET_SUM:
                    a, b = x, y
                    break

    if a is None or b is None:
        raise Exception('No numbers found that sum to: %s' % TARGET_SUM)
    else:
        answer = a * b

    return answer
示例#8
0
def solve2():
    data = ingest(INPUT_FILE)
    hill = data

    m, n = (
        len(hill),  # "height" of hill, rows
        len(hill[0]),  # "width" of hill, columns
    )

    slopes = [
        Slope(1, 1),
        Slope(3, 1),
        Slope(5, 1),
        Slope(7, 1),
        Slope(1, 2),
    ]

    def _count_trees(slope):
        num_trees_encountered = 0

        i, j = (0, 0)

        while i < m:
            if hill[i][j] == '#':
                num_trees_encountered += 1

            row = hill[i]

            i += slope.y
            j = (j + slope.x) % n

        return num_trees_encountered

    trees = [_count_trees(slope) for slope in slopes]

    answer = reduce(mul, trees, 1)
    return answer
示例#9
0
 def __init__(self):
     data = ingest(INPUT_FILE, as_oneline=True)
     self.instructions = data
示例#10
0
 def __init__(self):
     data = ingest(INPUT_FILE)
     self.ingredients = [Ingredient(x) for x in data]
示例#11
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     routes = self.data
     self.graph = Graph(routes)
示例#12
0
 def __init__(self):
     data = ingest(INPUT_FILE)
     self.numbers = [int(n) for n in data]
示例#13
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.strings = [NaughtyOrNice(s) for s in self.data]
示例#14
0
 def __init__(self):
     self.data = ingest(INPUT_FILE, as_groups=True)
     self.passports = [Passport(lines) for lines in self.data]
示例#15
0
 def __init__(self):
     data = ingest(INPUT_FILE, as_groups=True)
     self.ticket_scanner = TicketScanner(*data)
示例#16
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.numbers = sorted([int(n) for n in self.data])
示例#17
0
 def __init__(self):
     self.data = ingest(INPUT_FILE, as_table=True, cell_func=int)
示例#18
0
 def __init__(self):
     data = ingest(INPUT_FILE, as_oneline=True)
     self.directions = data
     self.delivery_map = DeliveryMap(self.directions)
示例#19
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.masses = [int(mass) for mass in self.data]
示例#20
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.seating_chart = SeatingChart(self.data)
示例#21
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.rooms = [Room(room) for room in self.data]
示例#22
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.boarding_pass_seat_ids = [BoardingPass(code).seat_id for code in self.data]
示例#23
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
示例#24
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.instructions = [
         Instruction(instruction) for instruction in self.data
     ]
示例#25
0
 def __init__(self):
     data = ingest(INPUT_FILE, as_oneline=True)
     self.directions = [
         Direction(direction.strip()) for direction in data.split(',')
     ]
示例#26
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.ips = [IPV7(ip) for ip in self.data]
示例#27
0
 def __init__(self):
     self.data = ingest(INPUT_FILE)
     self.boxes = [Box(box) for box in self.data]
示例#28
0
 def __init__(self):
     self.data = ingest(INPUT_FILE, as_json=True)
示例#29
0
 def __init__(self):
     data = ingest(INPUT_FILE)
     containers = sorted([int(c) for c in data], reverse=True)
     self.kitchen = Kitchen(containers)
     self.kitchen.store(TARGET)
示例#30
0
 def __init__(self):
     data = ingest(INPUT_FILE, as_oneline=True)
     self.key = data