File tree 5 files changed +725
-0
lines changed
5 files changed +725
-0
lines changed Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change
1
+ light red bags contain 1 bright white bag, 2 muted yellow bags.
2
+ dark orange bags contain 3 bright white bags, 4 muted yellow bags.
3
+ bright white bags contain 1 shiny gold bag.
4
+ muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
5
+ shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
6
+ dark olive bags contain 3 faded blue bags, 4 dotted black bags.
7
+ vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
8
+ faded blue bags contain no other bags.
9
+ dotted black bags contain no other bags.
Original file line number Diff line number Diff line change
1
+ shiny gold bags contain 2 dark red bags.
2
+ dark red bags contain 2 dark orange bags.
3
+ dark orange bags contain 2 dark yellow bags.
4
+ dark yellow bags contain 2 dark green bags.
5
+ dark green bags contain 2 dark blue bags.
6
+ dark blue bags contain 2 dark violet bags.
7
+ dark violet bags contain no other bags.
Original file line number Diff line number Diff line change
1
+ from aocd import submit
2
+ import re
3
+ from aoc import *
4
+ from collections import defaultdict
5
+
6
+
7
+ def submita (answer ):
8
+ submit (answer , part = 'a' , day = 7 , year = 2020 )
9
+
10
+
11
+ def submitb (answer ):
12
+ submit (answer , part = 'b' , day = 7 , year = 2020 )
13
+
14
+
15
+ FILE = '7_test.txt'
16
+ FILE = '7.txt'
17
+
18
+
19
+ class Bag :
20
+ def __init__ (self ):
21
+ self .name = None
22
+ self .parents = set ()
23
+ self .children = {}
24
+
25
+
26
+ def backtrack (bag , s , bags , depth ):
27
+ for p in bag .parents :
28
+ if p not in s :
29
+ s .add (p )
30
+ backtrack (bags [p ], s , bags , depth + 1 )
31
+
32
+
33
+ def main ():
34
+ inp = lines (FILE )
35
+ bags = defaultdict (Bag )
36
+ for l in inp :
37
+ b = re .match (r'(.+ .+) bags contain (.+)\.|(.+ .+) bags contain no other bags\.' , l )
38
+ outer_bag = b [1 ]
39
+ inside = b [2 ]
40
+ if inside != 'no other bags' :
41
+ ins = re .findall (r'(\d+) (.+? .+?) bags?(?:, )?' , inside )
42
+ for number , name in ins :
43
+ bags [outer_bag ].children [name ] = int (number )
44
+ bags [name ].parents .add (outer_bag )
45
+ for k , v in bags .items ():
46
+ v .name = k
47
+ print ('OK' )
48
+ contain_gold = set ()
49
+ backtrack (bags ['shiny gold' ], contain_gold , bags , 1 )
50
+ out = len (contain_gold )
51
+ print (out )
52
+ input ()
53
+ print ('submitting' )
54
+ submita (out )
55
+
56
+
57
+ main ()
Original file line number Diff line number Diff line change
1
+ from aocd import submit
2
+ import re
3
+ from aoc import *
4
+ from collections import defaultdict
5
+
6
+
7
+ def submita (answer ):
8
+ submit (answer , part = 'a' , day = 7 , year = 2020 )
9
+
10
+
11
+ def submitb (answer ):
12
+ submit (answer , part = 'b' , day = 7 , year = 2020 )
13
+
14
+
15
+ FILE = '7_test.txt'
16
+ FILE = '7_test2.txt'
17
+ FILE = '7.txt'
18
+
19
+
20
+ class Bag :
21
+ def __init__ (self ):
22
+ self .name = None
23
+ self .parents = set ()
24
+ self .children = {}
25
+
26
+
27
+ def downtrack (bag , bags ):
28
+ number = 1
29
+ for p , n in bag .children .items ():
30
+ print (p , n )
31
+ number += n * downtrack (bags [p ], bags )
32
+ return number
33
+
34
+
35
+ def main ():
36
+ inp = lines (FILE )
37
+ bags = defaultdict (Bag )
38
+ for l in inp :
39
+ b = re .match (r'(.+ .+) bags contain (.+)\.|(.+ .+) bags contain no other bags\.' , l )
40
+ outer_bag = b [1 ]
41
+ inside = b [2 ]
42
+ if inside != 'no other bags' :
43
+ ins = re .findall (r'(\d+) (.+? .+?) bags?(?:, )?' , inside )
44
+ for number , name in ins :
45
+ bags [outer_bag ].children [name ] = int (number )
46
+ bags [name ].parents .add (outer_bag )
47
+ for k , v in bags .items ():
48
+ v .name = k
49
+ print ('OK' )
50
+ out = downtrack (bags ['shiny gold' ], bags )
51
+ out -= 1
52
+ print (out )
53
+ input ()
54
+ print ('submitting' )
55
+ submitb (out )
56
+
57
+
58
+ main ()
You can’t perform that action at this time.
0 commit comments