3/4
parent
eb435f92bd
commit
c5c7f19d49
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from random import randrange
|
||||
import sys
|
||||
|
||||
with open(sys.argv[1], 'r') as f:
|
||||
L = f.readlines()
|
||||
L = [x.strip() for x in L]
|
||||
|
||||
# part 1
|
||||
l = len(L)
|
||||
li = len(L[0])
|
||||
s = [3, 1]
|
||||
i = 0
|
||||
j = 0
|
||||
t = 0
|
||||
while i < l:
|
||||
i += s[1]
|
||||
j += s[0]
|
||||
if i < l and L[i][j % li] == '#':
|
||||
t += 1
|
||||
print(t)
|
||||
|
||||
# part 2
|
||||
l = len(L)
|
||||
li = len(L[0])
|
||||
ss = [[1, 1], [3, 1], [5, 1], [7, 1], [1, 2]]
|
||||
t = 1
|
||||
for n in range(len(ss)):
|
||||
s = ss[n]
|
||||
i = 0
|
||||
j = 0
|
||||
tn = 0
|
||||
while i < l:
|
||||
i += s[1]
|
||||
j += s[0]
|
||||
if i < l and L[i][j % li] == '#':
|
||||
tn += 1
|
||||
t *= tn
|
||||
print(t)
|
|
@ -0,0 +1,323 @@
|
|||
..#......###....#...##..#.#....
|
||||
.#.#.....#.##.....###...##...##
|
||||
..#.#..#...........#.#..#......
|
||||
..#......#..........###........
|
||||
...#..###..##.#..#.......##..##
|
||||
......#.#.##...#...#....###....
|
||||
..........##.....##..##......#.
|
||||
......#...........#............
|
||||
#....#..........#..............
|
||||
.#........##.............###.##
|
||||
....#.........#.......#.#....##
|
||||
#.#..#..#..#.......#...#....##.
|
||||
.#........#......#.##.......#..
|
||||
..#.....#####.....#....#..#..##
|
||||
.......#..##.......#......#.###
|
||||
..#.#...#......#.##...#........
|
||||
##...................#...##..#.
|
||||
......#...#.##...##.#......#..#
|
||||
.#.................#..##...#...
|
||||
...#.....#.......##.....#.#....
|
||||
.......#.#......#.....#..#..##.
|
||||
..........#........#...........
|
||||
..#.#..........................
|
||||
.#.##..#.#...#...#.........#...
|
||||
.....#....#.....#..#.....#.....
|
||||
...#.#.#.....#.#..#.......#..#.
|
||||
.....#...###...##...#......##..
|
||||
#.###......#.#...#.#.#..###....
|
||||
#.....#..##......#..........#.#
|
||||
#...............#........#.#..#
|
||||
.....#..#.........#......##.#..
|
||||
.....#.##.##..#..##............
|
||||
...#......##...............#.#.
|
||||
.#..#.#............##.#........
|
||||
#.....#..###.............##.#..
|
||||
...##..#.#..#...........#..#...
|
||||
#....#.........#.#.............
|
||||
##.#.........#..###......#.#..#
|
||||
...#...#......#.#.#.##..#.##...
|
||||
.....##............#.##.##..#..
|
||||
....#................#.##..#..#
|
||||
...#..#.......#...#..#........#
|
||||
....#...#...#................#.
|
||||
....##...............#.#...#...
|
||||
.#.....###...#.......#.##......
|
||||
....######.#..............###.#
|
||||
.#..#.........##...............
|
||||
................##.#..#....###.
|
||||
.......#............#.#..#..#..
|
||||
......#.#...............##.#...
|
||||
...#..####.#...#..#..#......#..
|
||||
....#.#...#.....#.........#..##
|
||||
.##..#...#......##....##.#.#...
|
||||
.##.#.........##...#....#......
|
||||
..#.#..#...#.#..#.......#...#.#
|
||||
.........#..#.....##..#........
|
||||
..#......#..##.....#..#...###..
|
||||
..#...#....#.#..#..#.#.#..#.#..
|
||||
...#..#####.....#......#.......
|
||||
#.#............#......#..#...#.
|
||||
.........#..........###.......#
|
||||
......#....#..#.##.#......#..#.
|
||||
...........##.#....#.#..#......
|
||||
..#...................#..#.#...
|
||||
#....##.............##....#...#
|
||||
##..#....#.........#..........#
|
||||
....#.#.#...#..#........#.##..#
|
||||
...............#...#..##..#....
|
||||
.##.......#.......#...........#
|
||||
#.........................##...
|
||||
#........#.#..#..##..####.#....
|
||||
...................##.....###..
|
||||
.#.......#..#......#......#...#
|
||||
..#.........#...#..........#...
|
||||
..........#......#....#........
|
||||
.#......#..#...#..#...##....##.
|
||||
...#.#..#..#......#.....##.####
|
||||
.......#.#....#.......#........
|
||||
#...#.#...##..##.#......#......
|
||||
.#.........#...................
|
||||
...#..........#.#......#.......
|
||||
...#.....##....#..........#....
|
||||
.#..........##..#..#..##....#.#
|
||||
.##.#..........#...#.##.......#
|
||||
#...###....#..#.#...#..#.......
|
||||
..................##...........
|
||||
..#...##.#...........#....#.##.
|
||||
..#......#..##..#....##..#...#.
|
||||
..#....#.....#.##..#.......#..#
|
||||
#...#....#..#.#....#......##...
|
||||
.......##..#..........#........
|
||||
..#.............##.#.....#...#.
|
||||
...............#....#...#...##.
|
||||
##...........#.......#.##......
|
||||
#..#...........#.........#.....
|
||||
....###.............###.##..##.
|
||||
.........#.#.....###.......#...
|
||||
..#.##....#.#..........#....#..
|
||||
#........#....##...#..#........
|
||||
......#..........###..#.#......
|
||||
.....#.#......##.....#..##...#.
|
||||
.#.......#......#...#...#...#.#
|
||||
.#..........##.......#.....##.#
|
||||
###.#...#....#.....#...#......#
|
||||
..#.#.#..#.##.#..#.............
|
||||
.....#.........................
|
||||
.#..###..#...#...#..#..#...#.#.
|
||||
#................##...##.##....
|
||||
......#...#...#..........#...#.
|
||||
..........#.....##.............
|
||||
..#.#......#........#.......#..
|
||||
........##.............#.......
|
||||
.......#......#.##.#..#........
|
||||
#.#.#....#........#..........#.
|
||||
##..##......#..#..#.....#.#..##
|
||||
##..#..........#...............
|
||||
#.....##...#.#......#.......#.#
|
||||
#.....#...#....#..#.....##.....
|
||||
##..........#.#.....#....#...##
|
||||
..##.###..#.....#.......#...#..
|
||||
.#.#.......#......###........#.
|
||||
.#..............#.#..###.......
|
||||
.#....#..##.........#..#.#.....
|
||||
....#....#.#....#..#.......##.#
|
||||
#.......#.......#.........#....
|
||||
...#....#....#.....##..#..#.#.#
|
||||
........#....#...........#.....
|
||||
.#......##.#.#.##..............
|
||||
#..#.#.....##........#........#
|
||||
##...#.#.......##.......#...#..
|
||||
#...#.....#.##...##.#.....#....
|
||||
....#..##...#........#.#...#...
|
||||
...#....#.#.#..###...##.#.....#
|
||||
......#..#.....#..#........##..
|
||||
.......#.....#.#.........#.#..#
|
||||
..#.......#.#.#.#.#....#.##...#
|
||||
.#...#........#..##..#......#..
|
||||
.#..#............#...#..#.#....
|
||||
...##......#......#............
|
||||
..#...#.#.....#.....#..##.#....
|
||||
.#......#.#......#..#.#........
|
||||
..#..........##...#.#.....#..#.
|
||||
#...#.....#..#...#.............
|
||||
..##.................#....#....
|
||||
.#....#.......#..##....#......#
|
||||
.#....###............##....##.#
|
||||
##..#........#..#...#.......#..
|
||||
.....#.....#.#.#.##.........#..
|
||||
.......#..#....#...#...#.......
|
||||
...#...#...#.#.#..#.#.....#....
|
||||
#.#........#..#.##..#..###.....
|
||||
..................#..#.........
|
||||
#.#.....#..##.........#.......#
|
||||
###..#.......#..............#..
|
||||
......#..#.....###..........#..
|
||||
....#.#...#..#...........#.#...
|
||||
...#.....#.......#.....#.#.....
|
||||
#.....##..#......##...........#
|
||||
#...###...........##..#...#.##.
|
||||
......##.##.#...#..#....#......
|
||||
...#.#......##.#......##....#.#
|
||||
..............#.#.###.......#..
|
||||
........#....#.......##..#..###
|
||||
...#.....##.#....#......##..#.#
|
||||
..##........#.....#.#..#...#...
|
||||
.#..#.##.........#.....#...#..#
|
||||
..#..#....#...........#........
|
||||
.#...#....................#....
|
||||
##.....##....#.............#.#.
|
||||
....#.#..#.#..#.#.#..........##
|
||||
.............##.#.....#..#..#..
|
||||
.#....#.....##...#.###.........
|
||||
..#........#........#.#..###...
|
||||
.##....#...#...#.......#...#.#.
|
||||
..#...#...#..##........#..#....
|
||||
..##.#..#..#.....#......#.#..#.
|
||||
.#........#..#....#..#.........
|
||||
..#.#.....#.##..#........###.#.
|
||||
.....#.##.....##.#.............
|
||||
#.........#.......#...##...#...
|
||||
..#.##.#..#..#............#....
|
||||
.##....#..#............#.....#.
|
||||
###........##.....##.#...#.....
|
||||
#......##..##.#.#.#.#.#.#..##..
|
||||
.....###.....#....#......#....#
|
||||
........#.........##...#....#.#
|
||||
.#.#.....#.#..#..##......#...#.
|
||||
...#.##....#..#.###..#..##.....
|
||||
....#..........##..#..#..#..#..
|
||||
...#..#.##..#..#....#.........#
|
||||
.....#..###.#.....#.....#..#...
|
||||
......#...#....#.##...#.#......
|
||||
.#.###..##.....##.##......##...
|
||||
.....#.#...........#.#.........
|
||||
#........#...#..#......##.#....
|
||||
..#.......##....##....#.##.#..#
|
||||
...###.#.........#......#.....#
|
||||
..#.##..#....#.....##...#.##...
|
||||
....##.##.............#...#....
|
||||
##..#...#..#..#..#.............
|
||||
.....#.....#.....#.............
|
||||
...#.##.......#..#.#.....#....#
|
||||
#.....##.........#......##.....
|
||||
.....##..........#..#...#..#...
|
||||
#...###....#.......#...##......
|
||||
.#....#..#......#.....#...#.#..
|
||||
#........#.#.#...#.....###.#.##
|
||||
##...#...##..#..#....#.........
|
||||
....#............#..#.....#....
|
||||
#......#.........##....#.......
|
||||
.#..#..#........#.............#
|
||||
.##..........#......#.......#..
|
||||
#............#..#....#.........
|
||||
....#.#.....#.##...#.....#.#...
|
||||
...#.#..#...##..#...#.#.#......
|
||||
#....#..#.........##..#.#.#..##
|
||||
.#...#..............#.......#..
|
||||
#...#.....#.#........##......##
|
||||
...#....##.####.#.........#.#.#
|
||||
....###.#..#............#.#..#.
|
||||
....#......#...#......##.#.#.#.
|
||||
.....#..#.#.##.#...##..........
|
||||
##..#...#.#...###.............#
|
||||
....#...#..#.....#.#..#..#..#..
|
||||
#..........####......#.....###.
|
||||
.........#........#.##.#...#...
|
||||
.........#..........#.#..###...
|
||||
.....##........##.........#...#
|
||||
..##....#...#.......##.........
|
||||
.....#.#......##....#...#...#..
|
||||
.##..#..##.....................
|
||||
.......#...#..#..#...##....#...
|
||||
.#...#.......###...#..#..#.....
|
||||
.......#.....##.##.#.......#..#
|
||||
.##......#...#....#..#......##.
|
||||
.##....#..#....#...#...#.......
|
||||
.........##..#..#.#.#.....##...
|
||||
...#..............#..#.....####
|
||||
.#.#.#..#.......#.......#......
|
||||
..#.#......#..........#........
|
||||
.#...#.#..#.......#..#..#..#...
|
||||
.......##.#...#..#....#.....#..
|
||||
.##...##....##...#........####.
|
||||
....#.#..##....#...#....#.#....
|
||||
.....#.....#..#..#.#.##..#.....
|
||||
..#....#..............#....#...
|
||||
..#.#.#.....##.#.....#..##.....
|
||||
....#.....#....#...#...#..#.#..
|
||||
#...#...........#..#..#........
|
||||
...#.#..#.........##.#...#..##.
|
||||
......#.#.........#.#...#......
|
||||
......#..##.###......##.#....#.
|
||||
.....#...#..#.......#..........
|
||||
.#...#.......#.....###......#..
|
||||
...........##.....#..#..#....#.
|
||||
..#....#..#...#......#.......#.
|
||||
..#...#...#.#..#....#...#......
|
||||
.......#....###.####...###.#...
|
||||
#.##.#.......#.......#....#.#.#
|
||||
.##..........#.....#..###......
|
||||
.....#...........#.##..#....#..
|
||||
........##.....#.#........##...
|
||||
#..#..#..................##....
|
||||
#...###..........#.............
|
||||
.......#.#.......#.#.......##..
|
||||
.....#.#...#....#...####.....#.
|
||||
..##.....##.......#....#.......
|
||||
##..........#...#..##....##....
|
||||
..........#..#......#........#.
|
||||
##..#....#..#....#.....##....#.
|
||||
##.##.....#...##.##.......#....
|
||||
..#..#.###.#..##.#..#..#...#...
|
||||
.#..#.....#........#...##.#....
|
||||
..#..#.....#.#......##.#.#.....
|
||||
.#..##...#.#....#...#...#.#.##.
|
||||
.........#...#....###.#.....#..
|
||||
...........###.#.#..#..#...#.#.
|
||||
##...#......##...........#..#..
|
||||
.........##..#...#.......#.....
|
||||
#......#.#..........#..#.......
|
||||
...#.................#....#....
|
||||
#....#......................##.
|
||||
##.......#..#......#.#...###.#.
|
||||
..#....#..#.#......#...........
|
||||
...#...........###.#.#.........
|
||||
..#..##.....#.....##...##......
|
||||
..#..#.#.#.#..#..#..##....#...#
|
||||
#......##.....##..##.##...#....
|
||||
#.....#.....#.#........#.......
|
||||
.#.....#.................#....#
|
||||
.###....#...#............#.#.#.
|
||||
.#...#.#......#.#..............
|
||||
....#...#......#.....#.......#.
|
||||
........#.....#..........#....#
|
||||
#..#......#...#...#.........#..
|
||||
#....#......#...##.#...#...#...
|
||||
#...#....#....#..#..#.....#..#.
|
||||
#......##..#..#.#.#..#.#.......
|
||||
..#..#...............#...##...#
|
||||
............#..............#.##
|
||||
.#.#.#......##.......#.......#.
|
||||
....#.........##.......#...###.
|
||||
.......#.#...#.#.#.......#.....
|
||||
....#..#..#...#....#.##.#.##...
|
||||
...##.##.#...#......#..........
|
||||
#.....#...#.#...#.##..##.#.....
|
||||
.......#.....#...#.#...##.#....
|
||||
.#.............#.....#....##..#
|
||||
##......#.......#...#....#.....
|
||||
.###......#.................#..
|
||||
#.#......##.........##..#......
|
||||
...#....#..........#.#.........
|
||||
..##..#.........#..............
|
||||
.....#...#..................#.#
|
||||
.............#.........#...#..#
|
||||
....#....#......#.#.......#...#
|
||||
#..#............#.#.......#...#
|
||||
..#.....#............#.........
|
||||
.#.....................###....#
|
||||
........#.####.........#.#.#...
|
||||
#...........##...#.........#..#
|
||||
...........#..#......#...#.#...
|
||||
....##...##.....#.....#........
|
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import re
|
||||
import sys
|
||||
|
||||
L = []
|
||||
with open(sys.argv[1], 'r') as f:
|
||||
L = f.readlines()
|
||||
L = [x.strip() for x in L]
|
||||
|
||||
|
||||
ACCEPTED_FIELDS = {'byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid'}
|
||||
|
||||
|
||||
# part 1
|
||||
j = 0
|
||||
people = [0]
|
||||
for i in L:
|
||||
if i == '':
|
||||
people.append(0)
|
||||
continue
|
||||
fields = i.split(' ')
|
||||
for f in fields:
|
||||
if f.split(':')[0] in ACCEPTED_FIELDS:
|
||||
people[-1] += 1
|
||||
valid = 0
|
||||
for p in people:
|
||||
if p == len(ACCEPTED_FIELDS):
|
||||
valid += 1
|
||||
print(valid)
|
||||
|
||||
# part 2
|
||||
VALID_ECL = {'amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth'}
|
||||
|
||||
j = 0
|
||||
people = [{'valid': 0, 'byr': '', 'iyr': '', 'eyr': '', 'hgt': '', 'ecl': '', 'pid': ''}]
|
||||
for i in L:
|
||||
if i == '':
|
||||
people.append({'valid': 0, 'byr': '', 'iyr': '', 'eyr': '', 'hgt': '', 'ecl': '', 'pid': ''})
|
||||
continue
|
||||
fields = i.split(' ')
|
||||
for f in fields:
|
||||
if f.split(':')[0] in ACCEPTED_FIELDS:
|
||||
people[-1]['valid'] += 1
|
||||
people[-1][f.split(':')[0]] = f.split(':')[1]
|
||||
|
||||
valid_people = []
|
||||
for p in people:
|
||||
if p['valid'] == len(ACCEPTED_FIELDS):
|
||||
valid_people.append(p)
|
||||
|
||||
valid = 0
|
||||
for v in valid_people:
|
||||
if v['byr'].isdigit() and int(v['byr']) >= 1920 and int(v['byr']) <= 2002 and \
|
||||
v['iyr'].isdigit() and int(v['iyr']) >= 2010 and int(v['iyr']) <= 2020 and \
|
||||
v['eyr'].isdigit() and int(v['eyr']) >= 2020 and int(v['eyr']) <= 2030 and \
|
||||
((v['hgt'].endswith('cm') and (int(v['hgt'].split('cm')[0]) >= 150 and int(v['hgt'].split('cm')[0]) <= 193)) or \
|
||||
(v['hgt'].endswith('in') and (int(v['hgt'].split('in')[0]) >= 59 and int(v['hgt'].split('in')[0]) <= 76 ))) and \
|
||||
(v['hcl'].startswith('#') and len(v['hcl'].split('#')[1]) == 6 and bool(re.match(r'^[0-9a-f]*$', v['hcl'].split('#')[1]))) and \
|
||||
v['ecl'] in VALID_ECL and \
|
||||
len(v['pid']) == 9 and bool(re.match(r'^[0-9]*$', v['pid'])):
|
||||
valid += 1
|
||||
print(valid)
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue