Solve 02
This commit is contained in:
parent
754bf75bd3
commit
a28f74a505
2 changed files with 312 additions and 0 deletions
250
02/input.txt
Normal file
250
02/input.txt
Normal file
|
|
@ -0,0 +1,250 @@
|
||||||
|
icxjubroqtunzeyzpomfksahgw
|
||||||
|
ibxjvbroqtunleyzjdmfksahow
|
||||||
|
icxjvbroqtinleyzpdmflsahnw
|
||||||
|
icxjvbnoqtunleyvpgmfksahgw
|
||||||
|
wcxjvbroqrunleyzpdmfksahge
|
||||||
|
icxjtbroqtjzleyzpdmfksahgw
|
||||||
|
icxjvbrohtunleyzpdmfkbahsw
|
||||||
|
xcxjvbroqcunleyzpdmfksaxgw
|
||||||
|
ycxjvbroqtunleyzpowfksahgw
|
||||||
|
icxfvbroqtunleyzpdmfksncgw
|
||||||
|
ixxjvbuoqtunleyzpdvfksahgw
|
||||||
|
icfjvbroqtunleyzpdmfksadgt
|
||||||
|
icxjvbroqdunleyzpdafksqhgw
|
||||||
|
icxjvbrobtunlelzpdmfkuahgs
|
||||||
|
ujxjvbroqtunleyzpdmqksahgw
|
||||||
|
icqjvsroqtunleyzpdmfksahuw
|
||||||
|
icxjvbroptpnleyzpdmfksangw
|
||||||
|
ipxjvbroqtunleyzpdmfesahgi
|
||||||
|
icajvbroqtunltyzpdqfksahgw
|
||||||
|
ickjvbroqtuzleyzpdmfgsahgw
|
||||||
|
icxjvbroqtunledzpdmwksahgz
|
||||||
|
icxjvlroqtsnleyzpdmfksvhgw
|
||||||
|
icxjvbroqtunleyzpdsfysahvw
|
||||||
|
icxjvbroqtunwnyzydmfksahgw
|
||||||
|
ionjvbroqtunleyzpdmfksahgj
|
||||||
|
icxjvwriqtunleyzpdmfksahgi
|
||||||
|
ocxjvbroztunleyzpdmfksapgw
|
||||||
|
icxjvbroqtmnlewzpumfksahgw
|
||||||
|
ucxjvbroqtunleyzpdmzktahgw
|
||||||
|
icxgvbroqtunleyztdmfktahgw
|
||||||
|
icxhvbroqttnleybpdmfksahgw
|
||||||
|
icxjvbroqtugleyzpdxfkeahgw
|
||||||
|
acxjvbroqvunlexzpdmfksahgw
|
||||||
|
icxjvbroqglnleyzpbmfksahgw
|
||||||
|
icxjvbriqtnvleyzpdmfksahgw
|
||||||
|
icxjvbreqtunlakzpdmfksahgw
|
||||||
|
gcxjvbuoqtunleyzpdmfksawgw
|
||||||
|
icxjvbroqtunleyzpddfkyzhgw
|
||||||
|
icxjvbjoqtunleyzpdmfqsahhw
|
||||||
|
icxjvjroqtunleyzpnmfksajgw
|
||||||
|
ycxjvbroqtunmeyzcdmfksahgw
|
||||||
|
irxkvbryqtunleyzpdmfksahgw
|
||||||
|
isxjvbrlqtunleyzpdmsksahgw
|
||||||
|
icxjvbcoqtunleyzpdfkksahgw
|
||||||
|
ixnjvbroqtunleyzpdmfkqahgw
|
||||||
|
wcxjvbroqhunleyzqdmfksahgw
|
||||||
|
icljvurmqtunleyzpdmfksahgw
|
||||||
|
ibxjvbroqtayleyzpdmfksahgw
|
||||||
|
arxjvbroqiunleyzpdmfksahgw
|
||||||
|
iuxjvbroqtunluyzpdmoksahgw
|
||||||
|
icxjvbrmqtunleyzpdmfosahew
|
||||||
|
isxjvbroqtunleyrpdmfksrhgw
|
||||||
|
icxjvxrpqtunleyzpdmfkdahgw
|
||||||
|
ichjvbrogtunllyzpdmfksahgw
|
||||||
|
icxjvbeoqtunlryzpdmfksakgw
|
||||||
|
icxjvbroqtcnemyzpdmfksahgw
|
||||||
|
icxjvbroqtybledzpdmfksahgw
|
||||||
|
icxjvbrqqtunleyzpdmfksgngw
|
||||||
|
icgjvbroqtunleyzmdmfksabgw
|
||||||
|
icxjtbroqtunleyzkdmfksahww
|
||||||
|
icxjvbfoqtunleyzpamfqsahgw
|
||||||
|
icxjvbroknuyleyzpdmfksahgw
|
||||||
|
icxjvbroqtujleyzpdmaksaigw
|
||||||
|
icxjvbroqtnnlmyzpdmflsahgw
|
||||||
|
icxjvbroqtunlefzpdmfsfahgw
|
||||||
|
icxjvdroqtusleyzpdzfksahgw
|
||||||
|
icxjvbioqtunlsyzpdmfkshhgw
|
||||||
|
icxbvbrodtunleyzpdmoksahgw
|
||||||
|
icxjvbroqtuvleyzpdmfkbahmw
|
||||||
|
iyxjvbroqtunljvzpdmfksahgw
|
||||||
|
icxjvbroqtudleynddmfksahgw
|
||||||
|
icxjvwroqtnnleyzpdmfksahgz
|
||||||
|
ichjvbroqtunleyzjdmeksahgw
|
||||||
|
icxjvbrostunluyrpdmfksahgw
|
||||||
|
icfjvbroqtunleyxpdgfksahgw
|
||||||
|
nhxjvbroqtunlerzpdmfksahgw
|
||||||
|
icxjvbrothunlexzpdmfksahgw
|
||||||
|
icxjvbrzltqnleyzpdmfksahgw
|
||||||
|
icxjvbrhqtunleyzpdmfksajgy
|
||||||
|
vcxjvjroqiunleyzpdmfksahgw
|
||||||
|
icxjfbroltunleyzpdmqksahgw
|
||||||
|
icxbvbroqtunleyzpdofasahgw
|
||||||
|
icxjvbkoqtunveyzpdmfksaqgw
|
||||||
|
icxsebroqtunleyzpdmuksahgw
|
||||||
|
icxjvbroquunlpyrpdmfksahgw
|
||||||
|
icxhvbroqtunjeyzpdmrksahgw
|
||||||
|
icdjvbroqtunlzyzpdmfksangw
|
||||||
|
jcxqvbroqtvnleyzpdmfksahgw
|
||||||
|
icxjvxroqtunleyrpdmfxsahgw
|
||||||
|
icxjvnroqtunleyzpdmfssyhgw
|
||||||
|
icxjvbraptunleyzpdofksahgw
|
||||||
|
icxjvbroatunleyjpdmfbsahgw
|
||||||
|
icxjvbroytlnlryzpdmfksahgw
|
||||||
|
iaxjvbroqkunleyzpdmfcsahgw
|
||||||
|
ucxjvbroqtuileyzzdmfksahgw
|
||||||
|
icxjqbroqtcnleyzpgmfksahgw
|
||||||
|
icxjvbloqtunleyzadmfksaqgw
|
||||||
|
icxjvbroqtunleyzkdmnksakgw
|
||||||
|
icxjvbroqtunleyjpdxfksahvw
|
||||||
|
iqxjvbroqtujleyzpdmfklahgw
|
||||||
|
icgjvbroqtunleyzpdmfksbhgb
|
||||||
|
icxjzbroqtunleyzpdmfkdahgg
|
||||||
|
icxjvbrobtunloywpdmfksahgw
|
||||||
|
icxavbroqtunleyfpdmfksahgd
|
||||||
|
icxjvbroqtunleyophmfksahkw
|
||||||
|
icxjndroqtunlyyzpdmfksahgw
|
||||||
|
icxjvbroqtjnleyppdmvksahgw
|
||||||
|
icxjvbroonfnleyzpdmfksahgw
|
||||||
|
icxjvbrqqtlnljyzpdmfksahgw
|
||||||
|
icxjvbrzqtunlelspdmfksahgw
|
||||||
|
icxjvbooqtunleyztdmfkfahgw
|
||||||
|
icajvbroltunlnyzpdmfksahgw
|
||||||
|
icxjvbroqtunleyzidmdkschgw
|
||||||
|
icxjvbroktupleyzpdmfksahyw
|
||||||
|
icxjcbroyeunleyzpdmfksahgw
|
||||||
|
icxjvbroqtunlezkpdmfksahsw
|
||||||
|
icxjvbroqtunlejzpcmfksrhgw
|
||||||
|
icxjvvroqtunlsyzkdmfksahgw
|
||||||
|
icxjnbroqtunbeyzpdmfpsahgw
|
||||||
|
itxjbbroqtunleyzpemfksahgw
|
||||||
|
icxjvbroqtunlrkzpdmfksshgw
|
||||||
|
rcxjvbroqtujlbyzpdmfksahgw
|
||||||
|
icxjvmroqtugleazpdmfksahgw
|
||||||
|
icxjvbfoqtunleylpdmfkeahgw
|
||||||
|
icnjvoroktunleyzpdmfksahgw
|
||||||
|
icxjvbroqtunlvyzpdmfkfahgr
|
||||||
|
icxjvbroqtgnseyzpdmfxsahgw
|
||||||
|
scxjvbroqtunleycpdmfksdhgw
|
||||||
|
icxhvbxoqtunleuzpdmfksahgw
|
||||||
|
icxjvbruqtunleyzpnmfksfhgw
|
||||||
|
icdjvbroqtunleyzpdmfksahup
|
||||||
|
ihxjvbroqtunleovpdmfksahgw
|
||||||
|
icxjvbroqtunleyzxdmfksahzv
|
||||||
|
ocxjvbioqtunleyzpdmfzsahgw
|
||||||
|
idxjvbroqtunlyyzpdofksahgw
|
||||||
|
izdjvbroqtunleyzpdtfksahgw
|
||||||
|
icxjvbrnqtunleyzpdmfksbhgb
|
||||||
|
icxjvbrjqtunleyhpdmrksahgw
|
||||||
|
icxjvbroqtunleyzpdbflsahgg
|
||||||
|
icxjvbmfqtunleyzpdmfkaahgw
|
||||||
|
idxjvbroqtunlsyzpdffksahgw
|
||||||
|
bcxjvbroqtunleyzpkmfkswhgw
|
||||||
|
ivxjvbroqtdnleyzpdmbksahgw
|
||||||
|
icxpvbboqtunleyzpdmfksahtw
|
||||||
|
ibxjvbroqtunlehzpdmfkmahgw
|
||||||
|
icxjvbboqtunleyzpdmfkaahgv
|
||||||
|
icxjlaroqtuileyzpdmfksahgw
|
||||||
|
icxjvbroftunleyzpdmfqsahew
|
||||||
|
ichjvbroqtunleyzpdmiwsahgw
|
||||||
|
icxrvbvoqtunleyzpdmiksahgw
|
||||||
|
icxjvbroqtunldydpdmfksahgl
|
||||||
|
icogvbroqtunleyzpdmfnsahgw
|
||||||
|
icxjvbroqtunleszodmfkswhgw
|
||||||
|
icxjvbrontunleyztemfksahgw
|
||||||
|
icxjvbrovtunleyzpdvkksahgw
|
||||||
|
icxjvbroqqucteyzpdmfksahgw
|
||||||
|
icmovbroptunleyzpdmfksahgw
|
||||||
|
icxjvbqoftunleyzvdmfksahgw
|
||||||
|
icxjvbdoqtunleyzpdmfkadhgw
|
||||||
|
icxjvbroqtunlgnzpdmfksaqgw
|
||||||
|
icxjvbroqtunieygpdyfksahgw
|
||||||
|
acdjvbroqtunleyzpdmfkwahgw
|
||||||
|
icxjvbroqtunleyzpdmfkfahlj
|
||||||
|
icxjvbgoqtunleyepdmvksahgw
|
||||||
|
icxjvbpobbunleyzpdmfksahgw
|
||||||
|
icxjvbroqtunleurpdmfktahgw
|
||||||
|
ipxjvbzoqtunleyzpdmffsahgw
|
||||||
|
icxjtbroqtunllyzpdmuksahgw
|
||||||
|
icxjvbroqtunbsyzadmfksahgw
|
||||||
|
ihxjvoroqtuqleyzpdmfksahgw
|
||||||
|
idxjmbroqqunleyzpdmfksahgw
|
||||||
|
wcxjvbdoqtunleyzpdmfksahgr
|
||||||
|
icxjvbroqtunleygptmfksahgj
|
||||||
|
ipxjvbrsqtunleyzpdmfksghgw
|
||||||
|
ycxjvbroqtunluyzkdmfksahgw
|
||||||
|
icxjvbroxtuulejzpdmfksahgw
|
||||||
|
icqjvbroqtunlwyypdmfksahgw
|
||||||
|
ioxjhbroqtunleyzphmfksahgw
|
||||||
|
icxjvbgoqnunleyzpdmfksahaw
|
||||||
|
mcxjvbroqtunleyzpdmfksihgh
|
||||||
|
icxjsbroqtunlqyzpdmfksawgw
|
||||||
|
icxjvbroqtuoleycpdmftsahgw
|
||||||
|
icxjvbroqtunleyzgdifksahlw
|
||||||
|
icxjvbmoqtunleyzjfmfksahgw
|
||||||
|
icxjvbroqtunlezopdmfksahge
|
||||||
|
icxjvbroqtbnlefzpdmfosahgw
|
||||||
|
tcxjvbromtunlevzpdmfksahgw
|
||||||
|
irxjgbroqtunleyzpdmfksthgw
|
||||||
|
icxjvbrojtunleyxpdmoksahgw
|
||||||
|
icxrvbroytpnleyzpdmfksahgw
|
||||||
|
icxjvbroqtunfeyupdmfksasgw
|
||||||
|
ihqjvbroqtunleyzpdmftsahgw
|
||||||
|
icxjobroqkunleozpdmfksahgw
|
||||||
|
icjjjbroqtualeyzpdmfksahgw
|
||||||
|
icxjvbroqtunaeytpdmfksahvw
|
||||||
|
icxjvbroqtunzeyzpdmfkshhxw
|
||||||
|
icxqvbroqtucleyzxdmfksahgw
|
||||||
|
icxjvbrogturleyzxdmfksahgw
|
||||||
|
icxjvoqoqtunleyzpdcfksahgw
|
||||||
|
iuxjvbroqtunleyzpdmfksopgw
|
||||||
|
icxjveroqtunleyzptmfksalgw
|
||||||
|
icxjvbroqtunleyzpdmfwcahhw
|
||||||
|
iwxjvbroqtlnleyzpdmfksyhgw
|
||||||
|
ectjvbroqtanleyzpdmfksahgw
|
||||||
|
icxjvnroqtyhleyzpdmfksahgw
|
||||||
|
icvjvhboqtunleyzpdmfksahgw
|
||||||
|
icxjtbroqtuzleyupdmfksahgw
|
||||||
|
icjjvproqtunleyzpsmfksahgw
|
||||||
|
icdjvbroqtutleyzpdmiksahgw
|
||||||
|
icxjvwroqtujleyzpdmfksahgc
|
||||||
|
icxjxbroqtunleyzpdwhksahgw
|
||||||
|
icxjvbqoqtunleyzpdmvfsahgw
|
||||||
|
icajvbroqtusleyzpdmfksaagw
|
||||||
|
icxjvbroqtunbtyzpdmfksmhgw
|
||||||
|
kcxjvbroqtxnleyzpdmfkskhgw
|
||||||
|
icxjvbqogfunleyzpdmfksahgw
|
||||||
|
icxjvbroqtubleyzpdmfdswhgw
|
||||||
|
icxjvprlqtunleyzpdmffsahgw
|
||||||
|
icxjxbroqtucleyzpdmfksakgw
|
||||||
|
dcxrvbroqtunleycpdmfksahgw
|
||||||
|
icxjvbrobtunleyzpomfksahgu
|
||||||
|
ocxrvbroqtunleyzpdmfssahgw
|
||||||
|
icxjvbroktunlejzpdmfksahzw
|
||||||
|
icxjvbrovtunleyzmdmfkhahgw
|
||||||
|
icxjvbroqtudleygpdmfksfhgw
|
||||||
|
bcxjvbroqtubllyzpdmfksahgw
|
||||||
|
icxwvbrontunzeyzpdmfksahgw
|
||||||
|
icxjvbroqtunleysjbmfksahgw
|
||||||
|
icxjvvroztunleyzpdmfksjhgw
|
||||||
|
ivxjxbroqtunleyzpdmfksahew
|
||||||
|
icxjvbroqtunleyupqufksahgw
|
||||||
|
icxjvmrcqtunleyzpdmxksahgw
|
||||||
|
icxjvgroqtunleyzpdgfkuahgw
|
||||||
|
icxjvbroqthnqeyfpdmfksahgw
|
||||||
|
icxjsbuodtunleyzpdmfksahgw
|
||||||
|
iuxjzbroqtunleyzpdrfksahgw
|
||||||
|
icxjvbrobtunlelzpdmfksahgs
|
||||||
|
icxjvbroqtzhljyzpdmfksahgw
|
||||||
|
inxtvbroqtunleyzpdmeksahgw
|
||||||
|
icgjvbroqtunleyztdmfksahgq
|
||||||
|
icxjvagoqtugleyzpdmfksahgw
|
||||||
|
icxuvbroqtunleyzpimfkyahgw
|
||||||
|
icxzvbroqtfhleyzpdmfksahgw
|
||||||
|
icxjjbroqtqnleyzpdmnksahgw
|
||||||
|
icjrvbroqtunleszpdmfksahgw
|
||||||
|
iexjvbroqtunlgyzpdmfksacgw
|
||||||
|
rcxjvbkoqtuoleyzpdmfksahgw
|
||||||
|
icxjvbroqgunlwyzpdmfksqhgw
|
||||||
|
icxjvbroqtunleqzpsmfksqhgw
|
||||||
|
icxjvbroqtubaeyzpdmfksaugw
|
||||||
62
02/solve.py
Normal file
62
02/solve.py
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def load_words(filename):
|
||||||
|
words = []
|
||||||
|
with open(filename, "r") as f:
|
||||||
|
for line in f:
|
||||||
|
words.append(line[:-1])
|
||||||
|
return words
|
||||||
|
|
||||||
|
# PART 1
|
||||||
|
|
||||||
|
def has_n_chars(word, n):
|
||||||
|
count = {}
|
||||||
|
for char in word:
|
||||||
|
count[char] = count.get(char, 0) + 1
|
||||||
|
return n in count.values()
|
||||||
|
|
||||||
|
def count_words(words):
|
||||||
|
twice = 0
|
||||||
|
thrice = 0
|
||||||
|
for word in words:
|
||||||
|
if has_n_chars(word, 2):
|
||||||
|
twice += 1
|
||||||
|
if has_n_chars(word, 3):
|
||||||
|
thrice += 1
|
||||||
|
return twice, thrice
|
||||||
|
|
||||||
|
def checksum(words):
|
||||||
|
twice, thrice = count_words(words)
|
||||||
|
return twice * thrice
|
||||||
|
|
||||||
|
# PART 2
|
||||||
|
|
||||||
|
def differ_by(a, b):
|
||||||
|
count = 0
|
||||||
|
for x, y in zip(a, b):
|
||||||
|
if x != y:
|
||||||
|
count += 1
|
||||||
|
return count
|
||||||
|
|
||||||
|
def find_ids(words):
|
||||||
|
for i, a in enumerate(words):
|
||||||
|
for b in words[i:]:
|
||||||
|
if differ_by(a, b) == 1:
|
||||||
|
return a, b
|
||||||
|
|
||||||
|
def common_chars(a, b):
|
||||||
|
result = []
|
||||||
|
for x, y in zip(a, b):
|
||||||
|
if x == y:
|
||||||
|
result.append(x)
|
||||||
|
return "".join(result)
|
||||||
|
|
||||||
|
def main(filename):
|
||||||
|
words = load_words(filename)
|
||||||
|
print(f"Solutions for {filename}")
|
||||||
|
a, b = find_ids(words)
|
||||||
|
print(f"Part 1: {common_chars(a, b)}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
main(filename)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue