diff options
Diffstat (limited to 'day3')
| -rw-r--r-- | day3/__init__.py | 60 | ||||
| -rw-r--r-- | day3/example.txt | 6 | ||||
| -rw-r--r-- | day3/input.txt | 300 |
3 files changed, 366 insertions, 0 deletions
diff --git a/day3/__init__.py b/day3/__init__.py new file mode 100644 index 0000000..a9e1506 --- /dev/null +++ b/day3/__init__.py | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | # -*- coding: utf-8 -*- | ||
| 2 | from abc import ABC | ||
| 3 | from typing import Iterator, Any, List, Tuple | ||
| 4 | |||
| 5 | from aoc import BaseAssignment | ||
| 6 | |||
| 7 | |||
| 8 | class Assignment(BaseAssignment, ABC): | ||
| 9 | def calculate_priority(self, item: str) -> int: | ||
| 10 | ascii_nr = ord(item) | ||
| 11 | |||
| 12 | if ascii_nr >= 97: | ||
| 13 | return ascii_nr - 96 | ||
| 14 | |||
| 15 | return ascii_nr - 38 | ||
| 16 | |||
| 17 | |||
| 18 | class AssignmentOne(Assignment): | ||
| 19 | example_result = 157 | ||
| 20 | |||
| 21 | def split_rucksack(self, rucksack: str) -> Tuple[str, str]: | ||
| 22 | half = len(rucksack) // 2 | ||
| 23 | return rucksack[:half], rucksack[half:] | ||
| 24 | |||
| 25 | def find_common(self, rucksack: str) -> str: | ||
| 26 | compartment_one, compartment_two = self.split_rucksack(rucksack) | ||
| 27 | overlapping = set(compartment_one).intersection(compartment_two) | ||
| 28 | |||
| 29 | return overlapping.pop() | ||
| 30 | |||
| 31 | def run(self, input: Iterator) -> Any: | ||
| 32 | return sum( | ||
| 33 | [ | ||
| 34 | self.calculate_priority(self.find_common(rucksack=rucksack)) | ||
| 35 | for rucksack in input | ||
| 36 | ] | ||
| 37 | ) | ||
| 38 | |||
| 39 | |||
| 40 | class AssignmentTwo(Assignment): | ||
| 41 | example_result = 70 | ||
| 42 | |||
| 43 | def run(self, input: Iterator) -> Any: | ||
| 44 | prioritisation = [] | ||
| 45 | |||
| 46 | while True: | ||
| 47 | try: | ||
| 48 | rucksack_1 = set(next(input)) | ||
| 49 | rucksack_2 = set(next(input)) | ||
| 50 | rucksack_3 = set(next(input)) | ||
| 51 | |||
| 52 | prioritisation.append( | ||
| 53 | self.calculate_priority( | ||
| 54 | rucksack_1.intersection(rucksack_2, rucksack_3).pop() | ||
| 55 | ) | ||
| 56 | ) | ||
| 57 | except StopIteration: | ||
| 58 | break | ||
| 59 | |||
| 60 | return sum(prioritisation) | ||
diff --git a/day3/example.txt b/day3/example.txt new file mode 100644 index 0000000..f17e726 --- /dev/null +++ b/day3/example.txt | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | vJrwpWtwJgWrhcsFMMfFFhFp | ||
| 2 | jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL | ||
| 3 | PmmdzqPrVvPwwTWBwg | ||
| 4 | wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn | ||
| 5 | ttgJtRGJQctTZtZT | ||
| 6 | CrZsJsPPZsGzwwsLwLmpwMDw | ||
diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..712656e --- /dev/null +++ b/day3/input.txt | |||
| @@ -0,0 +1,300 @@ | |||
| 1 | fzmmmfwDWFzlQQqjCQjDGnqq | ||
| 2 | tJHJvLJVVttNsvTtTvgHHSVwCsQRQQZCZZMqQMQBnqBMQs | ||
| 3 | LgThNJhNSgTJVgvgtghPhbpfWzfbwfPmpprb | ||
| 4 | lDLnSnLZRjmWrlhrFF | ||
| 5 | PffQJNqJbPZbpmjrrCVNFmCh | ||
| 6 | qzbcbqfMfZMTfQTqqzzTPPLMHgBBBtHRStvgHRDBnSRL | ||
| 7 | WPZfJlZZCMwwZPWCwWzVHQhsshVSsfNQHdvQNN | ||
| 8 | FLGDGGnGdVjQQQDQ | ||
| 9 | ccFFbggLnRcLFRtFBmnJzdZZzZBMpwJlZMppMp | ||
| 10 | RZsnCZssCnDccJCnfcQfHTdzMzhdLdMTqdRqpRLwqq | ||
| 11 | tNrGNrrvGhTThQqw | ||
| 12 | rrFStPgrFWWgvmPgQjtmNtmJcfJcsJsZblDZfbfHDFHnfl | ||
| 13 | RdTfgbbPbJWDDqRvsDsmVG | ||
| 14 | NSQZLQZHpFGLqnLszrJm | ||
| 15 | ZMSNMHhNZMMSQwhQJWPBJCbhbcgtgfcJ | ||
| 16 | qZfqPvLnnZGpGpCJlvsMsMlHJJHB | ||
| 17 | mTWFFFTTtVSJMzzjWgSH | ||
| 18 | RbVdtdFtcrmbRQDDVHDQTbDNwLPLfnqZnhZhQnNwfNqnnn | ||
| 19 | nhHfSGHGThhZjnhrrSnsSczdzlfzzdQQVzRNFNcFdl | ||
| 20 | JJvCDvmCbtvpvbMmDvLbCJpmqdVVVcMcNGzRcNFcRRzRclQd | ||
| 21 | vwDCwtLmwLBDJmCHHjHHWGZHBnsnnj | ||
| 22 | QWTMqZhThbTbLwtGBrQfQQNr | ||
| 23 | jdzSSccVPPcgcLrDBtDVwCfNNC | ||
| 24 | vcBgcmssccplTnnTqsMhWW | ||
| 25 | FlcwZhBhGZhFJnGtZZFwlGsWRLHdWqMzPjWRLTLJHHjdWq | ||
| 26 | vfmrmbpfpMfzjHjfdM | ||
| 27 | VCSmVpmrNDMZhSMcsFnh | ||
| 28 | nHqQVtVZGGwwwnSF | ||
| 29 | fMBBBWCsCfMMbWfbsGmGzFjQGQFCPhFQhF | ||
| 30 | fbcsWpJRsWlcNVLtqtLLQcZQ | ||
| 31 | rgNJdfNJpgpJVMMVfmfVJgCtCTqqqzwTqrBsTswcCCss | ||
| 32 | lFLHGWLvHQFhnQFhbFnbHWWPBtwqzBPTcsPTswZCPBGCTC | ||
| 33 | QQtbRtLhtjgdfMRMDV | ||
| 34 | jTRhJpGhQPfPLsDhWh | ||
| 35 | wVVMbqbHwVwwMplHWfsfNmWcSLqcLmSs | ||
| 36 | lVCZlHnwHdRpRGvZTBGJ | ||
| 37 | csppppDDbGLbSqndFHHNdHsH | ||
| 38 | lVTlgWgjzCzfgvfggZWWlnHPPBHrSCqBmrSBrHHBnF | ||
| 39 | QFgvFfjTvZjzlvVTWljvTtMbLcccbRRMbwLMMLQLbw | ||
| 40 | tjhLjLJzpJpwjsqqfQqNrNfRnsRR | ||
| 41 | WvwGBPwWZZrnbBNrNnnC | ||
| 42 | PDvGVTgvTMGvZTGTPvWDZVJjljtLzhtmLlJjwJVJLm | ||
| 43 | WbzpSNswNWszwSLgSNMcrrBfPJJcfsHMrvMv | ||
| 44 | CFllhlGFDVFRCmhQDlDTBBcvgBCTcHPHrfrHTJ | ||
| 45 | qGRgVFhDDZmDnDqhgQFGqzwtzSjddwZbzwpLNzjpdS | ||
| 46 | FlpZrQSJJmQpSpqlQgbbRZCgGCZdDdbNdd | ||
| 47 | WswHfjfnhWPFDsFRDcbBbR | ||
| 48 | WjHvjjWTfTvHFjzvPnPtttVTTJVLtJSpmtlltp | ||
| 49 | tnjrnnnnhNlPBtbbcWpZScpjbZSz | ||
| 50 | wmsFqfqqqGHTLbzpLLbgzMcH | ||
| 51 | FGJqsmQGRVFwwQJschPdhPrBndBhtPhrQQ | ||
| 52 | dRdJRfTnCRNlJjPBDmBJsbBDzm | ||
| 53 | wSFWSgGVSLwpFhpLhQjzgPzbtDPDbPBsztrP | ||
| 54 | WMGvVMLLBCclNHHRlM | ||
| 55 | gfSffQBDBtZvwwpWDHcbwb | ||
| 56 | JnCmmJCRmztsVPJRFjFchcGGWFWcGcHFvGLvHF | ||
| 57 | VCPzJnsPVCjtPjdMsMdmVmMBfgTZBTMfSfZSSlfNNgSSfg | ||
| 58 | lwHJSVZHWWVwJQwbbVVtwWVVdpdPfRfgDLPZLTZLDLgRDTZL | ||
| 59 | hhBrBqRcnhsFFfddmdmmCmmppn | ||
| 60 | MNNBBRRshNHbtVMzQJMM | ||
| 61 | NBsSNtLNTtNsvlTBBRLgFSCbFmbHFCFhgcghSm | ||
| 62 | WJWWDdVzDZJjDJQcCDHmmhCnmHmHFm | ||
| 63 | zQVdQZQwqVQHjqzWWWdHpzMwGMBlGLLtTvRvRNsMwwNN | ||
| 64 | ZCztttSjGSqRZgRPDNQQNr | ||
| 65 | hLvmHshLmLcFwwhhwLqMVRRRJQQVNnRJMVRDNNRr | ||
| 66 | HFhTpFqqLcssmqmFftblBSjCjStjbGWBfj | ||
| 67 | crffjHDfrQfnfpLPgbgP | ||
| 68 | TmFvFCmFTFFCtNsmMsRvlRTpPbLGMnGSngPppShGpbdgGJ | ||
| 69 | vmslmwTNmtstzFsCvRFrHBrDZzcQnWqcDDHqQB | ||
| 70 | LQLPVLGdGrRPRhHgwMhllhhs | ||
| 71 | ZbSZTNqSZfNqNCtSSmTttbpSWMlzWlslpWHsWgJWhwJzBMlz | ||
| 72 | bqjqqFFjHqTTTZTmSNbfmdrFQnDdcvVDGQDvvVnQnr | ||
| 73 | mQdcdsSThlccSWhMgDnQnFtjQPtnjPNvtR | ||
| 74 | zzsGwzrrHGBfZJGrJpDtNHFjvNvDvVRvNRtV | ||
| 75 | wZBCGrbrszTbThcTcLcb | ||
| 76 | gJDDDDcPQgQfNFPhhZGDDcZZSLVtlCqzsMlzqpszlsVtFSql | ||
| 77 | bBrdwHTrHWTrTtzLlSMCCCprCq | ||
| 78 | dnBwRvmnbmBvTpbnbWbTjZPQJhhchmJcmcQPfmGNcJ | ||
| 79 | sjMGBLWGZjsLjJTBCCbvNrBCHC | ||
| 80 | mpcRfDSSdqDdlRqdwRvFrHFbrHJFJVvDVrTb | ||
| 81 | qvlgqwpcSQSfLjjhzgnMzsnP | ||
| 82 | VgmLHHNRNVLNhsNgRHLltjjbCWnCWZbldntW | ||
| 83 | GGMFPJqPwJGTvvCCdqdqlqCj | ||
| 84 | rGwGrMQzJQBjJwTVHgDQDHcsfhVhVg | ||
| 85 | pblwGBlFlWwwlgCSFwbLvQZFvzvZhzvmQTLLzJ | ||
| 86 | HfqccHzVDNqLmmPmPPQZ | ||
| 87 | MNtrVdDjHtrzGBdbGWCblw | ||
| 88 | NNhnnLdnnfhdhVjvThvqVvCj | ||
| 89 | tHtHBzBGWHBWGtPBSvvpGZVbSsTFjSqqVbscgjCjqqSC | ||
| 90 | HBtzJHzzpDZpzMWpGPtWHvZwQmNLlmQnmNdfMmNRmwmlwd | ||
| 91 | QzGqGwmbfTdPBgRRcgmMPC | ||
| 92 | NtNZhljrNjrSrtltWlCJCJJfcVVRcJcRgPjf | ||
| 93 | NlWSZZWsHhWWlprSSvZWHrWfQLLQbLGfQpQzzTFQbwzQdd | ||
| 94 | gcwcSnccnwLRRSzcBQRvZZdvtNtvRbQJQv | ||
| 95 | CqrCrrPsVstvbfDfbb | ||
| 96 | TPlPVhWFFMGMnMjbcT | ||
| 97 | gjjHGvcHgsgbSRQbRFWbjC | ||
| 98 | ttnBTNSSfwBLzplWPPdlLlMPlMCQ | ||
| 99 | TBZpDtmnnZNvhJDHggqqgS | ||
| 100 | zfqzzGwMbllcJFqm | ||
| 101 | NpHgpRZrRpSrSZLghlTjchNlNbhFmchb | ||
| 102 | RHLWHgLBggZpHpgHRZrLgZLQCMzCfDWGMCzMQQGvPmvvfC | ||
| 103 | bBWWlFFBBFdVMLfvsfjrtBvTrr | ||
| 104 | qZsgNZzcwfjZrfPf | ||
| 105 | gcnNNcDncsDGzggDnNRJnzHhmlMVSSbhVVVmMbbhVmMlGl | ||
| 106 | dNNRQszqRhPNfddWltvDltMMNlnncv | ||
| 107 | ZjZbpgpSpjpJgpCCpbFlTnSDTlzclDnMvnnMlT | ||
| 108 | GCJpjbgzJCpwZwrHZrgHsRBwBVRRsqdqPhLBQqsP | ||
| 109 | mnnVCcwGwnsVJntmfnBtBhTDzpzzpDWbDbsLLzpWDz | ||
| 110 | FcHQdZSRHbhZZWWhrW | ||
| 111 | dNljMlPPHdMPvRlHMRdjRRNBnwJfCVqwqqffCfCwtcBV | ||
| 112 | ZGtGzBBGjvdZvLWLcrPVcZcsNVNmVpcH | ||
| 113 | MnlgngCJMgJbhfDbCDPrHHVcNNrVpbVpVmmcVq | ||
| 114 | lSPhlClftSSBvdGS | ||
| 115 | jFhGqVCcPMMdGFqczBltzrtglrsrjBgB | ||
| 116 | wWgwvfDZvnpmnHwHTfNpDbtRWbzltRlSrRlbBSbbzt | ||
| 117 | fHJvJvvTwwJPhCccgQCM | ||
| 118 | BrrrBVgNppDVBbTgDvqWdWZqWqwNmNNHvH | ||
| 119 | sHsHnHlcJjFwMMFFvGdPvv | ||
| 120 | HllCQCJQJsnjgtVTbBgpQrSr | ||
| 121 | JgLPLwbhBrCbLBCJPFFlPFZRTNTZFRqlRq | ||
| 122 | pmffSWvDcfSfGmvsNHZsTRsWllssbT | ||
| 123 | vDddMmScdStfzGcpzzwhJwJwnCbLwwLLCwht | ||
| 124 | sWSSvmsZsdZPWdLPRRsmSrrnlnvJjfnggfrgtfjnjr | ||
| 125 | VWWWBhhHBBHtljMMfJHrrt | ||
| 126 | WWqpWVqQqLNGRNZP | ||
| 127 | QHjjGVBQpffpjqppQsSsQHWJcVVgJFWcFTWgNLggFPNc | ||
| 128 | bzzmbzzZnZztFTNJWRqmqcgJ | ||
| 129 | zDZlqMtbwhCBBfppvHDGvf | ||
| 130 | BNTdfWJmzHNHHzzTdLCfCfCswQjRjljVsh | ||
| 131 | FbGnrFnrPGSSvGPFZFFPGClLQpjQRwLjLplQhRlsrQ | ||
| 132 | GbnvvgvPFwbwcnZMMGSFvFHdNHmTBNJNmmmDTJDBmWcT | ||
| 133 | rBhRPrjJrRtTHtWHWcjc | ||
| 134 | SDdGqmhdFSqblLGlHHfHWl | ||
| 135 | DSSmFqhsFqFdzqFgwsVnvBQPPQPQVrnRsJMR | ||
| 136 | NZcgQdmSwZgdPFPVNFPqqVVF | ||
| 137 | hlhhjMhGjLhLDGDhCBJDCrRFRrqqpLPfpfPRVPprPm | ||
| 138 | MlhjlMDDJTCmZddQQSTcTT | ||
| 139 | zRddrwzwNhrzrtCLtLfsLrqflC | ||
| 140 | MbSDZvVwGZpJwvHvBVfsqtjqlsPPfsqsfclb | ||
| 141 | vJpvJvZTVgTdTgwdTn | ||
| 142 | SZMsTTScDMqwtDDJ | ||
| 143 | VWrbzFvnrvFQQtnhzdPFmfwGfqmGPfDwmfPJ | ||
| 144 | rrLbrnVrLvVQpLHSHjsTBBjZBt | ||
| 145 | bSrpbWpPpfzPRWrWvhJgddrcccgFnFss | ||
| 146 | ljGNTCtMNLGQjNMjQMGtZJDDggcldcFcvhdFddnhhF | ||
| 147 | vNCmQMjmvGzpRPPzzmfw | ||
| 148 | BrbdcqcdSZRLQltNDqFpCpHH | ||
| 149 | jnTzWsWjWjwTQnzMvFlCzNDhNhDCFGpHpH | ||
| 150 | wmmvjVQMvwmsQMMwnsTPgVfgJcLcgfSbbBdBbJSdbSBS | ||
| 151 | bJFbMdcmgFSFgmggJFcGwjRdzPWZWGDDGGRwGD | ||
| 152 | hrttffCVVCTVlrttQwzRzwWTqRGDGwjTvG | ||
| 153 | rfLChHhlpHrfHlnWlpWCpQVcMSmMmSJMmggbmMSMLFNSSs | ||
| 154 | JRMBJfMJQJTcNNdD | ||
| 155 | LHsLmspghmmpdwwwcwRCpPTT | ||
| 156 | ttLLlRSlqjrMqFtZ | ||
| 157 | VjtHVHtvVqttCdnGpHtplcshglNgprrlMhrcNghw | ||
| 158 | WTWRvRWFZQLWDvDWzwscNfcflcshlshFlw | ||
| 159 | WQmBQWPTVGnJPnvn | ||
| 160 | cpRwjcQwVfQzQPQl | ||
| 161 | BZgGDBZBsgWBDDJzlhfhJVmzVfmThm | ||
| 162 | FqWDDGrGDFNqFrDZFnplNHnSwtnSRwRplN | ||
| 163 | VMLVRhRLRfhfgGdfVdZWRdTHNqHCDTrSJNBBBgJNQgND | ||
| 164 | swlcpsFPcPwzpSlTTDrNrQPQqQBBrH | ||
| 165 | zsppFscsscmbzsFsbsZbMfRZdVdVMbVSWhLG | ||
| 166 | NjcjHFjrHHFpjGtVtGWVZW | ||
| 167 | fwPlsJqdndPnwJfQdfllwNtWGdtWMMbtbmbGWbMWGN | ||
| 168 | CPlwnCwnwqClTJThTDzzFcHNSShrRh | ||
| 169 | llqlsNsPNTpDNTDNNf | ||
| 170 | cnvcWFjSrMSFnvWHTzTggHCcllzLpg | ||
| 171 | wjJSSrFrrMMJGrFFFGjGvJnFswsRwRdmBdZbbqqsPtQqPZls | ||
| 172 | jlclpqjcRqpjzjnVPgTmBmjCrC | ||
| 173 | |||
