|
| 1 | +# --- Day 8: Seven Segment Search --- |
| 2 | + |
| 3 | +## --- Part One --- |
| 4 | + |
| 5 | +You barely reach the safety of the cave when the whale smashes into the cave mouth, collapsing it. |
| 6 | +Sensors indicate another exit to this cave at a much greater depth, so you have no choice but to press on. |
| 7 | + |
| 8 | +As your submarine slowly makes its way through the cave system, you notice that the four-digit seven-segment displays |
| 9 | +in your submarine are malfunctioning; they must have been damaged during the escape. You'll be in a lot of trouble |
| 10 | +without them, so you'd better figure out what's wrong. |
| 11 | + |
| 12 | +Each digit of a seven-segment display is rendered by turning on or off any of seven segments named a through g: |
| 13 | + |
| 14 | +```text |
| 15 | + 0: 1: 2: 3: 4: |
| 16 | + aaaa .... aaaa aaaa .... |
| 17 | +b c . c . c . c b c |
| 18 | +b c . c . c . c b c |
| 19 | + .... .... dddd dddd dddd |
| 20 | +e f . f e . . f . f |
| 21 | +e f . f e . . f . f |
| 22 | + gggg .... gggg gggg .... |
| 23 | +
|
| 24 | + 5: 6: 7: 8: 9: |
| 25 | + aaaa aaaa aaaa aaaa aaaa |
| 26 | +b . b . . c b c b c |
| 27 | +b . b . . c b c b c |
| 28 | + dddd dddd .... dddd dddd |
| 29 | +. f e f . f e f . f |
| 30 | +. f e f . f e f . f |
| 31 | + gggg gggg .... gggg gggg |
| 32 | +``` |
| 33 | + |
| 34 | + |
| 35 | +So, to render a 1, only segments c and f would be turned on; the rest would be off. To render a 7, only segments a, c, |
| 36 | +and f would be turned on. |
| 37 | + |
| 38 | +The problem is that the signals which control the segments have been mixed up on each display. The submarine is still |
| 39 | +trying to display numbers by producing output on signal wires a through g, but those wires are connected to segments |
| 40 | +randomly. Worse, the wire/segment connections are mixed up separately for each four-digit display! |
| 41 | +(All of the digits within a display use the same connections, though.) |
| 42 | + |
| 43 | +So, you might know that only signal wires b and g are turned on, but that doesn't mean segments b and g are turned on: |
| 44 | +the only digit that uses two segments is 1, so it must mean segments c and f are meant to be on. With just that |
| 45 | +information, you still can't tell which wire (b/g) goes to which segment (c/f). For that, you'll need to collect more |
| 46 | +information. |
| 47 | + |
| 48 | +For each display, you watch the changing signals for a while, make a note of all ten unique signal patterns you see, |
| 49 | +and then write down a single four digit output value (your puzzle input). |
| 50 | +Using the signal patterns, you should be able to work out which pattern corresponds to which digit. |
| 51 | + |
| 52 | +### For example, here is what you might see in a single entry in your notes: |
| 53 | + |
| 54 | +```text |
| 55 | +acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab |cdfeb fcadb cdfeb cdbaf |
| 56 | +``` |
| 57 | + |
| 58 | +(The entry is wrapped here to two lines so it fits; in your notes, it will all be on a single line.) |
| 59 | + |
| 60 | +Each entry consists of ten unique signal patterns, a | delimiter, and finally the four digit output value. |
| 61 | +Within an entry, the same wire/segment connections are used (but you don't know what the connections actually are). |
| 62 | +The unique signal patterns correspond to the ten different ways the submarine tries to render a digit using the current |
| 63 | +wire/segment connections. Because 7 is the only digit that uses three segments, dab in the above example means that to |
| 64 | +render a 7, signal lines d, a, and b are on. Because 4 is the only digit that uses four segments, eafb means that to |
| 65 | +render a 4, signal lines e, a, f, and b are on. |
| 66 | + |
| 67 | +Using this information, you should be able to work out which combination of signal wires corresponds to each of the ten |
| 68 | +digits. Then, you can decode the four digit output value. Unfortunately, in the above example, |
| 69 | +all of the digits in the output value (cdfeb fcadb cdfeb cdbaf) use five segments and are more difficult to deduce. |
| 70 | + |
| 71 | +### For now, focus on the easy digits. Consider this larger example: |
| 72 | + |
| 73 | +```text |
| 74 | +be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb |fdgacbe cefdb cefbgd gcbe |
| 75 | +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec |fcgedb cgb dgebacf gc |
| 76 | +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef |cg cg fdcagb cbg |
| 77 | +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega |efabcd cedba gadfec cb |
| 78 | +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga |gecf egdcabf bgf bfgea |
| 79 | +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf |gebdcfa ecba ca fadegcb |
| 80 | +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf |cefg dcbef fcge gbcadfe |
| 81 | +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd |ed bcgafe cdgba cbgef |
| 82 | +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg |gbdfcae bgc cg cgb |
| 83 | +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc |fgae cfgab fg bagce |
| 84 | +``` |
| 85 | + |
| 86 | +Because the digits 1, 4, 7, and 8 each use a unique number of segments, you should be able to tell which combinations |
| 87 | +of signals correspond to those digits. Counting only digits in the output values (the part after | on each line), |
| 88 | +in the above example, there are 26 instances of digits that use a unique number of segments (highlighted above). |
| 89 | + |
| 90 | +In the output values, how many times do digits 1, 4, 7, or 8 appear? |
0 commit comments