コード例 #1
0
ファイル: d16.py プロジェクト: shahroudy/Advent-of-Code
 def __init__(self, filename, repeat_code=10000):
     code = list(map(int, list(read_lines(filename)[0])))
     codelen = len(code)
     ignore_size = int(''.join(map(str, code[:7])))
     full_size = len(code) * repeat_code - ignore_size
     self.code = code[codelen - (full_size % codelen):] + code * (
         full_size // codelen)
コード例 #2
0
ファイル: d24.py プロジェクト: shahroudy/Advent-of-Code
 def process(self, filename):
     lines = read_lines(filename)
     self.tiles = defaultdict(bool)  # white is False
     for line in lines:
         q = deque(line)
         x, y = 0, 0
         while q:
             d = q.popleft()
             if d in 'ns':
                 d = d + q.popleft()
             if d == 'e':
                 x += 2
             elif d == 'w':
                 x -= 2
             elif d == 'ne':
                 x += 1
                 y += 1
             elif d == 'nw':
                 x -= 1
                 y += 1
             elif d == 'se':
                 x += 1
                 y -= 1
             elif d == 'sw':
                 x -= 1
                 y -= 1
         self.tiles[(x, y)] = not self.tiles[(x, y)]
コード例 #3
0
 def __init__(self, filename):
     lines = read_lines(filename)
     self.cubes2d = defaultdict(bool)
     self.height = len(lines)
     self.width = len(lines[0])
     for i, line in enumerate(lines):
         for j, ch in enumerate(line):
             if ch == '#':
                 self.cubes2d[(i, j)] = True
コード例 #4
0
    def parse_input_file(self, filename):
        lines = read_lines(filename)
        self.allergen_ingredients = defaultdict(set)
        self.ingredient_count = defaultdict(int)

        for line in lines:
            sides = line.split('(')
            ingredients = sides[0].strip().split(' ')
            ingredients_set = set()
            for i in ingredients:
                self.ingredient_count[i] += 1
                ingredients_set.add(i)
            allergens = re.sub(r'contains|,|\)', '', sides[1])
            for allergen in allergens.strip().split(' '):
                if self.allergen_ingredients[allergen]:
                    self.allergen_ingredients[allergen] = \
                        self.allergen_ingredients[allergen].intersection(
                        ingredients_set)
                else:
                    self.allergen_ingredients[allergen] = ingredients_set
コード例 #5
0
 def __init__(self, filename: str):
     self.lines = [re.sub(r'\s', '', line) for line in read_lines(filename)]
コード例 #6
0
 def __init__(self, filename, w, h):
     self.lines = read_lines(filename)
     self.w = w
     self.h = h
     self.imgsz = self.w * self.h
     self.process()
コード例 #7
0
ファイル: d02.py プロジェクト: shahroudy/Advent-of-Code
 def __init__(self, filename):
     self.lines = read_lines(filename)
コード例 #8
0
ファイル: d03.py プロジェクト: shahroudy/Advent-of-Code
 def __init__(self, filename):
     lines = read_lines(filename)
     self.digits = [list(line) for line in lines]
     self.digit_len = len(self.digits[0])
コード例 #9
0
 def __init__(self, filename):
     self.lines = read_lines(filename)
     self.mask4 = [[0, 0], [-1, 0], [1, 0], [0, -1], [0, 1]]
     self.process_num_map()
コード例 #10
0
ファイル: d14.py プロジェクト: shahroudy/Advent-of-Code
 def __init__(self, filename):
     self.lines = read_lines(filename)
     self.process_rules()
コード例 #11
0
ファイル: d16.py プロジェクト: shahroudy/Advent-of-Code
 def __init__(self, filename, repeat_code=1, apply_offset=False):
     self.init_code = \
         list(map(int, list(read_lines(filename)[0]))) * repeat_code
     self.code_size = len(self.init_code)
     self.ignore_size = int(''.join(map(
         str, self.init_code[:7]))) if apply_offset else 0