From d315c3a5539c29e6cc4d60f52e2ecfd6b783aba4 Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 3 Dec 2022 16:15:19 -0800 Subject: [PATCH] day 3 --- 3/a.py | 42 ++++++++ 3/b.py | 46 ++++++++ 3/input.txt | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3/sample.txt | 6 ++ 4 files changed, 394 insertions(+) create mode 100644 3/a.py create mode 100644 3/b.py create mode 100644 3/input.txt create mode 100644 3/sample.txt diff --git a/3/a.py b/3/a.py new file mode 100644 index 0000000..3f5ed33 --- /dev/null +++ b/3/a.py @@ -0,0 +1,42 @@ +# All items of a given type are meant to go into exactly one of the two compartments. + +# The Elf that did the packing failed to follow this rule for exactly one item type per rucksack. + +# Every item type is identified by a single lowercase or uppercase letter + +# The list of items for each rucksack is given as characters all on a single line. + +# A given rucksack always has the same number of items in each of its two compartments, +# so the first half of the characters represent items in the first compartment, +# while the second half of the characters represent items in the second compartment. + + +from collections import defaultdict + + +def get_prio(c): + # Lowercase item types a through z have priorities 1 through 26. + # Uppercase item types A through Z have priorities 27 through 52. + c = ord(c) + if c >= 97 and c <= 122: + return c - 96 + return c - 38 + + +total = 0 + +with open("input.txt") as f: + for line in f: + line = line.strip() + print(line) + half = len(line) / 2 + charsleft = defaultdict(int) + charsright = defaultdict(int) + for i, c in enumerate(line): + (charsleft if i < half else charsright)[c] += 1 + + common = set(charsleft.keys()).intersection(set(charsright.keys())) + assert len(common) == 1 + total += get_prio(common.pop()) + +print(total) diff --git a/3/b.py b/3/b.py new file mode 100644 index 0000000..310414e --- /dev/null +++ b/3/b.py @@ -0,0 +1,46 @@ +# All items of a given type are meant to go into exactly one of the two compartments. + +# The Elf that did the packing failed to follow this rule for exactly one item type per rucksack. + +# Every item type is identified by a single lowercase or uppercase letter + +# The list of items for each rucksack is given as characters all on a single line. + +# A given rucksack always has the same number of items in each of its two compartments, +# so the first half of the characters represent items in the first compartment, +# while the second half of the characters represent items in the second compartment. + + +def get_prio(c): + # Lowercase item types a through z have priorities 1 through 26. + # Uppercase item types A through Z have priorities 27 through 52. + c = ord(c) + if c >= 97 and c <= 122: + return c - 96 + return c - 38 + + +total = 0 + + +# Every Elf carries a badge that identifies their group. +# For efficiency, within each group of three Elves, the badge is the only item type carried by all three Elves. + + +with open("input.txt") as f: + while True: + lines = [f.readline().strip() for _ in range(0, 3)] + if not all(lines): + break + chars = [set() for _ in range(0, 3)] + + for i, line in enumerate(lines): + for c in line: + chars[i].update(c) + + common = chars[0].intersection(chars[1]).intersection(chars[2]) + + assert len(common) == 1 + total += get_prio(common.pop()) + +print(total) diff --git a/3/input.txt b/3/input.txt new file mode 100644 index 0000000..7565e91 --- /dev/null +++ b/3/input.txt @@ -0,0 +1,300 @@ +vGFhvGvvSdfwqhqvmCPnlFPnCNPcCFcWcr +ZbWZDMgsTHsrNNLJcJnsJl +HbBWQgZVZZBzbgZphwjqpmmVfdGmjG +vvCJLGnthChvtrvCCnRbTRqRPRBtbTRfPRRl +djZSgHNNwjqcdWlbcbfc +pFgMSfpMfzMDZFSgSjGJQQnCvMCVLnnJQLGC +gVhQWQpcWZVwwHVvFvnnnnDFdL +lzbPlztjltztzSjfGcPdTHLTHFCnnHCLndFGGd +jsNbzbczclttSlfbqlljRQMJRMMpJwRZhspZgJRM +hLJvfGcNDttSGvJtvSSJcqbqFBBWbjQqDrqbjDDjjb +lTswlzZdssgFpdPwZpMQnCjngCCjWBQBWWQqng +PRZMpzPZTdVZTfJvFvLFRctJcf +JHbQtHVHHLLbTJmmZddgdgwhllMNhhhTgg +spqpNGDjDPMhCFChMj +DBSDDGnpSDsDWqWczcvSqWvsBtJJLLZrRVZLJRbBZNVrBHrV +GwGhfhPhpHccvwSwrTsmsCjDmqTfbDqjss +tQntQcNRJMFnnVQFFctJqCsRmsTjjbDqDlTqTbWT +NZdVBZZNFzMFNNNvGprZcLGPGrrpcP +SvCPLrrlCSvZLrCPPBNPRvNLQBbpmbdggQTTfpfQgpgTqbbb +HVjHwMVwWtdMGwtwMwdhDFgbJgJqTmFMfFfmmfTTpq +whtHVcjDtHWtsWdwVGVHthDPzRrNSsCRLrLRlZNzZSNzNR +rjrlCCBtbtntwPPt +FvfJHqBJQWWgWgWLwnMwMLbzvhwTTp +WqHgWqBFgGfQgHfVdQFfVfrDllSsRSDmVmRCZZmSSSSZ +gjnppCgGHNPrqqmFnnbr +tGltVlJRtLRlrqcJcqZDqBJc +VvhLlvWltWdVltRTLTfgwSjGNHhggQNQNjps +HDWjCNfQjmwgWhcwPPVbZGcpMb +sFltFBRRSRJBSSsBlSSnRLPZbVGMVPZpMpPZpcMrFZMc +BLTBsstlqBRRBSvJJBsHdgdDNHCQHvbdCjQNNW +lRGzWLZNFwJVbVVGcJ +HqqpjPvHQnJgVgTnbdTV +rVvjBQHQrQhCrzlzWrRlDZ +jZjTZRSjZnhGZhzGnG +HbnPHrCbBDMnhcrVLWWLLWWg +MBwbCNDDptwNMttjdSnsqSRSFFdjtj +bSfvcsNsDdccHHQm +ljrlplvBhDHDHHHHJl +jgpzhrzRrvhFRFrzFnWfZtTwSWZPbbqNbsTqsW +vvCTvcDzHcgtvWjvcDcvgBCgwTdPFPpwpwmTSwwmdPwZpfZh +rNLMNVqLGNrVsRNJNsPnGnnfnpSFGdfddndd +VPQsMbVsPbzzvgCzgv +wPsrqprHQQZsChZn +cjgFLwWDlDltfLmTCnmWCnZZChCQ +FccccSLGFwjVlfVLLtgdSPSpMpBMdMBRRdHdBp +mQQcpmCCprrfLQqZVGqLGv +PtsJdsMtTTTvFqLTnnqbGZ +HjldthsHWztJzstZhBcHDDgpNpCpmrpgSD +lCmhDljDJgWggcnh +LdQrbdTDQGfGLPdqqFrHwRJcWRHgHBWHBJ +sLqsGtDqdGQfSTsqtfqqVMzjCzlvllZljNpCsMMl +CfLCZCCqqHlhSSrrtpRjpL +mWQbnQZVTWwNdwmDSbpbrFptjDrjRj +PJWVnTWPVnnclqqBsCCZHP +tqvtbNCgqJSgZgZvSncrrcGjBGhcnVcR +DswGQQQdRcjBnRDn +sMdlFMQQpfZbvlNtZGgN +RMlPllHtrlrlcZLsZfLcfwdDGD +QppnQhTBgwQDJsGzLQ +gTjnmjvphDSNMbtMbtMRHNVr +RHHcChrVVChCWQmRnMZmnmbTbGmFnqTT +gpzpfpszDwvDDNdwjdstnSMMHGMqvZnFTTZqbq +DsDdpfppwHsgJdjzfdDjdssLPlRccPQQrJcchPQWWQRhlQcr +rsrjQjnRnQZZqMmMMVqs +WTSTdvJLvTGJTGCMGvzBBpVVqqFVzBzVmf +tTSJhGLJbJhLJRRbHPQbnHHMrl +GGgMgBJHWHhLWMhWhgfrhgWLzmsmlzTtzHmsmlszRtszRVlT +bvScppfcQfcQSFCQpnPqwwTdRTvmzVssvswtddsv +ZDpqnPbQbPPnQbFbfSPSqbQJhGrjgMZBhWLrLrBBBBJWhg +hQCCGCNhDmGFJsTt +fcggBBpvBSrtsRTpRmpD +wflWlBlfnvfWWgMNPPLhPnzhPmLQ +pcGGTvVpcQLLzSPPPpVBVQwngNqgsJqgJgqSngsJMqJg +RZDFGhtCDGmWfWsNdwJhnMgwswqJ +ZCGjRGjZllFGHvvcTPjPTQpB +FDVsWrFZnnnfNRJdgBBBMLsJLH +wcThcTphvCThwTlblpzwGlpLRgHJWLgHLBHdHWJLBLWR +mwcbPmClwlzlwvvbTmWbQSjZmZSrDnSNVZfVFnZf +tMlttlFRSrcSFcwQSRwSzrMMPPGGPGLWgNfTNTcLPNPGBPPG +pbZVCDTqnCjVDHnHVnhBPBBbhBhbhgLgmWLh +qZCJZJqqjjCVvvRQltlzTrJtMMMw +QvvdBDdMbdFFJrMMjjmjCfCntC +lHTPsNLPcfVZLnfj +GgsWpHPpTPWpNsGvgdnDbQRQFRbdQg +jPNwllsVZjhslSjwGShZMdJDmmdmWLtMDDPHMPFd +QbvpDrbBrtMbbHJmcH +vznvzBRpBprQBqQZjNswwZDnSlGjZl +PdNTzLQPLrVMzGcMtt +FsSvDrvmrwDggHGwgV +vlpZpZmfnmFTlTWJWdbrdh +mZmnggMTSJrrmnrbmTbngJMtwPvwzzRvPGhQdGZPGPLvGvRd +FFVBNHVlFlDfCsWwLwPzzhGPCvzhQv +qBHLsDcfqFfDDfsFLNcNNBFsrgpMpnJSbnmTnrtmbMSqnpnr +qjBNwBPNPspqddssbsTsMDhTDrThQb +gvzZSZzFbgHnrHmn +fcvfZcRSZFGfZcvFbGttcPfpVjWVwqBqdwNdwNNpqV +RrTmtTrqznrnRCSqJrWlWDbhWVnfVDVWdclV +QBBgHQGvHHQswLHQQLGLHdLhfhlZZFlsscVDZfWfDhVlZZ +dLBMPpGPjLHPHPBHjjgQjHQztSJRztmrNCSCmSpmprrrrz +HHWJgjjsJrPBWBjgWgDvbbvtbNDNVtttMPPp +SnLTlhhNSntRVVLFVbbb +ChqdcNTNqqJCrQrQrrBC +BvfLLngFLDrrlDFDDnGmGlmzqzdGqMMWWwWW +RVsPbsbVZbjctccCcsCSPmdNqMqMWddwqVzhhNHwHd +tcsjPZRctZTSbbtSbtsSjZznnJfJBrfJgLvJJDDBvpTrgp +LJJsNdtJQtbWRJQttjGhjVnjcnzcsczGqj +MDPPlvCwrTlZfMMvTlPTdVcVhVVjchSBrjccSnnq +lgZCvTTZfMgHLptdRgmR +gCDrJRNgJDZRCwMgqGbtVVjTjlFbbTtR +mccnfcnSQScdvdcQQQpWdnWSjPqTbFFlbPqbPVGNjTPjtN +NnzmpWmBBzzpzDgwhDghrZrw +wcbVDBQwVBFQLFQDQcqQcLcJfpHJjmljGgMHfcfgGgjf +PtnWMtSnlgJmWWmm +nThPtRnzntstvrtRPqDFLMLdDwBBFLQDBT +zshqnVqTwqHqZQgZDSZjpFjFFF +PsBRvttdcgFFBSmc +GlPsbLtrvrrrtJlCTnVTlwwfnhwVqH +CvVVnFwWZnZwJZMNlCMNMpbMrrQG +cpghqzqqtzbGMjTNclGN +PqLBsgqBsSfBffShVmvRVwWsFpwZVpsn +LzsLSScvscqNdGdgddQjCDbzhpCDbRbhDpDDwDwt +ZlMBBBnlMFVFHVMJflJjJBfhRnCbCDpRttRPDCbWpCRbpW +mlrFmJrmscNGmsjm +FqQjLRjfvTFvlPHHNPMBDDNDPR +chWptpcWTzBPMsMMMBHW +zcJghwJZpZcgnctccdzzpGQrbQbblFFlTCCFTbdCFCFq +QcwNpCcQzpwtCGPPPnrGrfHfvN +FgjhhhjMVFVjqRRqDBVBqvMZvdrHnPZWZvsnZHdWnv +ShBFhDVghhTBgBBFRRgRCmCPCcpPbwCmLTcCmbpb +ZzlzsBzZnWnsBhFRvfvvLfWqfvMv +GgQGjjddHHPwpHpTGjPdHMvtvwJqLtJRFlRFRqMwLc +dgbbdjpGGgTHGGgQgdpmpgblrBrhrhCBSSznChsVhBsmNB +PhSwPdnpsmSWWcjjDFNqnc +GJGCTLbTZTrlfflVLFchHDHHDFcVVN +RhlhrllQZhCsPvRBvMtSvw +GVgnrgTWGVGjLVjWSpvvNmPTmpQmzvhf +tBbBDsFtszzSSbPZbh +BqlqdcqSJtFMdMjWrnGCWRrWGG +sJVJsQhMhPPSQMwdHRmmsmmwRmsr +zLFjLDTBFNWWwrqrffldlRdFRq +BLjzjTpzLpzWGTbQpMJvVMQwQhhMQM +RqSztDRhJDLmRMLlfvsP +dMdMMHZCsnbdvmbP +VHcZVVcZTwTQpgHQcgFMFBpDDzBqqqDhqJSjSjJjSD +rdMnMGjdHhfnjqWWDJPpGWPtvW +PTBSQSSzZSBSCzQFFSlZTFSvcZpWWcJvtJppvZpLLcDVcv +sgQCsBmmlFCPFFzTgTBgdNnrNndnMrrrfbrNjf +bpZdggTjHbgLglpHjldvHpjdhTVzmhzzzFPzmhFsFQSFnhhN +rPCDBcCCMPGcWDNNWQzQQSNQnNzQ +fCCJtDtGGGfGBtGqBrrcfRBcvPwpLgdZZvHdljvqpvdwbpvl +qpmsNldnlHlCqQlHsHNHwJpJMtwvvvjMvfWjpDtt +TccVBScrzBzzTGPbVTPQhWjfMjwwRtJtjMtWDWWfDS +FQFbzBGczGBFLnFmmqsCLg +qpblblvpvJzStJDrhrnGrdhDfFqf +ggNQNwBgmTcgCBTBTQQjNfDCnZRRRrRGCnrFfdnhrC +mjVFHQTHNjTwcmpzJzHltltbSssS +WChWmdcmzndhFcZrrbvrVMVssj +NQLDlDplpSJGpLfRRMZVBBGjVsGbbjbBZsGv +QNDfNqlpLgSfNfNgNfpgpqwndwWwnCCnnTFMdHndzn +ZGRPTngTZMSGMGnhSgRjQHsPbqjmsWHQCQWbNN +BFLLfpzVDBfDdlfQcsbVcNmQsqqbcC +zFvdplLDLtzFmrrwMMtTrShZ +nTdmnVCGqTsSBTqv +HlMPwMlHfPSfBBmFBfSL +trHHwRHRwMHPMJQJHnDhbdRhdpCZmChNnd +lwHWjzplvHqWHGsMLsLwLfgdfLdg +tPJNPQmQmSGcTtFmctGmSCBgsBBRbLBRVdLVLCBBLgVf +FPtTPQNPrPPQctTcNPSQJJPDjlzplnGDDjWWplWHhGvpnr +jwvvDbvsRsrrjrfvfrrZsPpCpmPJJPqlqWmzRJRTqq +HdLttdSQHdLHMMtNdLMSTtHpCmPplWhCzmzmPWlJhlNplP +BTSLtLLQtnVZDnffbwfw +snvQdrtrQprWpgmGLp +FhzwlwHccBcljFBSDmHmLpgRmPDCffWL +zFhllqjczzwJqqSqlZMsvJgVNMTbssVNnQbb +dLZHrWjWPFZWZnPjZttjddFnMDVMGJMQqvMVGVRVpjVpGVvv +zhzTwTlfTwCsShSgNhfzsQQqvMQStQMDGJJGvGQVvq +TTwCBfsfBwhzwTBCzlmHZdLmBBbtLnLbFnnF +BhBRLFmlBlmhgShHmhSlZlFgvbQNwvcsvMCcsQCwNQvNMsBw +ttWddDjrfjDcssscDbvH +jfjfPWdzdfjdnWpjtrzqnhmJGJFhSJRHSmSmlqlHmq +QvJTgvsvghHRHHNbZvNZTRSzBBCLrDqzrfDDtJSqSLBC +cPPwdcFFPDwfFrBrFfFfrC +nppwdplpRvllsgDH +BGLLWLLwHVZwHnNhwsMsrqMqhh +STlTpDpmjzmjjjgccqdsbNbBhlNnNMhsqs +pjmgjfSDSzmSgFzRZQfRRZLBVLVtZZ +WHjddztMtVLNNFFTmbFPFPRw +bJnvpQfqccQJZfpcbvCphcFGDPFGRwDGDDGwGsmPFnPF +rvffQJZJqrpZCJZJQrQpvBvStlSWSzVSWBbzBLzjtjWWWj +SJFMSMGSDLTsFgHvHL +mNzRrRRzjzqqgPHvLTHjlvWg +ZLbRpRnRnCrbmnmrRRNnwbGfMwDwfDDdSVMdVJdd +nsqTbhcDssPsPWsnchPJMSTSMmJMwTSTCJJfJw +DHvFvvdHpvpGFHDMVVJVplCCVpggCl +RdQjtvHtDQNGsZqzcqPqbNcq +GFzRjczzQJnLjJvvTj +mSfHrNHDzHDrDSSSBvTZLTNqWJWBWLlv +PfgCmfPzDVrtHsddVMsRFcVFQM +sfBgfBfBsHBHFGhsqfjgQZtQQMdZgbZQptbM +rNLRSzRTrrvvLSTWGpjpNZdQPtGtMdNM +wvSWLwzTGTCcwwwJwvwcrcRcVfFBqhhVhDqhBllBfFqBCDCs +LbTpDTcMTSzzMLhScnDnSppNQwVNZFBVnFsrwQQZrQrQrN +tJtJCRlGWljGWCtjJZVPsJBsVwQmrQNN +fvHRftqjGfWGwtfGqvLTzDTzzzchSbMDTd +JJhWZlhqLDHtBDrqrB +bwwmfrSmbmFjVSFQwSdpDvGdpPnRvDtHpGtGPG +VgFfcSQfFgmLLrNThllTZc +QmfvrpnvrrJGnBSCFTBMSWFS +NVMggbVPzCTgDFDD +NRqHRZjVRZdRVdZwNPrMrchGhGpcGfvhQlHJ +nlBdCldndlZTttSSBBccPfGWLLHcTTcWPbbW +jpsFzFmzDzNzDGChGcGGmPQHQf +CNzqvvVJNFqvgRtlqRtdnwSZ +MJtDbNHDDpmVPJVzzjLm +RslhvlfRTWvWWRwfllSZngmggznjSPznLjmSnz +TlhffRwWQhChDqbBQLFHqNrb +HWnmSbzflWltlzLfWWDzjMBvCjjCTCgcMvzBBB +qRRRZJwhZFGdRNfghVjMVVgfcghC +QFFqwNNNwdNZZpqqZfnDSHmmlDLtWtHWlQmD +JrFdNTTLRBTJrFVrBNdVLFBdlHbzQQsQzbPJtpbtltWsHbQw +gZffDfMlCfjCSqMcpHPWHszstzHjQwpb +GMnvfGlfvSqvcMMDgDDcfnqSVFRdmTmVdNBTdmRmBFVnLLBT +ZvRHtDcZntLZssMssQBrMdnC +jglqlVdlbqgVWjJMbrrBCpmQBBfrpm +GqVVPPjPNjFVllNjJjFDvzTLZRvcLRLvTGdGDv +fDVzvVfzzZPMsMbb +LHtBwLBdhFgdHLLthRwFGGMsmrHMmmbZSmqbMGGG +bblRwbTRlllfVQnCQn +fVZzjRzpzpVCRPZhVWQvvLsWWWFQlmjWmG +JDHgJdtwbZqJqsWBBDLlQlvLms +cHHtdbqwrqbbtSbTgSTcVCMRZnRRVNhVPNMPpfMc +fCMPBBdpMpsqMssQccnV +TlwGWDjDZHLjZHHlLGmnlnNcRllsJcqtsJRV +ZHhZHThLLrGwjDDjLwGWWWSjPpbpzrvBFBFdBBbqvCbpFfpg +bvDfDPtCVfFFVdWWpmLRmzWzzdBW +jgZTghhjrGrsswrsghHrlgTGzSRmMLwpJMSMzWLLWRzpRRSc +lpjTpGHlpsNGTHllHrCFnDNPtVnvfQtQtQNP +BwlQcwZBwwwQNqJTrrsRGCDTNt +bMpVPSfRvCbCtTqsCs +dPSRfRpPPjjmLMgZBZBLZZwFQnZn +TsVfggTqVnsLVTdTpmDdRhwPRtPRDRwD +ljHBSWZvvFWvBFPppnQPwnpmzR +MSHSjbBclBSjccLJgqgnLVqTbsTT +zncfVgRzVJgnTfVqNHvZJZNJNMpHbdvH +PCBpsLjPPmMGdHNdHBHZ +jSLlrhLPDWLrPrDCLPCfnpzcVRFcRTnlVncntT +ccvSgjHtRjcjSvjvSrBjzSHHwnJPbgwPPZVVVZnPpZlpwnlT +ffqNqGGsGWqLTNqZwdndPnnJJpZVJW +sNmqhsCMQsMTmjrcmrHrRj +gWWWzNVJDwDzVWVDGbGNnhTnHLsmhmhfsQTNSmHd +vtMPZvrZvqtqBHljrqSnnmTfLfdnQsjhjmhL +MMPZPBqZCrBtvZcrBlDbGbbbzHJCbbRwgwDz +hGSRhsMswhcNNGwhwncMnCqCJNrHJPJJrJtCJdqHJm +BgVTzWBdTfCmfCJH +dlbVFvvWVZhSRQDMnlhc +WfpzBZmgJlQVGvWF +wHSbrHwmccnrmrHsClGqFGbQjQjjQJQQGv +SHPwwsRcrrNtrNSsphmZLzpfzhghZPdD +DFDPRpmgbPQtmgBBQDDNJTMMBZsqsZGqGZTGCGSqWG +fVvVVLcJVzlvzhqfSTCsZsMGMHqq +zJdrrdnzcLlwczwbQmQngRDQPbtDpQ +HDZZrpFqwRrQfBqhjjlVlQ +czTgvvWPNgPGcTlsQflCVshClC +PgNvtSJNvGVMMzNzgGvPGGLHFDdFdmZSZRdDdRrmpFwL +SVHNVFVPBHJqHhgFCgzLmCwppm +DvDdsGZljDlfdZnjnnZGMzLpRgLfMCLmzfPLhmgp +jZDZlrvrZTrTrTQrDsjslHNJqtWbWHbqbPBWNVQWBJ +NmGGBdWWJDJTTZHm +hFVhcqFjncpcppSjqfppqDvzDDDbbDZvDZZbHfJgvJ +jrPqnnHnqSPwPGWPdWst +BfhbwMwbbPbHPPPlrdJjrlMJLrJVTd +pnQnGnWDjnJdlJCh +qshsWvpttzNNQDtzRRPvwfcPHBBBHwbw +SHzGRQjhwwhGzjjwRjfBqpqbNCqNnnqqQqPlQC +TZtgLmZgVmgdFgmZtdrbNqnqlNlpblnlrnBd +DvgmvvZgmWJJjwHHhJSzps +JjlrlJjPJgDjJjJnDRDjNwGGqMvSddvPvwQddqSVvq +SLpphFLhFZhWLzvswwWqsqVVQWdv +FSHtTLZpfzRDDrJgRNjT +wjCMvrMlqqWHvWqddrHqgnBNhcffthhVLtpgLBnw +GbQFZzZZphnpgNZV +FhFzRTDRPzsRQGQGTFlllrJHjdsJlHMqjjHr +LqDcTbmJcqSJSTmnrTcmJrfffplfjZsGZfGGZfQLdplj +hWddgBvzWFZfPsQlGh +RBWBRCdHtgHttVVzHBVNNNDwSTDcSSSbScDDwbwbnmRS +FFPzwlZVVrzFFlFLVlllZdHCHPQMnJQQbhhChdhCbb +BRRqGBgRfqvgvBDDDTRgghNCMMTQNNbVJMNJJdbbdT +DfpgjGfsRWrFVzwLcs +PMTSdSmFjhFpNTqvppvRBrRBrDqB +HnZZznJbzGZGlZtZWHlJGcGcwMvQBsrwRDQvcDgrgDgrqRvq +HGlGfnJZfMMCfNhm +nRssqlqVRppVwdMMQwFgtRFz +smTvLLTvvNLtwMMQNg +CmPGBvZGWvBSGGDmTZjZlhpJcpHDJsbDnlrrprpl +djcQGNQqdGdGqMCgndwgCLDMgW +nvBvHpBppnvPPnJTBWLJVMwVfWJfCbfWgW +hsHHpBsvRTHpsPszTBTTsRTslGqGqlcqlScnqmhZmmZSZSjl +DddBHCmfWCBTDBHTHfMpzhzpJJMJsFrGrz +tPVPmbnttjPnZvSvSbnmZPZPNpNGMpJNzzNrGJpvhsshMpFs +mwnZcbmmStbVtVjbZVlcLTBlcLCRHRDWCWWW diff --git a/3/sample.txt b/3/sample.txt new file mode 100644 index 0000000..f17e726 --- /dev/null +++ b/3/sample.txt @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw