This commit is contained in:
Jed committed 2021-12-03 00:52:39 -05:00
1 parent 3ebbc0655b
commit 0970c28f26
9 files changed
+2516

No files matched your search

+323
View File
@@ -0,0 +1,323 @@
.......#................#......
...#.#.....#.##.....#..#.......
..#..#.#......#.#.#............
....#...#...##.....#..#.....#..
....#.......#.##......#...#..#.
...............#.#.#.....#..#..
...##...#...#..##.###...##.....
##..#.#...##.....#.#..........#
.#....#..#..#......#....#....#.
...........................#...
..........#.......#..#.....#.#.
..#.......###..#.#.......#.#...
....#..#....#....#..........#..
..##..#.......#.#...#..........
.....#.......#.....#....#......
..........##..#................
....##.#..###...#..##.....#.#..
..#..#.#.#...#......#...#.....#
....#.#....#...####.##.........
..#.........##...##.#..#..#....
.#......#...#..#..##.#.........
.#....#.......#..##..##..#.#.#.
...........#....#......#.......
..#....#....#...............#..
..#.....#....###.##.....#.#..#.
#..........#.#......#.#....#...
....###...#.#.....#....#.####.#
........#......#...#...#..##..#
...##..............##.#.......#
#..........#...........#.#....#
#...#....#..####..#............
###....#........#..............
...#.##....................#.##
...#..#.....#.....##...#....#..
.......###.#...#.........#.....
.#..#.....#.#..#.....#.........
#................#.............
...#......#.#.....##.#.#....#..
...#..#.#..#.....#...#....#....
.......#......#........#.....#.
.#.##..##.....#.#......#.#.#...
#...............#.....#....#...
.....#...........#..##.........
.....#..#........##..#..#.....#
..###.#.#.......#.#...........#
##....##....#.#....##...#.##.##
..................##.#.#.....#.
.#...........###...#...........
.#.#....#......#....###.#......
.......#.##...#...#..#.#.......
..#.....#.#....#..#............
.....#..#..#....#..#.........#.
..##.#......#.....#...#.#..#.#.
.........#......#....##.......#
#........#..#.#......#...#.#..#
...#....#.#..#....##.......###.
..#...#......#.##..........#...
........#..#..#...#.......#....
.##.#..#...#..#........#.#.####
#..#..#..........#....##...#...
....#...#........##........#...
.#......#.......#..#..#........
#...#.#......#....#............
#........#..##.#...##..........
...#..##.....#......##.#..#.#..
.#.#.....#.....#.####.#..##....
..........###....#.##...#......
.......#.......#..#.#.#.##.#..#
..#.#....#......#.#...#.......#
.#...#....#......#...#.........
.#....#..#....#.##.#....#..##..
...#..#.#..................#...
.##..#.............##.........#
...#.#.#................#.....#
...###..###..................#.
........##.##..#.#...#.....#...
.##...##...#...#....#...#......
#..#....#..#..#.#....#..####...
.#...............##....##.#....
#..#................#...#..#...
.#....#.....#..#.#........#....
...............##.#..##..##....
.#......#........#....#.#...#.#
.#.....#...##.#........#.##.#.#
..###............#..#.#....#...
..#.....#.........#....#..#.#..
.##.....#.#..........#.#....##.
...#...#....#..#......#.#.#..#.
#.....#...#....##...#.......##.
.......#.#.........##..........
............##.#.##...#.......#
.....#........##...#........#..
.#........#.#.#.#....#.........
#....#..#....#.#..#...#.#......
....##...........#...#...##.#.#
......#...##.###.....#.........
............#..##....##......#.
......##....#...#.#....#......#
#..#..#..#.#.#.........#...##.#
...#.........#...#.........##.#
#.#.....#.......#.##..#..#.....
##................#......#....#
....#..#.......#....##.....#...
.....#..#...#...#......#.#....#
..#....#.....#.........#.....#.
..#..#..........#.....#........
.......#..##.#......#.#........
.............##.....#....#.....
...#....#..#.#.#...............
........#....##..#...#........#
..##...............#.....#....#
........##.#.##.#......#..#....
..#.##.......#..........##..#..
.#..............#.#.##.........
.#.......#....#....#.#.#.......
.#.##.......#....#......###.#..
.......#...#............##.....
........#.#..........##..#.....
...###..#......#.....##..#..#..
...........##......#....#......
..............#....#..#..#.#..#
....#...#......#.##...#........
.#.............#..#......###.#.
#...#..#.#..............##..#.#
....................#.........#
..##..#......#.###.....#...#.#.
.#....#.#........#...#........#
..#....#.....#..............#..
##..........#..#..#...#........
...........#..##...#.......#...
........##.............#.......
#....#........#..#.#.###..#....
...........##..........##......
#......#.....##.#.##......##...
..#......#.........#.......#..#
......#.#....##..##.#...#.#...#
......#..................##....
...#....#.#...#.#.......##.....
#.#...##...##........#...##....
..#.......#.#.#...#............
.......#......#..#...#.........
#...#..#...........##..........
......#....#.........#.#....#..
#......#........#...#..##....#.
.....#.......##..#.#......#..#.
...........#......#...#......#.
#.#.##.....#....#.....##......#
.....##..#.#.#.###........#.#..
...#...#.#......#......#.......
......###....#..##...#.#.##....
#.....#.....#..................
...#...#......#...............#
..#............##..#.....#.....
.#....#...#...#...#...#..#.....
.##......#.........#.###.#.....
#.#.##.......##...#........##.#
.##.#.#......#.....#...#.....#.
....####.##.......#..##..##.#..
#.#.......#..##....###..#...#..
..#..#....#...#.#.#.#...#......
##.........#.##................
........#.....................#
..#...........#..#..##.#..#.#..
#...#...................#.###..
##..#............#.........#..#
...............##...#...##....#
#.#.....#..#.......#......#....
.#...#......#............#.....
#.......#...#..#....#.......#..
...#....#.##.#....#....#.#.....
...#..#..............#..#.#..#.
.........#.....#.#...#..#....#.
..#..#..#...##.....##.#.....#..
.#.#..........#........#.......
...............#........#.#.#..
.#......#.....#..............#.
........#.#..............#.#...
.......#.#....#..#.#.#..#.#.##.
...##..#...#.#..#...........#..
#...###.#.....#..#........#....
.#...##...##...##.#.....###....
.........#......#.#..##.#.#....
#....#.#..#...#.#.#....#..#..#.
.#.#...#......###.....#........
#.....#.#.......#..#.#...#.....
.................#.#....#..##..
#...........#....###..#......#.
##.#..#....#.#.#.#.............
#.....#..#...#........#........
..#..#......#..#.##.#..........
...#....#..#..........#.#.##.##
#........#...#.......#..##.#...
.#.#..#....#.#....#......#.....
##.......##.#........#...#..##.
##.##.....#.......#####.#....#.
..#..###.#.#..#....###..#.##..#
#.........#.............#.#...#
..#...##.#..................#..
.....#.#....#.#..#.#........#.#
......#.......#.#..##.#.#..#...
..#......#.#..##......#..#....#
..##..#..#.##.#..#....#...##...
###....#...##....##.........#..
#........##.........#......#..#
...#.........#......#.##.......
.....#.#.#....#......#.........
..#...........#....#......#.#..
##........#...##.....######....
....#..#..##.......#..#..#.....
..#....#..##....#......##....#.
...##....#........##......#....
.#.#...###...#......#..........
#....#..#.##.........#...#.....
......#..#.........#.##.....#..
...#............##....#......#.
...#.....##.....#........#.#..#
......#.#..#......#.....#..##..
#.#.........##..........#......
..###.....#..#....##..........#
.............##..#....#..##....
....#.#....##..#......#...#....
....###.....#..#.......#.......
............#..#...............
......#........#..#......#.....
.#........#.......#.##.......#.
..#.........#..#.#.....##....#.
...#.......#.......#.......##.#
#......##.#.....#......##.#..#.
#..........#.................#.
....#..##...........#.....#.#..
#.###...#............#.#....#.#
....#......#.#..###....##..#...
....#...#..........##..........
..#.#............#...#...###...
......#...#......#..#.#........
.#.......#..#...........##...#.
##...#...##....##.#..#..#.#....
.......#........#............##
.#......#...#.#................
#.#........#.#....#..#.##......
.......#.#...#....##.......##..
........#.#.#.........##..##...
..##...............#.#.###.#...
......#.#....#..#......##.....#
###.........#.....#.#.....##...
.#.#....#.....#.#.##..#.......#
..#..#.#......#...##..##.#..#..
...#........#..#....#..........
#...#.#...#..##....##..........
.........#........#.##....#..#.
..#...#.#.......##..........##.
###...........##.#......#.#..#.
...#....#...#..#..#......#.....
.....##.......###.#....###..##.
...#...#..........#.#......#...
....#.....##...##..#.#........#
.....#...#..#.....##...##....#.
................##.#.##....##.#
.#..#..#....#.....#....#..#...#
.....###.....#.................
#...#..##..#.........#.........
.....#..#................#.....
.#..#...#......#..#............
...#...#.#....#....##...#...##.
..........#....#.#..#.#.....#..
....#...###.##...#..#..#......#
#...#.......#..........#..#....
.#............#..##.......#...#
....#..#...#............#..#.#.
.#....#.......#..#.#......#....
...#...#............#...#.....#
....#.#.#..##.#.....#...#.#....
......#.#.#......#..#...#.....#
......##.....#.............#...
..#...#..#.#....#..............
.#.#..#....#.#..##....###.##...
..#...........#....#.###.#....#
.....#.........#.#.............
...#.#.....#......###......##..
...#...#.....#.................
...#..#...##.....##.........#..
..#...#..#..##..#...#........#.
##..#.#.##.#....#...........#..
.......#....##....#...##..#..#.
#.......##.#...##...##..#.....#
....#.#...............#......#.
....#.#...#.....#....#......#..
.#.........#.#....###........#.
.#.#.....#.....#.#.#....#.#....
............#...........#.#..##
#...#......#..#......#.#.......
...#.#.#.....#..#...#..##......
...#.#..#...#....#.........#.#.
........#..#......##.....#...#.
...#..#..............#..#......
.........#.......#...#......#..
.#......#.....#.....#......#...
......#.......#....#...#.#.....
.#.....#.##..#........#...#....
#.....##..##....#.#.......#..#.
.#..#...#..#.......#...........
..#..#...#.....##....#.....#...
#.#..............#....#..#.....
.........##...#......#.##...##.
.###...#.#...#.....#.........#.
.....#..........##...#..#....##
.#..#......#....##.#...#.......
.............###.#.#..#.#.#...#
.......#...##..#..#.....###....
##.......#...........#....#.#..
##......#...#.#................
.#.####..##.#...............#..
..#...#.#.#..#...#........#...#
.##..##.##.....#.......#..#.#..
...................#......#.#..
#.##..#..........#.............
##..#......#....#.#............
.#........#.....##...#.........
.##....#..#..##..........#...#.
#..........##........#..#..#.#.
####.###.#.....#....#..#.#....#
..#...#...#.#.......#....#...#.
......##.###..##.#.###......#.#
+49
View File
@@ -0,0 +1,49 @@
def tree_counter(horizontal_shift, vertical_shift, input_list):
tree_count = 0
row_count = 0
for i in range(0, len(input_list), vertical_shift):
horizontal = row_count * horizontal_shift
vertical = i
reference = horizontal % len(input_list[i])
if input_list[i][reference] == "#":
tree_count += 1
temp_input = input_list[i]
if temp_input[reference] == "#":
temp_input = temp_input[:reference] + "X" + temp_input[reference + 1:]
if temp_input[reference] == ".":
temp_input = temp_input[:reference] + "O" + temp_input[reference + 1:]
row_count += 1
print(f'''"Row {f"""{vertical}/{len(input_list) - 1}""":8} {temp_input:35} {i:5} {horizontal:5} {vertical:5} {tree_count:4}''')
return tree_count
# with open('./2020/03.test') as input:
with open('./2020/03.input') as input:
input_list = input.read().split('\n')
tree_count = 0
for i in range(len(input_list)):
horizontal = i * 3
vertical = i
reference = horizontal % len(input_list[i])
if input_list[i][reference] == "#":
tree_count += 1
print(tree_count)
slope_list = []
slope_list.append(tree_counter(1, 1, input_list))
slope_list.append(tree_counter(3, 1, input_list))
slope_list.append(tree_counter(5, 1, input_list))
slope_list.append(tree_counter(7, 1, input_list))
slope_list.append(tree_counter(1, 2, input_list))
total = slope_list[0]
for i in range(1, len(slope_list)):
total *= slope_list[i]
print(slope_list)
print(total)
+11
View File
@@ -0,0 +1,11 @@
..##.......
#...#...#..
.#....#..#.
..#.#...#.#
.#...##..#.
..#.##.....
.#.#.#....#
.#........#
#.##...#...
#...##....#
.#..#...#.#
+957
View File
@@ -0,0 +1,957 @@
byr:1971
iyr:2017 hgt:160cm
eyr:2020 ecl:hzl
pid:157096267
hgt:183cm
pid:368895060
ecl:oth eyr:2020
iyr:2013
byr:1966
ecl:lzr cid:279 pid:192cm
hcl:1f7352 iyr:2014 hgt:70cm eyr:1983
byr:2004
hcl:#602927 iyr:2018 byr:1938 ecl:blu
eyr:2024 hgt:172cm
pid:839621424
ecl:#12f268
hcl:#6b5442
iyr:2012 byr:2011
eyr:1933 pid:189cm hgt:155in
byr:1954
ecl:gry pid:664227667 eyr:2028
hgt:151cm
iyr:2019
ecl:gry
byr:1931 iyr:2017
pid:459927933 eyr:2028
hgt:67in hcl:#fffffd
cid:322 hgt:163cm
byr:1969 hcl:#a97842 pid:472877556
iyr:2019
ecl:amb eyr:2030
hcl:#733820 ecl:brn byr:2000 eyr:2022 iyr:2014 cid:320 pid:751634349
hgt:180cm
ecl:blu eyr:2028
hcl:#866857 byr:2029 hgt:191cm iyr:2010
pid:170cm cid:123
pid:258660154 byr:1921 hgt:161cm
eyr:2030
cid:217 iyr:2012
hcl:#4dd6d4 ecl:grn
hgt:170cm byr:1978 eyr:2022 pid:399347273
iyr:2010 cid:109 ecl:blu hcl:#602927
pid:172106685
hgt:183cm
ecl:gry iyr:2020 eyr:2025 hcl:#18171d byr:1980 cid:289
cid:77 ecl:#254ad9
byr:2017 pid:169290741 iyr:2003 hgt:85 hcl:z
hgt:155cm byr:1987 ecl:oth hcl:#fffffd
iyr:2010
ecl:brn iyr:2014 cid:74
hcl:#623a2f
hgt:187cm byr:1955 pid:008305281 eyr:2025
pid:428624233 ecl:grn
eyr:2027 hgt:167cm hcl:#623a2f byr:1960 iyr:2016
eyr:2027 pid:358876826 hgt:171cm ecl:oth byr:1957 iyr:2018
hcl:#ceb3a1
cid:314
ecl:grn eyr:2030
hgt:73in iyr:2011 hcl:#602927
hgt:76in byr:2029
pid:2703176 iyr:2020
eyr:2037 ecl:#95d926
hcl:9574d2
eyr:2020 hgt:164cm
byr:1949 hcl:#fffffd pid:591281293 iyr:2014 cid:136
cid:268 hgt:73in hcl:#6b5442 eyr:2025 ecl:brn byr:1988 pid:899417027 iyr:2015
iyr:2020 hcl:#b6652a hgt:177cm
eyr:2028 ecl:hzl
byr:1995 pid:594197202
hcl:#a97842 hgt:179cm byr:1930
ecl:brn pid:010268954 eyr:2020 iyr:2010
iyr:2022 pid:93390086
cid:321 eyr:2034 hcl:#a97842 hgt:168in byr:2006 ecl:#a8f84c
eyr:2028 ecl:blu byr:1935
hcl:#6b5442 pid:187679418
hgt:174cm iyr:2016
iyr:2019 hgt:164cm pid:704379775
ecl:oth hcl:#888785 byr:1930
eyr:2025
hcl:#6b5442 cid:168
hgt:171cm eyr:1944 iyr:2018 pid:675364934
byr:1962
ecl:hzl
hcl:z
eyr:2039
ecl:zzz pid:26281402 cid:144 iyr:1928
hgt:166cm
ecl:hzl hcl:#7d3b0c
eyr:2022 pid:011589584
hgt:64in byr:1945 iyr:2014
byr:1950 hcl:#18171d pid:685748669 eyr:2028 iyr:2010 hgt:176cm ecl:grn
byr:1989
hgt:163cm hcl:#18171d ecl:grn iyr:2020 pid:721397788 cid:308 eyr:2020
pid:443496560 iyr:1999
eyr:2027 hcl:z
hgt:69in ecl:zzz byr:2019
cid:108
pid:#c9d804 eyr:2011
ecl:#574df9 iyr:2027 hcl:z byr:2018
hgt:64
hgt:69cm
iyr:1926 hcl:fdcce6
ecl:#28b358
eyr:2026
byr:1994
pid:76404593
eyr:2020
ecl:hzl pid:978839539 hcl:#efcc98
byr:1935 cid:121
hgt:165cm
ecl:amb
byr:1951 hgt:186cm pid:812513486 iyr:2012 eyr:2029 hcl:#fffffd
hcl:fcdd61 hgt:168in ecl:grt pid:8474140699 byr:1924 iyr:2027 eyr:2023
ecl:oth hcl:#866857
byr:1965 pid:533941934 hgt:166cm iyr:2019 eyr:2040
eyr:2032 pid:0795438812 iyr:2009 hcl:z
byr:2028 hgt:131 ecl:gmt
cid:102 byr:1923 eyr:2025
pid:222102208 iyr:2019 hcl:#341e13
hgt:167cm
ecl:amb
hgt:180cm byr:1956 iyr:2014 eyr:2022
ecl:oth cid:175 hcl:#888785
cid:216 eyr:2022
ecl:brn pid:002875069 iyr:2019 hcl:#cfa07d byr:1991 hgt:164cm
iyr:2014 byr:1933 pid:537809907
hgt:185cm eyr:2029 hcl:#341e13 ecl:blu
cid:286 hgt:166cm byr:1977 iyr:2012 pid:541909675 ecl:oth eyr:2020
hcl:#59eb12
hcl:#18171d cid:329 byr:1921 eyr:2027 iyr:2019
pid:440820443 hgt:75in ecl:blu
hcl:#733820 hgt:177cm
pid:085529831 eyr:2029 iyr:2010 ecl:amb byr:1972
pid:704125918 hcl:#b6652a byr:1981
ecl:#698ae8 cid:141 iyr:2018 eyr:2026 hgt:66in
iyr:2020 eyr:2022
hgt:191cm hcl:#7d3b0c
ecl:blu byr:1943 pid:969407635
pid:10899196
hgt:161cm
ecl:lzr iyr:2023 hcl:#ceb3a1 byr:1986 eyr:2012
hcl:#7d3b0c ecl:utc eyr:2020
byr:2028 pid:#f8c441 iyr:2030
hgt:164cm
byr:2003 hcl:z iyr:2012 hgt:187in
ecl:gry eyr:2030 pid:150cm
pid:427618420 hgt:155cm iyr:2012
ecl:brn
byr:1948 eyr:2029 hcl:#6b5442
ecl:oth hgt:81
byr:2025 cid:66 pid:174cm hcl:z
eyr:2021
byr:2027 ecl:lzr hcl:#888785 eyr:1923 hgt:110 cid:54 iyr:1939
hcl:#341e13 byr:1961 eyr:2022 hgt:163cm cid:137 ecl:amb
iyr:2019
hcl:#866857
iyr:2020
byr:2005
hgt:139 ecl:amb cid:181
eyr:2016
pid:181cm
byr:2030
iyr:2014
hcl:#733820 cid:74 eyr:2021 hgt:179cm
pid:7938817872
ecl:amb
hcl:91a6dd
iyr:2019 byr:2024
hgt:72cm
ecl:gmt eyr:2023
pid:8440093771
ecl:grn byr:1963 cid:60 iyr:2030
hgt:74 eyr:2022
pid:193189388
hcl:#b6652a
pid:403849590 byr:2012
eyr:1951 cid:90 iyr:2023
hgt:69cm hcl:z ecl:gmt
iyr:2010 hcl:#341e13
pid:011326174 hgt:185cm byr:1976 cid:207 eyr:2027 ecl:amb
hgt:64in
pid:499837104 hcl:#3be285
byr:1944
eyr:2024 iyr:2017
ecl:gry
eyr:2032 pid:#850d4e hcl:deddda ecl:brn hgt:172 byr:2004
cid:244 iyr:2022
hcl:a3346d ecl:amb
pid:#505713 hgt:74cm eyr:2010 iyr:2020
byr:1987
ecl:oth iyr:2012 eyr:2023
pid:131199420 cid:112 hcl:#a97842
cid:256 hcl:#a97842 byr:2000 iyr:2018 ecl:oth
eyr:2022 pid:637777693 hgt:160cm
hgt:152cm
cid:164 hcl:#866857 ecl:grn eyr:2025
pid:495224989 iyr:2020 byr:1949
iyr:2010
cid:288 byr:1986 ecl:blu
pid:304077824
eyr:2020
hgt:182cm
ecl:blu
hcl:#18171d pid:047931925 byr:1964
iyr:2012 eyr:2030 cid:167
byr:1958
hcl:#866857 iyr:2019 hgt:165cm pid:553631683
cid:109 ecl:gry
eyr:2023
cid:156
iyr:2014 pid:811368482 eyr:2026 hcl:#b6652a byr:1994
hgt:184cm ecl:brn
hcl:#733820
hgt:183cm ecl:grn
pid:265625165 byr:1943 cid:344
iyr:2011
iyr:2017 hcl:#c0946f pid:716422629 cid:104 byr:1974
hgt:160cm eyr:2021 ecl:brn
byr:2002 hgt:180cm hcl:#602927
eyr:2025 ecl:grn iyr:2011 pid:887584172
hcl:#888785 ecl:brn eyr:2026
pid:14483306 byr:1947
hgt:177cm iyr:2015
hcl:#b6652a
ecl:#64783e eyr:2020 hgt:163 pid:651615946
iyr:2012 byr:1999
iyr:2014 ecl:gry hgt:188cm eyr:2028 pid:503058612 hcl:#a31066
hgt:178cm hcl:z
ecl:amb
pid:17656631
eyr:2031 byr:2023
hgt:166cm pid:783568747 hcl:#341e13
byr:1955 ecl:grn eyr:2023
iyr:2016 hgt:161cm byr:1989
eyr:2023
ecl:amb pid:133770783
hcl:#fffffd
cid:75 byr:1986 eyr:2020 pid:099478576 ecl:blu
hcl:#733820
iyr:2011 hgt:158cm
pid:911200183 hcl:#602927 eyr:2029 iyr:2018 ecl:brn hgt:181cm
byr:1937
iyr:1928 byr:2020 hcl:579202
hgt:60 ecl:utc eyr:1963 pid:157cm
cid:253
eyr:2028 iyr:1949
pid:284455762 hcl:#a97842 ecl:oth byr:1947 hgt:163cm
hcl:#18171d eyr:2025 cid:222
byr:1924 ecl:oth
pid:898594506 hgt:182cm
iyr:2017
byr:1935 iyr:2027
hgt:160in pid:#c090c3
hcl:#623a2f cid:162 eyr:1942 ecl:amb
iyr:2014 hgt:160cm eyr:2028 hcl:#623a2f byr:2010
pid:684765216 ecl:blu
byr:1958
hgt:154cm hcl:#a97842
ecl:oth iyr:2015 eyr:2020 cid:334
pid:636691339 iyr:2018
byr:1930
hcl:#b6652a cid:86
hgt:184cm ecl:oth
eyr:2029
iyr:2025
hgt:76cm ecl:#043004 hcl:z
byr:2009 eyr:1999
eyr:2020 pid:56419390 iyr:2015 hcl:#ceb3a1 ecl:utc
hgt:98
iyr:2014 byr:1927 hcl:#fffffd ecl:amb eyr:2022
hgt:188cm pid:602778565
hcl:#cfa07d eyr:2029 byr:1937 pid:7912057436
ecl:hzl
cid:192 hgt:68in iyr:2012
hgt:155cm
iyr:2015 byr:1954 pid:559203670
ecl:blu hcl:#fffffd eyr:2025
hcl:#341e13 byr:1998 iyr:2019
cid:312
ecl:oth
pid:230874778 hgt:161cm
iyr:2011 ecl:amb
eyr:2026
hgt:163cm byr:1932 hcl:#733820 pid:850176278
eyr:2030
hgt:170cm
iyr:2017 byr:1972
pid:014731313
hcl:#341e13 ecl:brn
pid:133005637
hgt:167cm
cid:317
eyr:2025 hcl:#341e13 iyr:2012 ecl:gry byr:1950
iyr:2029 pid:745014772 hgt:68in
eyr:2034 ecl:hzl
hcl:ec07ce
hgt:165cm
ecl:gry
hcl:#a97842 byr:1921 cid:263 pid:609363367
pid:192cm hcl:18f308
ecl:oth
eyr:2037 cid:239 iyr:2026 byr:2010
hcl:d0e525 eyr:2037 iyr:2019
cid:197
pid:469740743
hgt:186in ecl:brn byr:1977
ecl:hzl cid:254 hgt:165cm
eyr:2024 byr:1996
iyr:2021 pid:797277746 hcl:e286e8
hcl:#b6652a cid:142 ecl:oth hgt:190cm byr:1962 pid:997137384 iyr:2020
eyr:2029
ecl:brn byr:1962 hcl:#866857 iyr:2020 hgt:152cm pid:701556397 cid:121 eyr:2029
eyr:2024 cid:186 hcl:z
byr:1962 hgt:155cm pid:448098321 iyr:2017 ecl:grn
iyr:2016
hgt:168cm byr:1999
cid:286
hcl:#18171d pid:223995430 eyr:2022 ecl:blu
pid:227780276 ecl:blu iyr:2017 byr:1985 hcl:#6b5442 hgt:183cm eyr:2028
hgt:190cm
ecl:oth eyr:2030 cid:223 hcl:#888785 iyr:2010
pid:115829664 byr:1967
eyr:1992 pid:0688674980 hcl:z
byr:2028
hgt:186in ecl:#849f7b
iyr:2029
cid:64
eyr:2025
iyr:2013 byr:1958 ecl:grn
hcl:#ceb3a1
hgt:153cm pid:815357118
pid:038013822 hgt:180cm iyr:2013
hcl:#623a2f
ecl:grn eyr:2029 byr:1949
byr:1923
cid:299 hgt:184cm iyr:2020
hcl:#fffffd eyr:2027
ecl:hzl
byr:1930
iyr:2012
ecl:grn hcl:#87f2c8 pid:787371085
iyr:2019
eyr:2028 pid:107626362 hgt:183cm
ecl:grt hcl:#623a2f byr:1985
byr:2011
hgt:68in iyr:2002 ecl:#5dfa18 hcl:#341e13 pid:205853974
iyr:2014
pid:179cm
hcl:13b9e3 eyr:2022 ecl:#b1759b hgt:184in
byr:1954
hgt:183cm hcl:#efcc98
pid:428260080 cid:231 eyr:2025 ecl:grn
iyr:2010
byr:1957
iyr:2016
ecl:gry
pid:192cm eyr:2026
byr:1956
hgt:174cm hcl:#623a2f
eyr:2021 ecl:blu cid:230
byr:1923
pid:438732879 hgt:167cm
hcl:#602927
byr:1948 ecl:xry
pid:154cm hgt:179cm eyr:2029 iyr:2017
hcl:#dd59ab
hcl:#ceb3a1
iyr:2014 byr:1981 hgt:167cm ecl:grn
eyr:2021
pid:926925947
iyr:1985
pid:652196636 hcl:#18171d ecl:#ff3e10 hgt:162cm byr:2012 eyr:2023 cid:171
eyr:2029
hgt:166cm
pid:499909488 byr:1929 hcl:#866857 ecl:brn iyr:2013
pid:440245122
byr:1992 hgt:179cm iyr:2010 cid:181 ecl:brn hcl:#888785 eyr:2020
eyr:2029 hcl:#888785 pid:274994154 ecl:hzl
iyr:2014 byr:1995
pid:3195072620
hcl:z ecl:hzl cid:130 iyr:2030 eyr:2034 hgt:157
hcl:#1b0a51
pid:129985083 eyr:2029
hgt:192cm cid:236 byr:1996 ecl:blu iyr:2016
ecl:lzr pid:899902347 iyr:1982
hcl:#cfa07d eyr:2028 byr:1927 hgt:155in
cid:187 eyr:2029 hcl:#efcc98 byr:1986 pid:760318090
hgt:169cm iyr:2018 ecl:amb
hcl:#fffffd eyr:2021 pid:532530085 iyr:2019 byr:1995 hgt:169cm
iyr:1980
hcl:z eyr:2019
hgt:72cm pid:6532875244 ecl:#2f2221 byr:2006
hgt:174cm byr:1920
ecl:gry pid:#14fae7 eyr:2026 hcl:#1814d1
iyr:2013
hcl:#ceb3a1 ecl:grn
iyr:2018
byr:1978
hgt:183cm pid:566862236
eyr:2028
iyr:2020 ecl:amb
pid:618246345 byr:1940
hgt:60cm eyr:2027 cid:242 hcl:#b6652a
ecl:grn
hcl:#18171d byr:1957 pid:325895714 iyr:2018
eyr:2023 hgt:162cm
ecl:#a3ed7b
byr:2024
hcl:z eyr:2022 iyr:2016 cid:350 hgt:119 pid:185cm
iyr:2010
byr:2004 eyr:2032 cid:326 hcl:6019c5
ecl:gmt hgt:137
pid:477848102 eyr:2025 hgt:178cm hcl:#e31a3d ecl:brn
byr:1943
pid:#65fca1 eyr:2026 hgt:192cm cid:293 ecl:blu byr:2026 iyr:2024 hcl:#a97842
eyr:2025 cid:181 hgt:186cm byr:1968
ecl:brn pid:318405093 hcl:#341e13 iyr:2015
hcl:#c12f4b eyr:2025 cid:311 pid:652667870
ecl:oth
hgt:166cm
byr:1981 iyr:2016
ecl:hzl
byr:2025 iyr:2014
hcl:138d5c eyr:2037 hgt:160in cid:206
pid:#d9119b
pid:51419740 cid:141
iyr:2012
hgt:90 ecl:#9438f4 hcl:#7d3b0c byr:2021 eyr:2020
pid:#0bc613
hcl:z byr:2017
hgt:91 cid:284 eyr:1966 iyr:2008
ecl:#974ceb
cid:344 iyr:1953 eyr:2020 ecl:hzl byr:2019 hcl:z pid:2969979
ecl:gry
byr:1925 cid:113
hcl:#a97842 pid:744660539 hgt:153cm iyr:2020
hgt:177 pid:856186682 eyr:1968 ecl:blu
cid:167 byr:1986 hcl:#866857 iyr:2015
byr:1937 eyr:2021 iyr:2017
cid:91 hgt:183cm hcl:#a97842 ecl:blu pid:149192621
hgt:154cm hcl:#602927 ecl:oth
byr:1939 iyr:2018 pid:670669747 eyr:2029 cid:301
eyr:2025 pid:249412970 ecl:oth
iyr:2016
byr:1921 hcl:#a97842 hgt:176cm
byr:1969
iyr:2019 hcl:9de0cb
pid:644476999 hgt:75in
ecl:oth eyr:2022
hgt:164cm iyr:2016
byr:1988 ecl:gry
eyr:2030
hcl:#efcc98 pid:393258887
hgt:183cm pid:6930456 eyr:2023 cid:210 ecl:#766482 byr:2023 iyr:2017 hcl:z
iyr:2011 hgt:165cm eyr:2020 byr:1966
hcl:#efcc98 pid:691169980 ecl:blu
iyr:2011 hcl:#602927 eyr:2029
byr:1966
ecl:oth hgt:165cm pid:945383793
pid:567096741 iyr:2025
ecl:gry eyr:1944 hgt:187in byr:2026 hcl:8ac39a
byr:2025
eyr:2025 iyr:2015
hgt:191 pid:1659927272 ecl:grn
iyr:2027 hgt:63in byr:1963 pid:874200881
ecl:oth hcl:#c0946f eyr:2029
hcl:#b37a48
byr:1957 ecl:hzl
eyr:2030
iyr:2013
pid:#38e0fd eyr:2019 cid:103
hgt:153in
ecl:#956d7c
iyr:2029 byr:2029 hcl:z
eyr:2021 pid:956654136
hcl:#854d9d hgt:186cm byr:1960 iyr:2015
eyr:2020
byr:1995
hcl:#b6652a ecl:amb pid:746523744 iyr:2015
hgt:178cm
eyr:2020 hgt:173cm cid:322 byr:1956 iyr:2020 ecl:blu
pid:833595649
ecl:gry iyr:2017 eyr:2020 pid:537816651 hgt:183cm cid:160 byr:1996 hcl:#733820
iyr:1920
byr:2013
hcl:z eyr:1932 pid:169cm
eyr:2030 cid:258 iyr:2020 ecl:grn byr:1947 pid:571610070
hgt:162cm hcl:#888785
byr:2025 hgt:155cm iyr:2030 ecl:amb eyr:2002
iyr:2020 ecl:hzl
pid:090561426 hcl:#a97842
byr:1923
ecl:hzl
iyr:2019
hcl:#c0946f eyr:2025
byr:1999 hgt:178cm pid:026042669
hgt:74in
eyr:2027 iyr:2015 ecl:gry
byr:2005 pid:#28b09d
eyr:1953 byr:2014 ecl:lzr cid:202 hcl:1af88d
iyr:2028
cid:99
pid:706477697 iyr:2018 hgt:171cm eyr:2027
ecl:oth
byr:1978 hcl:#930aef
iyr:2017
byr:1935
eyr:2029
ecl:amb pid:321873254 hgt:179cm hcl:#1b9aea cid:160
iyr:2013 ecl:hzl eyr:2023 cid:233 byr:1996 pid:605962483 hgt:175cm hcl:#ceb3a1
pid:754905579
ecl:brn eyr:2021 hcl:#ceb3a1
byr:1943 hgt:59in
cid:110 byr:1935 eyr:2021 hgt:172cm iyr:2020
pid:643443673 hcl:#888785 ecl:brn
ecl:gmt hcl:#cfa07d
hgt:148 iyr:2024 pid:635827422
eyr:1935
byr:1964
iyr:2012 byr:2016 hcl:z
hgt:178cm pid:213073693 eyr:2005
ecl:#b3cc58 byr:2027 pid:172cm hcl:#888785 hgt:177cm eyr:1988
iyr:2027
eyr:2029
byr:1923
hcl:#d9855b cid:134 pid:068598146 hgt:152cm ecl:blu
cid:309
iyr:2010 ecl:oth hgt:188cm hcl:#18171d eyr:2028 pid:174227992 byr:1931
iyr:2010 hgt:72in cid:266 ecl:brn pid:0090854908
hcl:#623a2f eyr:2032
byr:1967
pid:192554211 eyr:2020 hgt:192cm ecl:gry cid:158 iyr:2015 byr:1940
hcl:#efcc98
cid:248 hgt:75in eyr:2025 byr:1957 hcl:#c0946f
iyr:2019
ecl:brn
pid:96533216 hcl:z ecl:blu eyr:2027 hgt:193cm cid:224
byr:1928 iyr:2014
iyr:2010
eyr:2022 cid:276 hcl:#a97842 byr:1968 ecl:gry pid:808830560 hgt:188cm
hgt:158in
pid:097590485 iyr:2030 eyr:1940 hcl:z cid:274
ecl:#2ea9ec
byr:2024
pid:616947922 byr:1982 iyr:2014 hgt:186cm ecl:oth hcl:#888785
byr:1941 pid:039744699 hcl:#efcc98 hgt:190cm iyr:2011
eyr:2020 ecl:blu
byr:1971
ecl:hzl hgt:65in
pid:076133019 iyr:2019 eyr:2030
ecl:blu iyr:2011 byr:1928 hcl:#c0946f hgt:172cm eyr:2026 pid:171544458
byr:1929 pid:145819079 ecl:hzl
hgt:192cm iyr:2015 eyr:2020 hcl:#b6652a
byr:1981 ecl:amb pid:123467924
eyr:2024 hcl:#18171d
hgt:184cm iyr:2017
byr:1957
ecl:oth pid:881258191 hgt:65in iyr:2010
hcl:#a97842
ecl:amb eyr:2020 hgt:152cm
iyr:2021 pid:9448811025 hcl:#c0946f cid:204 byr:2030
eyr:2022 pid:208725350
byr:1944 ecl:blu hcl:#18171d cid:164
hgt:170cm iyr:2014
hcl:#18171d eyr:1952 iyr:1939 pid:788651896 hgt:157in byr:2007
byr:1944 cid:87 pid:463367304
iyr:2020 hgt:188cm ecl:gry
eyr:2027 hcl:#cfa07d
ecl:hzl
iyr:2018 hgt:164cm byr:1972 cid:272 pid:990204374
hcl:#6b5442
hgt:155cm pid:791416860 iyr:2015
cid:278 hcl:#18171d byr:1994 ecl:brn
eyr:2023
iyr:2017 cid:245 eyr:2026 byr:1932 ecl:blu
hgt:159cm pid:904760812 hcl:#18171d
ecl:blu hcl:#6b5442
iyr:2015 eyr:2023 pid:535891497 hgt:175cm cid:168 byr:1920
byr:2000 hcl:#6b5442 hgt:156cm
pid:765444727 iyr:2012
ecl:brn
eyr:2028
eyr:2005 pid:9092484649
byr:2028
ecl:#5fc7fc hgt:81
iyr:1988 hcl:8280e1
cid:275
byr:1928 iyr:2010 hcl:#888785 pid:596954301 ecl:brn eyr:2020 hgt:166cm
cid:163
byr:1984 eyr:2027 iyr:2020
ecl:gry hgt:166cm pid:650001846
hcl:#602927
iyr:1925 eyr:2030
byr:1985 hcl:#cfa07d ecl:#f16a95 hgt:150cm pid:67853501
ecl:gry
eyr:1949 cid:218 hgt:73cm byr:2004 pid:055108092
iyr:1961
eyr:2024 iyr:2016 pid:133523002
hgt:62in hcl:#d99c14
byr:1996 ecl:hzl
eyr:2026 iyr:2019 hgt:189cm ecl:brn hcl:#623a2f
byr:1979 pid:172111665
iyr:2017
eyr:1937 ecl:#bfd0ee
byr:1964 hcl:#733820
hgt:169cm pid:33181449
eyr:2024 hcl:#6b5442
iyr:2014
hgt:68in pid:577055593 ecl:grn byr:1996
hcl:z cid:150 eyr:2039 byr:2015 pid:2453663020 ecl:brn
hgt:154cm
hcl:#efcc98 eyr:2022
ecl:grn hgt:167cm byr:1978 iyr:2010 pid:180446111
ecl:gry
iyr:2020 hgt:152cm pid:#cce9cf eyr:2028
byr:1942
hcl:z
hcl:#341e13 ecl:brn iyr:2019
pid:589837530 cid:157 byr:1925 hgt:183cm eyr:2020
byr:2009
pid:179cm hgt:164cm
iyr:1927 hcl:#cfa07d eyr:2034
ecl:oth iyr:2012
eyr:2028 hcl:#866857 pid:716964854
byr:1940 cid:113 hgt:193cm
byr:1985 iyr:2011 hcl:#866857 pid:454558712 eyr:2025 cid:301
hgt:62in ecl:blu
hcl:#733820 eyr:2025 ecl:amb
pid:855788635 iyr:2016
byr:1965
cid:140 hgt:183cm
hcl:#efcc98 cid:326 eyr:1961
pid:001357810 iyr:1947 ecl:#8abfc8 hgt:75 byr:2012
hgt:60cm pid:#e28da4 byr:2014 iyr:2019 eyr:2040 ecl:utc
hcl:#733820 eyr:2022 pid:708208638 hgt:162cm cid:326 iyr:2018 ecl:oth byr:1997
iyr:1967 byr:2013 pid:8595504787 hgt:73cm ecl:dne
pid:808787977 hcl:#18171d
cid:205 hgt:181cm
byr:1986
ecl:gry iyr:2013
ecl:dne iyr:2009
byr:2027
hgt:188in hcl:#c0946f
pid:585147305 eyr:2024
hcl:#733820 iyr:2019
eyr:2020
hgt:190cm
pid:042907748 ecl:grn byr:1920
ecl:#603ad1
eyr:2026
hcl:33f9f8
pid:862887360 hgt:156in byr:1993
iyr:2013
ecl:oth eyr:2030 byr:1960
hcl:#a97842 cid:285
hgt:60in pid:655974048 iyr:2016
iyr:2030
hgt:143
pid:65806846 byr:1948 hcl:#72a0d3 eyr:1934 ecl:#7cd402
hcl:z pid:#0f7c0a iyr:2012 hgt:161cm
byr:2022 eyr:1937
hcl:#fffffd ecl:hzl
hgt:191cm byr:1935 iyr:2015 cid:240 eyr:2030 pid:778049989
ecl:amb iyr:2011 hcl:#e196f6 pid:231470794 eyr:2026 hgt:179in byr:1979
ecl:oth hcl:#6b5442 pid:181cm hgt:72cm
eyr:2040 iyr:2010
iyr:2016 eyr:2026 pid:113617276
cid:117 hgt:176cm ecl:grn
hcl:#c5b999
iyr:2016 byr:1941
pid:846760253 hgt:60cm
hcl:#7d3b0c ecl:zzz
eyr:1972
eyr:2023 hcl:#623a2f
cid:103 pid:476193829 hgt:181cm ecl:oth byr:1997
iyr:2014
ecl:#b64a07 hcl:7bb40c byr:2028 eyr:2039 pid:#e2ba33 hgt:189 iyr:1940
pid:#3ecfd8 hcl:#7d3b0c iyr:2014 ecl:#30a5e7 hgt:73cm byr:1954
ecl:dne
byr:2011 pid:512088455
hcl:#18171d eyr:2023
iyr:2024
byr:1996 eyr:2026 pid:268556486 ecl:brn
hgt:150cm
iyr:2013 hcl:#7d3b0c
iyr:2014
ecl:grn pid:222910621 hcl:#602927
eyr:2030 hgt:155cm
pid:530689228 byr:1938
iyr:2015
hgt:185cm ecl:hzl eyr:2022 hcl:#866857
hcl:#b6652a byr:2028 iyr:2018 cid:150 ecl:lzr pid:706073193 hgt:169cm
hgt:171cm ecl:gry hcl:#6b5442 byr:1953
iyr:2011 pid:622763802 eyr:2026
eyr:2032 hgt:137
pid:5033763648
byr:1925 ecl:hzl hcl:#623a2f iyr:2024
byr:1930 pid:6999766453 ecl:#3e3e07
hcl:#602927 iyr:2010 eyr:2039
hgt:160cm
hgt:122 ecl:amb pid:105302121 iyr:2017
hcl:#733820
eyr:2027 byr:1955
hcl:#95f96b
hgt:193cm iyr:2020 pid:719337690
byr:1971
ecl:brn eyr:2024
+63
View File
@@ -0,0 +1,63 @@
# with open('./2020/04.test') as input:
with open('./2020/04.input') as input:
input_data = input.read()
input_list = input_data.split("\n\n")
working_list = []
for one_input in input_list:
one_worker = {}
one_input = one_input.replace('\n', ' ')
attribute_list = one_input.split(' ')
for one_attribute in attribute_list:
attributes = one_attribute.split(":")
one_worker[attributes[0]] = attributes[1]
working_list.append(one_worker)
target_list = ['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid']
valid_count = 0
for one_item in working_list:
if all(element in one_item.keys() for element in target_list):
valid_count += 1
print(valid_count)
valid_count = 0
for one_item in working_list:
test_check = 0
test_str = ""
if all(element in one_item.keys() for element in target_list):
test_check += 1
test_str = test_str + "keys|"
else:
continue
if int(one_item['byr']) >= 1920 and int(one_item['byr']) <= 2002:
test_check += 1
test_str = test_str + "birth_year|"
if int(one_item['iyr']) >= 2010 and int(one_item['iyr']) <= 2020:
test_check += 1
test_str = test_str + "issue_year|"
if int(one_item['eyr']) >= 2020 and int(one_item['eyr']) <= 2030:
test_check += 1
test_str = test_str + "expire_year|"
print(one_item['hgt'][-2])
if (one_item['hgt'][-2] == 'cm' and int(one_item['hgt'][:-2]) >= 150 and int(one_item['hgt'][:-2]) <= 193) or (one_item['hgt'][-2] == 'in' and int(one_item['hgt'][:-2]) >= 50 and int(one_item['hgt'][:-2]) <= 76):
test_check += 1
test_str = test_str + "height|"
print(one_item['hcl'], len(one_item['hcl']))
if len(one_item['hcl']) == 7:
test_check += 1
test_str = test_str + "hair|"
if one_item['ecl'] in ['amb', 'blu', 'brn', 'gry', 'grn','hzl', 'oth']:
test_check += 1
test_str = test_str + "eye|"
if set('0123456789').issubset(one_item['pid']) and len(one_item['pid']) == 9:
test_check += 1
test_str = test_str + "passport|"
if test_check == 8:
valid_count += 1
print(test_check)
print(test_str)
print(one_item)
print(valid_count)
+13
View File
@@ -0,0 +1,13 @@
ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
byr:1937 iyr:2017 cid:147 hgt:183cm
iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
hcl:#cfa07d byr:1929
hcl:#ae17e1 iyr:2013
eyr:2024
ecl:brn pid:760753108 byr:1931
hgt:179cm
hcl:#cfa07d eyr:2025 pid:166559648
iyr:2011 ecl:brn hgt:59in
+1000
View File
@@ -0,0 +1,1000 @@
010101110000
010011000110
010101000011
111100100001
011100110101
110001010101
001111110101
101100011100
010111111011
101010111101
101000001110
001000100001
000100011110
100011000100
101100100001
101010111010
111000001011
101101001011
000010010110
110111100111
111101011110
100100010010
110001011110
010011101000
111110000110
110001011111
001001010110
110111100100
100111000101
110011110000
000110000010
010001100001
111110111011
100010101011
000000010101
100010101110
100110100111
100111101111
110011110001
001000111100
001101010010
111101011101
011000110001
111111011010
011000000000
100000111001
011110101100
011101010111
011001111110
011100101101
101100010011
001100110000
110101101100
110110001100
000101101110
001010110010
111110110110
111010010011
100010111111
001001001000
110111001011
010110000010
100000000100
100001010010
110010011101
000001011011
000100010100
101011000001
011101110111
001100010100
101000010110
111111001100
110011001011
110000000000
010100110101
001111100011
100011010010
100111100011
110101001010
011111011000
001010100110
010101010100
110111011111
001001010000
001011010101
101111011011
101001101000
000011101110
000101110010
100011001010
011001010010
100100110011
010010011100
001100100110
100111110111
000111111000
100000001101
001111010101
000001001111
000101100000
000101001111
101010001001
111011110001
000111100011
110011000010
110011111101
101001010110
101111111000
000110100010
101111010001
010011110001
111110010010
101111011101
101110111101
010001011111
101110011010
001110001100
000110011001
000101000101
101010111011
110010101100
000100101101
010111011111
111001010110
000010100100
100000111100
101101110001
100001111010
000111010010
111100000110
010010000000
010001001011
111101010000
010011111110
111011101011
110110100110
100001000011
010010000110
010000000001
000001000101
011010100000
001011011000
110101010001
011000111110
010011101101
010011000011
011010011101
001101110100
010001100101
111011100011
010111101000
111100000010
010000110000
000100111001
010010110100
000101110110
000011001110
111010111100
100101010001
111011000101
011111101100
000110010001
100011101111
100101001110
101101110010
000000011010
000001101000
010110011000
110100001001
111111101100
011010110001
011100111101
001101010110
100111000111
000000001111
001110101010
101000011001
000111010111
100110110001
100011000011
110111101011
000110111001
000010010011
010111011001
000111001000
100011011010
011101000100
101010010100
010111110000
011011100111
000001110001
000100111000
111100001011
100101010000
000110110100
110011110111
111000010111
101110011000
110011010000
001111000100
111010001001
110001111000
011101011111
000001001100
110100111011
110001011011
001010000100
110011101110
101100100100
100101100001
001010001010
101010001000
000110101001
001100010000
110001000101
000100111110
000110100111
100010001010
100100010110
010001110011
101111010010
100000001001
000110110000
100010011011
111101000001
101111111011
111111100110
101001101010
000011111011
110000000011
000001111010
001001000100
101110001101
100111011111
110101101110
100011011011
101000010001
101001111000
111101110010
000101000011
100100010100
010101111101
100110001011
010011010111
110111100101
110010010101
100010101101
100110000110
001101000001
111001001000
010111010011
000110001111
010101011010
000000001000
001001100100
101111111001
001110101000
000110100100
001111101111
010100011000
010000110110
011101101110
010100100100
111110010101
101100000110
011010110000
001001011101
000000000101
100101111001
110101110110
100111101010
010010101101
010100001111
111111111110
011111000000
000001101111
011001011001
001101101000
011010110110
100101000110
110001101110
110100101011
010001110100
011110110101
010001010001
110110101000
010000100011
010101011001
101111111010
000011110010
001000011101
110001100010
110110000011
010000111011
111010010000
011001001000
000111011010
011111111100
111001111100
001101000100
101110001011
101110000111
011010111111
110011100111
001101110010
011111101111
001110000110
010111100001
110100101001
101010110010
111011010100
101001110010
101101000100
100111010001
000011010110
100110000100
101000101010
000000001010
110100111010
110010011010
100110010100
011101110010
000111111010
001000101001
110100110010
100100111011
011001010111
111000101010
011001011011
011010000000
001101101110
101010111000
101010011000
011000010101
111001011010
100111111111
001101001100
111011011010
110110100011
111010010100
000110011101
011100010011
011111100111
010110100000
001100001000
000110000110
000101011011
101011101011
111101111110
111111110000
101101001100
011000110110
100111001000
011011111100
001111011110
111011100100
000101010010
100011011000
100000100110
100000110011
011000010110
001010110100
100111100010
011110101011
110111111010
011100110110
100100000000
011010101101
001101000010
010110010111
100010011100
111101010101
011011010111
000000000110
101001100000
010100110011
010101111111
101110111001
101101111000
101110101000
011011111110
010001101010
001000101010
111100111111
001011011110
101010101001
011111001010
001001001111
101000101101
001111011000
000100001101
101101011000
001100000100
001000111101
000001110100
111101011111
111010000010
101111011111
001100110101
101010110001
001110111010
010010111110
101101010011
100001100110
110010010001
111100111001
000100010001
110010101010
111010110101
000001010110
000111110110
111010101100
011110001100
010110001001
010111100011
001010111000
100111100111
110110011001
010100000000
001011001111
110010110000
100011001111
100111111011
110001001001
000100101111
011010011011
001001111101
111110001100
101111110010
101100101110
100110111001
111010110011
110010011110
001111001101
010011100111
000111000011
101101000000
000001100101
011101111001
110100100110
000110000001
110111011101
011100000110
001011110100
010001011011
110000011110
110001001011
110100000001
011010010100
010010000101
001010110111
110001001111
101100000001
010000000000
101110010001
001100101110
010000011010
010100101011
011010101100
111101011011
110111010000
111111101111
111011111011
110001110111
011100100011
100001110101
100111011001
100110010000
100110101110
110101100001
001010001101
011101101000
110001001110
110010111011
111100110100
101011100011
010100100101
010001101111
111000110101
001000101011
101101000101
011000100111
001111000011
011000000011
000011001111
001010011111
101001100010
101010100001
001001110010
101010000111
010111011010
110101110111
000110101111
000110010011
010110110010
100111001011
001100111111
111110000001
110110111000
101010000100
011100101010
001000010101
010010011001
011111000110
010011010011
001011101101
001001110100
110101011100
011000110100
010101101000
100000100000
011011111010
011010011111
111011011101
001111101110
001000110101
010001011100
110101100010
001100100100
001100101011
100110111000
001100101101
101000001011
001100010101
001100011010
101011010101
110101011111
101111001011
000010001111
011110001111
110000000100
000110100001
010010101111
110000000110
010011000000
011001000101
001101011010
000011001101
110100101010
111001010111
010011010101
111010100101
111110110101
111110011100
110010000110
000110100011
001000111000
000101101100
101110001010
010010010110
100001110111
111010100010
110110010111
101000011000
100100111010
001000011011
111101101011
101001010111
100110000011
100001010001
011011000001
010110010101
110001010000
001110000000
111001001110
011011101100
000100001111
111000110011
111101101101
100110000000
100011110110
001000000010
110011011000
111000100110
100110110000
010011101010
111011001010
001101111000
001100000111
001110011110
100001000100
000010000111
011010101001
111110001001
110110000010
011011101101
110001111010
011001101110
010011000010
100101110100
101000100001
000111011101
101100001011
100000011010
111001001001
100000000001
000101111001
100101101101
111001101111
001011011011
000010101000
001010111010
000100100011
001110101101
100000111000
110110001110
000111101101
001010001111
011000111011
100000100100
100011010110
000010000000
001000001101
010001001110
000111111011
100110000001
110010111000
111100111100
001000001100
000010110100
011010001110
110001110101
001100000101
100010110100
111000000010
110100100101
010010111011
010110011001
001001101100
001010101010
100001011100
010001101001
000000010010
000101111010
011000101011
111111010101
011110101111
011110011001
001101101101
111110101110
101111110100
010101001111
010010011101
000110101100
011100000011
100011101001
101101100111
110011101100
000110111010
000011001000
111101010011
011011101110
111101001100
100100101111
111010110111
000001100110
110100110101
110100001011
111010000001
001011110011
001010110101
100001100000
101000101100
011011100001
000011011011
100101110001
101100111100
010000111110
010100101101
001111011111
110101010000
000110010100
001001011011
110111111011
111100010110
110000101011
111001000100
000100000111
001011001110
011110100010
011011110101
001100011001
111010011111
011011110110
111101000000
101111110000
011100111000
010010011011
101000110010
001101101111
010001000011
001010010110
101000010010
110111001111
011111010101
111111011001
100011110011
110001100100
100000010100
001111011010
111001111000
110101001011
101000110001
111001111111
110000010111
000000100100
101011101110
111001110111
001110011010
110011101000
001011100100
011001011111
010100010101
011111111010
010010110000
100011101110
000011000110
001001010111
010111110100
010110110101
010000101000
101010101010
000100100010
000110011000
101010110101
100000100001
101100010010
010110000110
011011010011
000001010010
011101111110
100010000100
000100101110
010110010001
101100011011
010111010000
101100011111
010011001010
100010100000
001001101001
110010011001
111000110100
111111010000
111100101110
101010001010
111111100100
011110001110
101100001111
001010001100
110100100011
011100010101
110001011000
000010100001
011000011110
000000101101
000011101101
111010011000
000101110100
111100011010
101100010110
100001101011
110100110100
101100111010
010000011110
101001100011
000101110001
001101111111
111101000101
100101111101
001101011110
011111101011
100000010101
011010000001
011000011101
110101011110
111010101000
110111111100
101111110011
101101001001
000111101001
010110000011
110011000000
000001111101
001011101000
001001111011
110110000111
101100010101
101100100111
000010110001
110000111011
110111001000
010010111111
100010110000
010000111100
101001000111
010100001100
001111001010
010100101010
100001000010
010011101111
100011000001
110000001101
011001011110
100111111001
001100111101
010110100110
001000011001
101000111110
000100001011
111110100111
011100111001
100011111001
100001100001
110110001011
110011101111
011010111011
110101010110
010111101001
111110000011
111100000111
011111100100
101001000001
110111010100
000011000000
000100111101
001100010011
100000010011
010010001001
010111000100
110110010100
011100101110
110110100010
100111010111
001111010011
000110110110
000010000110
110100010001
010100111101
011001000110
101011010100
001110001101
101111110101
110011001010
110100011100
001101011000
100101101110
000001000111
111001101011
101011000010
001001011111
111000111010
111011100110
001001011100
000010011000
000101001001
100110001111
010100100010
001101000101
010111111100
100010000001
110101101111
100010101010
110110010001
011101000111
011110001010
100110011110
010011100100
110101110100
000000110010
001111101100
010011010010
010000100000
110001000100
110110111111
011100001111
110110001101
111110000010
010001110010
001101110101
111111101101
010101101101
001011011100
001011000001
001011011101
010001100010
011110110011
000101101011
000110111000
101101110000
101011011001
001001001110
000001000000
101011010010
101110010111
110011100001
001011101001
000000100001
010000100110
101111010000
011000011100
100011100110
110111110011
110010000100
101110000000
110010101101
011101111000
001111000110
101001011100
011111001111
111011101010
001110101110
101001000011
111101101111
111001110101
000110100110
111111011011
101011011011
111100101101
111111010100
101010010000
101000110011
011110100000
010100101001
010011100011
101000111001
101100000111
101010100010
101110011111
111011011110
110011011001
101001101101
110010001011
010100101000
001010011010
001100000000
110000010000
000110111011
011101111111
011001001001
011011001001
000100101001
110010010010
000110001001
001000100011
101011101111
100111110010
110010101011
000000110110
010111001101
100100001111
100010001011
011101100100
000011111000
010100111011
010101101100
100110100110
110100101110
010111111001
010010011110
111110000100
000110001101
100100100001
111011010111
101001010101
111011010010
101001000000
100111101100
101010110000
000111001101
000100100110
100100101000
111000011001
000110110101
111010000011
101100110001
000001011000
001110110011
101000100110
100110100101
010001000111
100011010001
010100011101
110100110110
100010100110
101100010001
010011000100
100100010101
110000101101
010101001100
100011100100
001111010100
100111001001
110000100000
100100010111
010101000010
101101001010
110101111101
010100000110
011101100110
011011010010
+88
View File
@@ -0,0 +1,88 @@
with open('./2021/03.input', 'r') as input_file:
# with open('./2021/03.test', 'r') as input_file:
input_data = input_file.read()
working_data = input_data.split('\n')
working_dict = {}
for one_row in working_data:
for i in range(len(working_data[0])):
if i not in working_dict.keys():
working_dict[i] = {}
one_dict = {}
one_dict[0] = 0
one_dict[1] = 1
working_dict[i] = one_dict
working_dict[i][int(one_row[i])] += 1
# Make gamma / epsilon
gamma = ''
epsilon = ''
for one_column, one_item in working_dict.items():
if one_item[0] > one_item[1]:
gamma = gamma + '0'
epsilon = epsilon + '1'
else:
gamma = gamma + '1'
epsilon = epsilon + '0'
print(int(gamma, 2) * int(epsilon, 2))
# Part 2
co2_data = working_data.copy()
index = 0
count_0 = 0
count_1 = 1
output = ""
while len(co2_data) > 1 and index < len(co2_data[0]):
# Get count at index
for i in range(len(co2_data)):
if co2_data[i][index] == "0":
count_0 += 1
if co2_data[i][index] == "1":
count_1 += 1
# Get highest bit
if count_0 < count_1:
output = output + "0"
if count_0 > count_1:
output = output + "1"
if count_0 == count_1:
output = output + "0"
# Filter out anything without this bit
co2_data = [x for x in co2_data if x[index] == output[index]]
count_0 = 0
count_1 = 0
index += 1
o2_data = working_data.copy()
output = ""
index = 0
while len(o2_data) > 1 and index < len(o2_data[0]):
count_0 = 0
count_1 = 0
# Get count at index
for i in range(len(o2_data)):
if o2_data[i][index] == "0":
count_0 += 1
if o2_data[i][index] == "1":
count_1 += 1
# Get highest bit
if count_0 < count_1:
output = output + "1"
if count_0 > count_1:
output = output + "0"
if count_0 == count_1:
output = output + "1"
# Filter out anything without this bit
o2_data = [x for x in o2_data if x[index] == output[index]]
index += 1
print(int(o2_data[0], 2) * int(co2_data[0], 2))
+12
View File
@@ -0,0 +1,12 @@
00100
11110
10110
10111
10101
01111
00111
11100
10000
11001
00010
01010