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