|
| 1 | +test2 = ['acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | cdfeb fcadb cdfeb cdbaf'] |
| 2 | + |
| 3 | +test = '''be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe |
| 4 | +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc |
| 5 | +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg |
| 6 | +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb |
| 7 | +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea |
| 8 | +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb |
| 9 | +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe |
| 10 | +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef |
| 11 | +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb |
| 12 | +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce'''.split('\n') |
| 13 | +inp = open('Day 8.txt','r').read().split('\n') |
| 14 | + |
| 15 | +def part1(inp): |
| 16 | + ans = 0 |
| 17 | + for i in inp: |
| 18 | + output = i.split('| ')[1] |
| 19 | + for x in output.split(' '): |
| 20 | + length = len(x) |
| 21 | + if length == 2 or length == 3 or length == 4 or length == 7: |
| 22 | + ans += 1 |
| 23 | + print(ans) |
| 24 | + |
| 25 | + |
| 26 | +def part2(inp): |
| 27 | + ans = 0 |
| 28 | + for i in inp: |
| 29 | + patterns = i.split(' |')[0].split() |
| 30 | + patterns.sort(key=len) |
| 31 | + signals = [list('abcdefg') for i in range(7)] |
| 32 | + signals[0] = [i for i in list(patterns[1]) if i not in list(patterns[0])][0] |
| 33 | + signals[1] = [i for i in list(patterns[2]) if i not in list(patterns[0])] |
| 34 | + signals[2] = list(patterns[0]) |
| 35 | + signals[3] = [i for i in list(patterns[2]) if i not in list(patterns[0])] |
| 36 | + signals[4] = [i for i in list('abcdefg') if i not in list(patterns[1])+list(patterns[2])] |
| 37 | + signals[5] = list(patterns[0]) |
| 38 | + signals[6] = [i for i in list('abcdefg') if i not in list(patterns[1])+list(patterns[2])] |
| 39 | + |
| 40 | + char5 = patterns[3:6] |
| 41 | + if sum([chars.count(signals[1][0]) for chars in char5]) == 1: |
| 42 | + signals[1] = signals[1][0] |
| 43 | + signals[3] = signals[3][1] |
| 44 | + else: |
| 45 | + signals[1] = signals[1][1] |
| 46 | + signals[3] = signals[3][0] |
| 47 | + |
| 48 | + char6 = patterns[6:9] |
| 49 | + if sum([chars.count(signals[2][0]) for chars in char6]) == 2: |
| 50 | + signals[2] = signals[2][0] |
| 51 | + signals[5] = signals[5][1] |
| 52 | + else: |
| 53 | + signals[2] = signals[2][1] |
| 54 | + signals[5] = signals[5][0] |
| 55 | + if sum([chars.count(signals[4][0]) for chars in char6]) == 2: |
| 56 | + signals[4] = signals[4][0] |
| 57 | + signals[6] = signals[6][1] |
| 58 | + else: |
| 59 | + signals[4] = signals[4][1] |
| 60 | + signals[6] = signals[6][0] |
| 61 | + |
| 62 | + |
| 63 | + out = i.split('| ')[1].split() |
| 64 | + string = '' |
| 65 | + for digit in out: |
| 66 | + match sorted([signals.index(i) for i in digit]): |
| 67 | + case [0,1,2,4,5,6]: string += '0' |
| 68 | + case [2,5]: string += '1' |
| 69 | + case [0,2,3,4,6]: string += '2' |
| 70 | + case [0,2,3,5,6]: string += '3' |
| 71 | + case [1,2,3,5]: string += '4' |
| 72 | + case [0,1,3,5,6]: string += '5' |
| 73 | + case [0,1,3,4,5,6]: string += '6' |
| 74 | + case [0,2,5]: string += '7' |
| 75 | + case [0,1,2,3,4,5,6]: string += '8' |
| 76 | + case [0,1,2,3,5,6]: string += '9' |
| 77 | + ans += int(string) |
| 78 | + print(ans) |
| 79 | + |
| 80 | + |
| 81 | +part1(inp) |
| 82 | +part2(inp) |
0 commit comments