def main(): lines = aoc_utils.readlines() yield "Part 1: " + str(process(lines)) for x in range(len(lines)): if lines[x][0:3] == "nop": lines[x] = "jmp" + lines[x][3:] yield process(lines) lines = aoc_utils.readlines() elif lines[x][0:3] == "jmp": lines[x] = "nop" + lines[x][3:] yield process(lines) lines = aoc_utils.readlines()
def main(): inputs = aoc_utils.readlines() old_inputs = [x for x in inputs] while True: inputs = step(inputs) if inputs == old_inputs: break old_inputs = [x for x in inputs] count = 0 for x in inputs: for y in x: if y == "#": count += 1 print(count)
def solve(part2=False): inputs = aoc_utils.readlines() de, dn, sn, se, direction, directions = 10 if part2 else 0, 1 if part2 else 0, 0, 0, 0, list( "ESWN") for x in inputs: if x[0] == "F" and not part2: x = directions[(direction // 90) % 4] + x[1:] dn, de, direction, se, sn = dn + int(x[1:]) if x[0] == "N" else ( dn - int(x[1:]) if x[0] == "S" else dn), de + int(x[1:]) if x[0] == "E" else ( de - int(x[1:]) if x[0] == "W" else de ), direction + int(x[1:]) if (x[0] == "R" and not part2) else ( direction - int(x[1:]) if x[0] == "L" else direction), se + de * int(x[1:]) if ( x[0] == "F" and part2) else se, sn + dn * int(x[1:]) if ( x[0] == "F" and part2) else sn if x[0] == "L" and part2: for y in range(int(x[1:]) // 90): de, dn = -dn, de elif x[0] == "R" and part2: for y in range(int(x[1:]) // 90): de, dn = dn, -de return abs(sn) + abs(se) if part2 else abs(de) + abs(dn)
import aoc_utils import itertools import re lines = aoc_utils.readlines() ingredients = [] for line in lines: ingredients.append(list(map(int, re.findall(r'-?\d', line)))) maxscore = 0 for a, b, c, d in itertools.product(range(0, 101), range(0, 101), range(0, 101), range(0, 101)): if a + b + c + d == 100: score = 1 for i in range(len(ingredients[0])): part = 0 part += a * ingredients[0][i] part += b * ingredients[1][i] part += c * ingredients[2][i] part += d * ingredients[3][i] if part > 0: score *= part if score // 500 > maxscore and part == 500: maxscore = score // 500 print(maxscore)
from collections import * import itertools import random import re import sys import aoc_utils import queue from operator import * import math import functools from copy import deepcopy tickets = aoc_utils.readlines() rules = [] myticketnext = False ot = [] for ticket in tickets: if ticket.count("or") != 0: name, rule = ticket.split(":") first, _, second = rule.split() rules.append( (name, (int(first.split('-')[0]), int(first.split('-')[1])), (int(second.split('-')[0]), int(second.split('-')[1])))) elif myticketnext == False: if ticket != "nearby tickets:" and ticket != "your ticket:": ot.append(list(map(int, ticket.split(',')))) else: myticket = list(map(int, ticket.split(','))) myticketnext = False if ticket == "your ticket:": myticketnext = True gt = []
from collections import * import itertools import random import re import sys import aoc_utils import queue import modint from operator import * import functools import math from copy import deepcopy inputs = aoc_utils.readlines() time = int(inputs[0]) buses = [int(x) for x in inputs[1].split(',') if x != 'x'] minimum = 10000000000000000000000000000000000000000000 bus = 0 for x in buses: print(x - time % x) print(minimum) if x - time % x <= minimum: minimum = x - time % x bus = x bus_list = inputs[1].split(',') #chinese remainder theorem busx = [int(x) for x in bus_list if x != "x"] busn = [int(x) - bus_list.index(x) for x in bus_list if x != "x"] print(busx) print(busn) print(modint.chinese_remainder(busx, busn))
import aoc_utils import re amount = 0 vowels = list('aioue') for x in aoc_utils.readlines(): if re.search(r"(..).*\1", x) is not None: print("Half matched", x) if re.search(r"(.).\1", x) is not None: print("Matched:", x) amount += 1 else: print(x) print(amount)
from collections import * import itertools import random import re import sys import aoc_utils import queue from operator import * import math import functools from copy import deepcopy p1,p2 = aoc_utils.readlines() p1,p2 = int(p1),int(p2) tocheck,counter = 1,0 while tocheck!=p1: tocheck = (tocheck*7)%20201227 counter += 1 print(pow(p2,counter)%20201227)