コード例 #1
0
        except AttributeError:
            return False

    def validateEyeColor(self):
        return self.Eye_Color in ['amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth']

    def validatePID(self):
        try:
            search(r'^\d{9}$', self.Passport_ID).group(0)
            return True
        except AttributeError:
            return False


passportraw = ''
count = 0
for line in iter_input(4):
    if line == '\n':
        pport = passport(passportraw)
        if pport.validate():
            count += 1
        passportraw = ''
    else:
        passportraw += f' {line}'
else:
    pport = passport(passportraw)
    if pport.validate():
        count += 1
    passportraw = ''
print(count)
コード例 #2
0
ファイル: 1.1.py プロジェクト: CermitDFrog/AOC2020
#!python
from helpers import iter_input

inputdata = [int(line.strip()) for line in iter_input(1)]


def answer():
    for num in inputdata:
        diff = 2020 - num
        if diff in inputdata:
            return diff * num


print(answer())
コード例 #3
0
#!python3
from helpers import iter_input

"shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags."

input_data = {}
for item in iter_input(7):
    key, rules = item.split("s contain ")
    input_data[key] = {}
    if "no other bags" not in rules:
        for rule in rules.split(', '):
            rule = rule.replace('bags', 'bag').replace('.', '')
            num = rule.split()[0]
            bag = " ".join(rule.split()[1:])
            input_data[key][bag] = num


def solveSevenTwo():
    containers = ["shiny gold bag"]

    def getContainers():
        global containers
        for bagtype in containers:
            for bag, number in input_data[bagtype].items():
                for x in range(int(number)):
                    containers.append(bag)

    getContainers()
    containers.pop(0)
    return len(containers)
コード例 #4
0
ファイル: 2.2.py プロジェクト: CermitDFrog/AOC2020
#!python
from helpers import iter_input


def validate(passline):
    rawreq, password = passline.split(':')
    reqrange, reqletter = rawreq.split()
    req1, req2 = [int(value) for value in reqrange.split("-")]
    if (password[req1] == reqletter) != (password[req2] == reqletter):
        return True
    else:
        return False


count = 0
lines = 0
for line in iter_input(2):
    if validate(line):
        count += 1
print(count)
コード例 #5
0
#!python
from helpers import iter_input

boardingIDs = []
for line in iter_input(5):
    row = int(line[:7].replace('F', '0').replace('B', '1'), 2)
    col = int(line[7:].replace('L', '0').replace('R', '1'), 2)
    boardingIDs.append(row * 8 + col)

print(max(boardingIDs))
コード例 #6
0
ファイル: 8.2.py プロジェクト: CermitDFrog/AOC2020
#!python3
from helpers import iter_input, iter_test

program = []
for line in iter_input(8):
    program.append(line)


class interpreter():
    def __init__(self):

        self.program = False
        self._accumulator = 0

    def loadProgram(self, program):
        self.program = program
        self._programLength = len(self.program)

    def run(self, command=None):
        if self.program:
            self._currentLine = 0
            self._accumulator = 0
            self.linesrun = []
            while self._currentLine < self._programLength:
                self._runCommand(self.program[self._currentLine])
            print(self._accumulator)
        elif command:
            self._runCommand(command)
        else:
            raise SyntaxError("No command to run.")
コード例 #7
0
 def __init__(self):
     self.fullmap = []
     for line in iter_input(3):
         self.fullmap.append(line.strip("\n"))
     self.mapWidth = len(self.fullmap[0])
     self.maplen = len(self.fullmap)
コード例 #8
0
ファイル: 9.2.py プロジェクト: CermitDFrog/AOC2020
from helpers import iter_input, iter_test

rawdata = []
for line in iter_input(9):
    rawdata.append(int(line))


def validate(preambleLen):
    preamble = rawdata[:preambleLen]
    data = rawdata[preambleLen:]

    for checknum in data:
        for prenum in preamble:
            if checknum - prenum in preamble:
                preamble.pop(0)
                preamble.append(checknum)
                break
            else:
                continue
        else:
            return (checknum)


def crack(BadVal, rawdata):
    for index in range(len(rawdata)):
        check = []
        for offset in range(len(rawdata) - index):
            check.append(rawdata[index + offset])
            if sum(check) > BadVal:
                break
            elif sum(check) == BadVal: