| 1234567891011121314151617181920212223242526272829 | import re
def checkpw(a, b, l, pw):
    try:
        c = pw[a-1]
        d = pw[b-1]
        if c == l or d == l:
            if c == l and d == l:
                return False
            return True
        return False
    except IndexError as e:
        print(a, b, l, pw)
        print(e)
def main():
    patt = re.compile("^(\d+)-(\d+) (.): (.+)$")
    with open("input2.txt") as file:
        lines = file.readlines()
    ln = []
    for line in lines:
        m = re.match(patt, line)
        ln.append([int(m.group(1)), int(m.group(2)), m.group(3), m.group(4)])
    valid = [pw for pw in ln if checkpw(pw[0], pw[1], pw[2], pw[3])]
    print(f"There are {len(valid)} valid passwords out of {len(ln)}.")
if __name__ == "__main__":
    main()
 |