2021 day8/python: add brute force solution
This commit is contained in:
parent
3099e1e256
commit
66c78818fc
1 changed files with 46 additions and 0 deletions
46
2021/day8/bruteforce.py
Executable file
46
2021/day8/bruteforce.py
Executable file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import itertools
|
||||
|
||||
def parse(line):
|
||||
inputs, outputs = [[num.strip() for num in nums.strip().split(' ')] for nums in line.split('|')]
|
||||
return (inputs, outputs)
|
||||
|
||||
if __name__ == '__main__':
|
||||
inp = [parse(i) for i in sys.stdin.readlines()]
|
||||
|
||||
permutations = list(''.join(s) for s in itertools.permutations('abcdefg'))
|
||||
segments = [
|
||||
'abcefg',
|
||||
'cf',
|
||||
'acdeg',
|
||||
'acdfg',
|
||||
'bcdf',
|
||||
'abdfg',
|
||||
'abdefg',
|
||||
'acf',
|
||||
'abcdefg',
|
||||
'abcdfg',
|
||||
]
|
||||
|
||||
acc1 = 0
|
||||
acc2 = 0
|
||||
for (inputs, outputs) in inp:
|
||||
acc1 += sum(len(output) in (2,3,4,7) for output in outputs)
|
||||
|
||||
for permutation in permutations:
|
||||
trans = str.maketrans(permutation, 'abcdefg')
|
||||
|
||||
def translate_segments(digit):
|
||||
return ''.join(sorted(digit.translate(trans)))
|
||||
|
||||
if all(translate_segments(digit) in segments for digit in inputs):
|
||||
acc2 += int(''.join(
|
||||
str(segments.index(
|
||||
translate_segments(digit)
|
||||
)) for digit in outputs
|
||||
))
|
||||
break
|
||||
print(acc1)
|
||||
print(acc2)
|
Loading…
Reference in a new issue