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)
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)]
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
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
def __init__(self, filename: str): self.lines = [re.sub(r'\s', '', line) for line in read_lines(filename)]
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()
def __init__(self, filename): self.lines = read_lines(filename)
def __init__(self, filename): lines = read_lines(filename) self.digits = [list(line) for line in lines] self.digit_len = len(self.digits[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()
def __init__(self, filename): self.lines = read_lines(filename) self.process_rules()
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