initial commit

This commit is contained in:
s-prechtl 2022-12-09 08:29:06 +01:00
commit 27fe77bbe1
134 changed files with 21939 additions and 0 deletions

6
2022/Day1/Day1.py Normal file
View file

@ -0,0 +1,6 @@
if __name__ == '__main__':
with open("input.txt", "r") as f:
weights = [sum([int(i) for i in nums.split("\n")]) for nums in f.read().split("\n\n")]
print(f"Solution 1: {max(weights)}")
print(f"Solution 2: {sum(sorted(weights)[-3:])}")

2256
2022/Day1/input.txt Normal file

File diff suppressed because it is too large Load diff

0
2022/Day10/Day10.py Normal file
View file

0
2022/Day10/input.txt Normal file
View file

0
2022/Day11/Day11.py Normal file
View file

0
2022/Day11/input.txt Normal file
View file

0
2022/Day12/Day12.py Normal file
View file

0
2022/Day12/input.txt Normal file
View file

0
2022/Day13/Day13.py Normal file
View file

0
2022/Day13/input.txt Normal file
View file

0
2022/Day14/Day14.py Normal file
View file

0
2022/Day14/input.txt Normal file
View file

0
2022/Day15/Day15.py Normal file
View file

0
2022/Day15/input.txt Normal file
View file

0
2022/Day16/Day16.py Normal file
View file

0
2022/Day16/input.txt Normal file
View file

0
2022/Day17/Day17.py Normal file
View file

0
2022/Day17/input.txt Normal file
View file

0
2022/Day18/Day18.py Normal file
View file

0
2022/Day18/input.txt Normal file
View file

0
2022/Day19/Day19.py Normal file
View file

0
2022/Day19/input.txt Normal file
View file

49
2022/Day2/Day2.py Normal file
View file

@ -0,0 +1,49 @@
if __name__ == '__main__':
with open("input.txt", "r") as f:
rounds = f.read()
signsWin = {
"A": "Y",
"B": "Z",
"C": "X"
}
signToSign = {
"A": "X",
"B": "Y",
"C": "Z"
}
signLoose = {
"A": "Z",
"B": "X",
"C": "Y"
}
signsToScore = {
"X": 1,
"Y": 2,
"Z": 3
}
score = rounds.count("X") + rounds.count("Y") * 2 + rounds.count("Z") * 3 + rounds.count("A Y") * 6 + rounds.count(
"B Z") * 6 + rounds.count("C X") * 6 + rounds.count("A X") * 3 + rounds.count("B Y") * 3 + rounds.count(
"C Z") * 3
print(f"Solution 1: {score}")
rounds = rounds.split("\n")
score = 0
for current in rounds:
hisSymbol, result = current.split(" ")
if result == "X":
score += signsToScore[signLoose[hisSymbol]]
elif result == "Y":
score += signsToScore[signToSign[hisSymbol]]
score += 3
elif result == "Z":
score += signsToScore[signsWin[hisSymbol]]
score += 6
print(f"Solution 2: {score}")

2500
2022/Day2/input.txt Normal file

File diff suppressed because it is too large Load diff

0
2022/Day20/Day20.py Normal file
View file

0
2022/Day20/input.txt Normal file
View file

0
2022/Day21/Day21.py Normal file
View file

0
2022/Day21/input.txt Normal file
View file

0
2022/Day22/Day22.py Normal file
View file

0
2022/Day22/input.txt Normal file
View file

0
2022/Day23/Day23.py Normal file
View file

0
2022/Day23/input.txt Normal file
View file

0
2022/Day24/Day24.py Normal file
View file

0
2022/Day24/input.txt Normal file
View file

0
2022/Day25/Day25.py Normal file
View file

0
2022/Day25/input.txt Normal file
View file

32
2022/Day3/Day3.py Normal file
View file

@ -0,0 +1,32 @@
def itemToPriority(item: str) -> int:
if item >= 'a':
return ord(item) - (ord('a')-1)
elif item >= 'A':
return ord(item) - (ord('A')-27)
if __name__ == '__main__':
with open("input.txt", "r") as f:
rucksacks = [line.replace("\n", "") for line in f.readlines()]
actualItems = []
for rucksack in rucksacks:
compartmentLength = len(rucksack) // 2
compartments = [rucksack[:compartmentLength], rucksack[compartmentLength:]]
for item in compartments[0]:
if item in compartments[1]:
actualItems.append(item)
break
print(f"Solution 1: {sum([itemToPriority(item) for item in actualItems])}")
groupIdentifiers = []
for i in range(0, len(rucksacks), 3):
currentSacks = rucksacks[i:i + 3]
for item in currentSacks[0]:
if item in currentSacks[1] and item in currentSacks[2]:
groupIdentifiers.append(item)
break
print(f"Solution 2: {sum([itemToPriority(item) for item in groupIdentifiers])}")

300
2022/Day3/input.txt Normal file
View file

@ -0,0 +1,300 @@
mmbclcsDHCflDDlCrzzrDWjPJvjPvqJPjfpqZQdfWd
NNFLnFRNhgNQtMLSFSgwSwGJPZWLPvjpjjJGZJPvWPvJ
BnwFNgVVhwNwVQrmzbrrCHVTmDsm
CTsVssjPTWPbzhfbfqqpbqJq
RRttdQlRdnNpdmwBnBDhFrGrqDGBqJJfJD
HttgcggdNwQtgcpTsvjVPTcssjsv
bWrpnrpPcFNbfPtwVPddVVDw
jLgqqJgjZLhHjRqLHLjqHgftpmJVtTmwQmtGddwwDVJm
HhzgshZLpHLjqhLLZRZpLRbbrlBNsrrNsFWcCvvFCcNN
PCJJfJhjhzjjdBVBcd
RnNnMHnRNtWnBSQHVbqSzFcq
ZlnZZZNmLrNrgZmmccGJwGwmGPJs
hFZLsjjjMzwPPjqw
SQtTcpWWcpMSDlQpDCQJqbHzdSzPzJvPPwqqvH
tVfpGWGDVlCGGDCpVWppVcrZFMrnmnLfsrBrnngLmMBh
PFPhCmpfhSMWnmgrtgMW
RRQdGQvTQRzQDGQTQcRqTTQLvsntnltvrWZlsWlZftntrMtt
NQTzfGfzcdTBhPJSNJbCCVhJ
sbtqfrqNfcdqsJrfhzQmzhpvzvpQmpNG
SHsSDsZVHBHnRZDBZRWSVDnwFhzvphggwGhQzQhgwzmmPzmg
jjHVHBlHljMsJjbbCcdttc
NccBbvbNZbbvBGPVTGhhlCZCPg
tdWHQtLLMrrdWQRqWrMrMrMPsTPThDlTssFFCFCVTDtCDC
zzWmMQQLVQrWrbBczNnwNbnpnN
THGhBHgHThvnHRrQRpMNSwZSMrwD
szsCzWljNfVFFVllPPzzVWJMJZQMJbpSrwQCCJMDZbbb
WzlfFlflfcmfsFPVfWVVhnNgchHndHgdTnqdNHTh
zPhDwsWgszftMNfPjjLL
RTRbbJFHSrqRRrHRrjGQBnfjQQMjLnmNnF
ddpNSNNpSdWsvpllWzsl
FgDgbSMnhhntCLCC
HlqzJgPfJJgmrthhrtTLqL
fjfQgJPGVjwGJcFMcSvdScWjMD
pnFwRPlVVlLSwpGbvSmZHmbbdbHm
sCzTQtzrrQMzpthTdvbGHdvdHNsZqqqZ
ChTTWhWBWCDrrTrjCrhtLwwLFgfLFgjnpfpwLnVg
MRDfBDMJsQdmGWsM
pFPqwswhGzWSCwGN
jphpbgbqgFnqjjnthLtJsZfJRHfllfTllDLflJ
sdbLCqnbllplrdrsqbZHRPRBcBcBZBcHcZrM
JJFwDDQmzfmhmWhJhwFWbMbcNBNRBBzbNPHcMHPj
DFWVQVGGGbpGClllqLSl
mRmFhZRsmFJfFRzwRrFrqmRFtNLLDTPccVqVtGTLDnPccPDN
SBddBlZMjpQvvBbZvVDTtDTDDVGnLTMPVT
dCHWlbHbdbllsRCCgFwrrZCJ
hwvwFHhlTLwpLDQhpHwTwBLSfvzSZZsvVsqCGqzZSfCvVG
WNdtmjPjcWdWJWntcWbjzmFzrrVrzsGzsVsSVrZZ
PbJPntMRbbdJbcNPcNFjnhlwwgpDHRBpggTlQThhpQ
mJvRGHfWmvWJJVmZZnZVffpglGggrTLNzLwNLrszzNpz
FqFMMShqjcMcqPbbjPthNgRggPgLwPsgLgszwNpl
DFQqQMhRhDRmWndDnJvmWW
jVzfvzSVpnnNSGjjVpNlSNDzqBBmWCBtWWtfFFCCmPmJCCJW
HLrRLhwrMZbHrWqWBhGPCGBFJW
wHHMRMQRQrcQRTTcHrwwRcQbDnpvnppzGSnvnSNzDSNTpjnS
qzrgfppGzPDJHfbZbHZn
vTsMvMTclhNlFlFhdhdqHHmHJSJDVJnJFFwJHHDn
slccWTTTcdCcCqRQPrzgBWPPRz
thfHHdDwbnVzwwdthZlqjZmmTmjfZcfMQl
sGFGJFFvGpFPCJvLPGPgZlpmlTMcmlmZrmMjcr
sJGLSWRSPBBCCPRFWPsNBNwMNNVMNwBzzMDhnh
RwJMwdbzMGWbLtLVQpPl
gqNfBmBjNmcCqjqjQllWhhQlgDQtpWlh
cfccjmcNmHrHBmCBcTMGtTJtZzrTvddRGR
vbbvqMhcrqMQQLHHvFvHHvpPlnPLfVfPnfmwsNwwwlnVls
ZdBZZgDRDzBRJWBzzDZjDDNWNnNnPfwNPwmSwlnCnfCW
JgRggTDtZmmbbFqrvT
lSgzfSzgGcNfDPsbMpspbPnnrrVV
FmWFBFQHBJJBmmWJFHWFrwtsVrMbnrVVwwwpWMMp
FFmmJmvZjQBRQRRQZQBvNNglRhDNDffDSDSMGlDD
VQPBCZVfHQZGRVVpmzPFmgSgbSPTFb
NcwLjcWnFhCpLvCF
tNCDtsqltDwtWdncJZVJVRMGdBQffHZH
pTzgPsLQfMLqTVFLGbVbbFVJVF
ZnjgjvSwNNbFJVwN
jWcCnWHWRvWRHHnWRWjvdZnZtspMqfzrMqfQtTPQgfPzfzcM
CTqHMNSSVnpjNSTFzMwPdslwnlPccbblgcbd
WDLqvLQRfLBgbJPwlWgdPd
QRBqqDmZZRBGGfCTpCCSMSmzjSpz
bPlRhmnPhTwhrvrlRrjgLjgsLpszFldgFlgF
tGHWfcQHWfLZnsLQnjpn
cVGtCtGGcNWcWtBStqnWrwmvmbmJwJPwbRBhRRMb
BjVTVfBsLlLjLcBcZDRJpnJRDPRJqlPRqJ
SzbQMQzFgfFzmMSrbzGpqqRDtqmnvDHtvppHDm
CrSQSdgrWdbFQCWggjWZTfBWcwBcTVBjTs
RtqdCqCTbRfRbbHR
FhwWWqgGJJgJHLHPFFsDbsFP
MrpmmwqhMmJMwpvlNvtlTrvtZSSr
VscvcmcmbhDrRMCCJlqnSlJnSljR
FWdwWgpZgdBLTgTWFwZBgWpjbCNqPptCSlNCStnSJJNPPJ
FdFWGgWTQGGbGvvDHDHzMD
WhhBJrBqBchcQBBqcqqGRZRlrtStlSlRszlzSSRl
fHdwgdjbNCbCCHNgPgHNPNplSRtQtltlRDZsQfZsZMRQMR
jQbQNwVNvWFJvqcV
bjbmmgSjwTWqWwWqcw
sQGfPZQDPqMMWWWd
fqBDfqqZZGHGDsNLjtmlttpgBllpJt
ZDmCWtftfWBLfRDWwbhqcNNtqwjtjwqt
SnTTsnlPMTlSSsGMMSddSbHjhwJwwjPbcvHwLwcqjj
GrFGzSgnTzLgDVfQfQrrDDfm
PngprCCmcBDssRFBSbFRRs
fjwHtjfNWfGwHfdtjGMdWSSdQTsQRLFSSslPSFTRlS
jGjMwMffWHNZfhwnDzqCpZDgrqCcPr
qzGPbzbDZGSPvpvrTvQsQwLWWNLj
tFddBhgnVnMMhBhLJWLwjQMwMrMLwT
BHFtVHgtmlhRRZmSTDTpSq
ZwzLWWWvWdSJdJQwQLzBqqbbhhCcNzchqCNPhb
rHfDRfHGfHsGTPPmhmrrNhjmNg
GlfsfRTfsfRtsstfDVHpGsPSFQJSWQMJwdSLwQWpZZLd
vnvJvpJtQwDBTljHlLHhDL
zzGqMwqMqbfRfVGzFmLmLTLddjmTSRLBBB
zGfrbqzwNvPPcCtr
jwCwSgvPSmCwSqwgbCRQGvsRVnddGZdflsfB
MhzHLWpMWHHzNzMccDHdnZVZRZRGQnGlGRGLsZ
nccNHTzWHDcMWHcphpptDrcDJmSgFTPjgPFjTjgSbqJSJqbg
bVhPWqBBbdbdPqVVqhSfpcmFsfwLnmmjnfBFmn
TDWDGzgRvrNJJJrzzzGspwpjncsncFmwFmsNfw
vMDgDJRWgDJtHDJMMPQQMdQlqdlhZZQbbC
SpdpQqLwrDcmPhggcS
ZHCZstHMhjGmtPDc
NNnnRHMZNzTMHZZTTsZMvvRhJJwWzBVLVQJJqWwVhwJpdJ
mrlMQlQPPPhhCbZRNpRZcffmFmgc
VvJVJqDqvqjDqvtVttVSHTTHLLcggBNBBSRRFfRLncfFLpBB
jHVHvdDHtJjtDWjwMhWwhwwwlNswPr
MJvzvFLhbTnJCvRwWSTmSWWWmRpc
tlVlNqBsVNNBQPrWgqmcgfwpcWpdcg
ZBjHPsttQrPrrVsBQpVJzhZhvnnbMMLvFJJZMJ
hBfJffJJNhnDlmQdnmSGcd
sQrCpRsPCrwFZQprpQCzljdjMMjMGGdGSmgSFFDS
zZpzQpwzHRPPTrQwCpRzWZHqLVvtBJvbBtVJhJLhHtLbVv
DsPnQGnnwlVJbSsb
HCfCfTDMTfHvCWMZDcRVVSwpbtlhVZbhhpVllp
TmCMTvfjRCCvcrgNNPQDmNzrLF
ghwNtnMMRTZtwTphjjBQfLJjfJFdSBTL
lldzbqzrCrfLJJBBbSWj
DCvlvqvshNhRndGs
rWwWWDJWWrFLdRWtRhFZTCbCSqThFTCbmm
BgMvSzvMpVpBlQNQVgfqhhGCbGbThQZTcbZTCs
nMpfjVMnzlgRSrnHnwdSDH
blFhFgFgPLvjDwNvWPnD
qMBzMCCzZMzJHRrzMFZsnFjQdZnvvNvvWQ
FzpMpGMRrlSSghLhtG
hDlVfDdSTjTJwjMTZT
HgnqtGgQRgRHGtrgqgSZJCrwBZZCrZwWJWjMWZ
zqRbGNSbbGRRQGRQFzddfVDLVhhfhddV
JwhLdLNLbwmJggCbbbhjHnDQNZWQWQjWZZPlHQ
GStzfBFzBMGMftpGcFFQDDjDQfZPfnnmDPfZZj
FqMBtFstpcTMBMSBGSBtqMhrwJLLTCbLhJbrhTCmrChv
WwWnTNVBNvWwBngdSqdRJJzncLSLpc
HPMZlGZQGtQjPdpqScpdjP
GltlGDDCMMplHCDphtbCHDwmWNBgVgvWhrmWssTBwWWV
clNNclslcLVWBNlGcVvdSHQvTMHZZSdsdQHM
gGhfpRwRZHMdJgZJ
fnDrpDtDrrWGcWVW
zdVzgdPSWRsHVzPsRRPHRHRRntnQrbDmfDfwfQwwZwfnbgMD
qNCJvjNLqjNhBBGjBvchhBCqffbffDGMnbwtfnbmQwQnZQMt
jccqJBvCjqvLTLJhJZpsPdSVdPszPRFssT
lDLvltDpvSpqGjVVMljGjW
zrdnswzcSzCgrdnBBjVcBBcjWTVTGb
PZgFdgHHnrdNDPvvtfNQSJ
GlLFbFNFtzcvddVpJVfGsCCC
PWhhMgWTTnhQrqMHTWqwddCVjSwQJddpBdQffp
WqJZDHPWgJrHnPqhnnqLbzzcLmbFDNmcbRzbbN
vtDcSfcWfmfTSGwvGDwTvFZVppsszCsVVVFjVzSVSM
NrrLPhdBRJLbPhrrRJwhBFZsFVzQzszsZzMCZjsJQF
glgwPqPhrRqPqBdNLwBrLRtnGHnDGmDqHWfGWfGcncHH
BtSfgpgvQhlSlwzZ
VHRmVzMPdPVRmcdhQwQwhClNNNCb
PcPMRWrVRRHTMDRVLPVzBnnJprjppBJtJftvpBfp
RpgBRVpLgBpDFCCPPVGvPSVVvb
dHrMdlWwwljjrlHrqmWjmWlGNvNSBBNhhSCSbSvNtNvQGd
TfmjqrwqHmqHrqlHwHpgfZFBzJgpZnpDcDBZ
NWTdFWlSMMMWTzVzdQfVpVDwwf
RHrrGrLqJLBqgpDgQfwfffHz
cssRRsBjvrGRjLBLrZcBvBqWPQNnlWTmSnjFllWMnCTFll
DCCDbHDhgbtCLHFHCQdQdSVfbNMdnfcSMS
ZZjPsqRZJlJlGZPTTqqRwJjZQVnMszVfzdSVScQQSQcNQNfM
mlGJJqmZjBZPhLBrgrWHFnDL
wLpCpDmmLwplgwVLwLwVgLLbWWJvJRTsRvbbJWCRsfbssv
FHHPFZnnhZQrqTTlSJRSrlfvrv
llZlPQFcZZHchjhjPqnjNFqNwggmDDwVNBBDwtpGMVDwDwVp
CctttjCrftNrBZpPgpgbNqdq
JhMwhMTGhMVhwDDMJJHGJJJBldWggWglddlbqlbPHbfqgf
DvJRMJVVJMTfJtnrnRjCSRFnrL
snDPGSQPnSSQQFwFFdzWFvmCVmmnjmCJjHjbZZhHZp
clgrgrMrRfqRlNggmhmHrhvVbpCjCVvV
fNgcBgqqLMqRqgLggtcTftBFdDFWQzDSQWPPGwWpwtGGsP
wSJWDCbwVdQfbffHfZZr
glgTBzzPSFhLFRvRQnZspZQpnvRp
qTLqglLNFqBqVMJqwwMVcS
rCWNCsrGrGGHrwQQHrfNDfvgLmmvMmLLMpmLvLPpPgww
djcdVdqJJcqqBstdBczbStThPPMPghvSpRgmlvghlmLpLp
qtjdBqzbTTtzTJTzVnbBdsNfDHZGGGDDnGfNDHDHFZFD
mlzzVHZmzvHflTJHqlJcZTvdcdCCPnddFGhPdBGhMFGCGc
QDRrWSprdqqCqDhF
NWtQNRrgWjpLjLsrRrQpfwVVqvwHzvvmVszlvlvm
DmDDtBDStSLcjLBDhhhmfnNFNlJJMFWFHSMWFpJNHp
PgMCgVgsCvVwRVRCwvgTzCMRWWwdnWHpNHFwWJJnHdHpprnp
RgZvvMbsbPCRGRTVPGmfBqDDqmthDQcmcZDc
WrfWpwwCwpdWCMBzqbtpjVbqzVqp
RvQQSFJNFZNNLPGbMMPqGtGPzF
DRvmNhZvJZmNmLcDZQcQNRfnnTMwrMHnfTrTCslsclCn
httbcnSsgtVMsnssnzghmmHvNmlHVLBHBLrVGGLN
QFpjZqpqWddZjjDWPWPwjFpfGLBfBBrrNLlBBgGrLCLmrfBB
QRjRjwjwDhbRTJnhgR
FTBTZqFVJnVTTPBTVmFbNjRffzrRrNQrPNQbzh
tCWwHMLCLDstlzdjwbzbQhRl
GvtChDChvtGSnZqnTVvBVF
spnFVspFPScprWrGvTpTWpvW
CgMqCqPLfqBBJGHlMrrJrWWl
ChjqhCtgdLPSQhQsRnVQ
bCQVZCJcrSSStrWTdhQqhzzMdhMz
lPDwNfgpDfBNgfnlDPRDpLWRhLbMjzWqMqWsMLLhLz
wpNPgPwwBDfvBnfgBfwglHDCJmtFGFmGSmCVrVCGbrCcFv
zNMJCHVJQmNLQFhZ
PPRPdGcRdPPjfjflqdjPDPTZQrhTFZFrmQZQBGZCFmLL
CcWfjjgWtjtMJWzVnSJVzJ
LjhDjVCVsjNfMsMQ
SdRpGSndZnlgpdSFtrQMtqNZJtwrMfQQ
cdRpcpnggRSmWpcLDHCCHfhBmPHTCV
zpmsJlptmfNwwFswGHThRcTqqHqhhWCWzh
SLgLMMgnPbSLPbPMDqZZcTWCnZWtRcWCZC
MbbvQtMVSLVrDMvSMSvSlwNsFNJspJFfNNmJrGGf
wvcQjfjQvQDJvwNwRdpRScCHbpdMbSpl
rfrZzrzWWmzlRpMMdpzd
LqrmFrVhFJjNfFfw
fVflVfmjQtZhzdrdlN
HwLLJvCcpcbRvDwpDvDCpqtTPPMNWTzTrHZTMPzPMPdH
LbvbJqgcqbpJLwvbbbmsmgVGmQmnjdSfSVjV
FngtfmfTTSFjFDnfjDbwnGzzGBGzbVRwVcwz
WWMrLLZLvZMWsrCcjzBGcpzLcGcVcB
NhMWllrsNZNrWZWhjCmmSmfgSTFDHTJfFSNq
lpqpqlhTSZqfZlwthPHsHcdHPhsCHLrP
zVDTjMgFbscczPbz
jRRmvmngNngqTZBqNlftTJ
wrMrJZPPrNZPZzhzMFPlDqSllsLSbWDWlWqNbb
VpGftgghtgQfVBgdnpBBngtWDSRbbSqltbRblDDDtqSlqS
gVggVgpVHTpmndffdVQVTVggjMwwjjMCjJFhPvZMwHvzMzjC
CtQPCFVlljWrNhTmCgLL
zsZbsnsqbMznDGNrrTqTLqWRHghN
zsMMGMSssSSzMGGMcvDGJFphFwPPvPvQfJppwQfj
njfVlRDDfDwHSfwVwSLnQZqGBbGsnZBnbGqZMbbpGG
zvddNNdWFgTPFgWNvNgcZqZbbqMMgBpsZrRZpgGG
CPchdcRTcNvvTWcmTNDSSfjwSDHCfQwlJLHl
LPmccvvFzzLvvQSzlFvFSSQDDtDfdDVdnDTBDsVTjDndlV
CbgNZWgZrbbqhrgTnVjjCsGdBfCfTs
BhwRrNrpQvLzvJSw
DpGFVsprFpTBJjsnJnnhdjWh
fbHCcbVHCgfMLwcqfLwgNdqhjRhnJQQdtQWnnSSJJj
gCZNVNzbHbfNHcHNgfCMLHHzPBDPvPDrlvDrDlvpmFTFBF
tsBQFgFpFBfsmtLjtgmtrQvCddSwSCwwbRvbwdLvwvRG
nqPZnMznTZHZlZPfGCHfbHwNVwdRwC
MPWqqzhZmBWFQfFW
FNMTTwqwNpVWPgZFFQ
crScdztJtcccSzWtzzzbStZQRZVVVHZVRgRQPHQhhjSZ
lCDCCdJJdbCdbcJzrcnrJWbnLLlvMMTLNwwMvfvwvMmNBNMG
WHsJMlBHCscDPDPtPBRDrL
jmTvgnqdsbPmSrrPVrwL
pdTgjgqbTqQFdjjQdqTZzCcJsZzQzcfsCCHMMl
QqMQGbMGGGzSsQSqCPcCPrCRNNlSZllc
vDHdmDWTdmwphhDdJwWvHdDCZPZVllPVRPRZNPVcZbTBZN
pmWHDmpmLgJvhvLpmvdvLWbsMgfsQGjqjtsnGfGqzGzzzQ
tFvMtFtFMvDDtMvLTpffQWWSGTsDTlSS
jqVnBjHqhPHbnhqPqWllfpfSTplQPQPGff
bbjHVHdjzqBznqVHBHzzqVFMJNMvmJtvtmcQFMZQFdJL
dcldCJQnldtTMdsccThhDDDDFhwTqDRwHR
ZbGzmgZSBpPPmmbNbZmgmNPPRqFzzVVhrwVHwRVHrVRHRRrR
bSSNmhPGWWZgQtLWtlCdJCMd
ttGBGNNgBgVBltlTJGJZpZlHSHCHfDSWpRWWpS
LhcLrcFFqdhLFLqvwMdhcPWpHHSSZWjjjCDwSSSfpWpD
fPMrqMMnqMFMbqcfnPMMBsgNttgggBmzJzbmGtbb
fjFhHHHmfjtLjrFmPhLbCdzBCpPCJQpJJGzJCp
RcDTnvlVqRnvnvRNcSzCJGJGCSJJCCdQqw
NTlMZVVlVVVlRTDTNjgGLfhrmgLFfZFGhr
GmbVGWttmpmbbqDWgVGGGtWNvNCCsHLLFsvHMHHLFnFn
wQQSdDTfSTsLCNnFwvFv
dPDBTBjzDftcBqBVbGBg
LmsfRLwCfZslcjljcjDjwN
gdRSrHHrSbdrggBzHBShHlqVvVDvcNvlcccjGlGjqB
zgTnSFFJdngddTZTPTWmspWQWWPR
RMZMtdsVCsRdddbsVcfcqgNfNDqGqGfzPzmf
BpwQrJvrjnSnQpBBBJCJjBBQlzvmDPzmDmglPzPgDNfNmNgz
LjLTnSpwjQTrnnLCBJLQjhstbMhsRtTdtMHMtbtsZd
PfrPHmrCRmRhcHCcmCfhhmWMLVpwVqFvvGGLVpQSwwSvSFFP
sJnjsgsDDdjjjdTglTgDBsBnSLdvwSqpQQbwQSLLLFSpQpbL
tBlngnqgqZggTZWfCRZmMCHHmM
LGGPQLDLPWmQLVdVdLLGbdvMNjfvHNFNNBbZnNMlHlBf
CshzsJBqTTwhttzCJzRtcNcMljnnnMjHlFnMcvnHfM
gqJsCwzBrQWDSgGmSS
FWVzVJjmbbJVpPwjjJDQsQNDgtcrWtddDQMg
TqRqCfGGBTzgTzDNNs
qRffnhhGvvvpwbvFzp
gLmMTpTCmRhgTLhCCZBSScJFQQQclWWMQJSJQW
rvfbDGjGssqbbrRSJJWclqcSwzwScc
PsDfGfVRjfTTTZNBPTZT
hWqrPzzMhrfmfdNtdZLNrnGndn
SwvwSFslbbjRsspQwsRwzcnbnNdTnZDbGctZdTNtNt
wvJJFsvpSSvJFjlHjzplQwJhCfVVhmBmVWhHWmWVWqBqMW
GjQtgjhPhGgsQjgtthrrvBlvljCrpCdlqBMb
RFDHDRFRczzlbqlbvqvHdb
DDFcRWTWFbSwRWbGtSGtgPfGGSPPtg

0
2022/Day4/Day4.py Normal file
View file

20
2022/Day4/Day4_temp.py Normal file
View file

@ -0,0 +1,20 @@
if __name__ == '__main__':
elvePairs = []
notNeeded = 0
intersections = 0
with open("input.txt", "r") as f:
for line in f.readlines():
line = line.replace("/n", "")
elveSections = [boundries.split("-") for boundries in line.split(",")]
elvePairs.append([[number for number in range(int(elveSections[0][0]), int(elveSections[0][1]) + 1)],
[number for number in range(int(elveSections[1][0]), int(elveSections[1][1]) + 1)]])
for elvePair in elvePairs:
if set(elvePair[0]).issubset(elvePair[1]) or set(elvePair[1]).issubset(elvePair[0]):
notNeeded += 1
if len(set(elvePair[0]) & set(elvePair[1])) > 0:
intersections += 1
print(f"Solution 1: {notNeeded}")
print(f"Solution 2: {intersections}")

View file

1000
2022/Day4/input.txt Normal file

File diff suppressed because it is too large Load diff

0
2022/Day5/Day5.py Normal file
View file

79
2022/Day5/Day5_temp.py Normal file
View file

@ -0,0 +1,79 @@
import re
class Operation:
amount: int
src: int
dest: int
def __init__(self, amount: int, src: int, dest: int):
self.amount = amount
self.src = src - 1
self.dest = dest - 1
def buildStacks(raw: [str]) -> [[str]]:
builder = [[] for i in range(9)]
for lineNumber in range(len(raw)):
line = raw[lineNumber]
for position in [x.start() for x in re.finditer('\[', line)]:
sign = line[position + 1]
builder[position // 4].append(sign)
return builder
def buildOperations(raw: [str]) -> [Operation]:
builder = []
for currentOperation in raw:
currentOperation = currentOperation.replace("move ", "").replace("from ", "").replace("to ", "")
amount, src, dest = map(int, currentOperation.split(" "))
builder.append(Operation(amount, src, dest))
return builder
def performOperation(stacks: [[str]], op: Operation) -> [[str]]:
for i in range(op.amount):
stacks[op.dest].insert(0, stacks[op.src][0])
stacks[op.src] = stacks[op.src][1:]
return stacks
def buildSolutionString(stacks: [[str]]) -> str:
sol = ""
for stack in stacks:
sol += stack[0]
return sol
def performOperationVariant2(stacks: [[str]], op: Operation) -> [[str]]:
for i in range(op.amount):
stacks[op.dest].insert(i, stacks[op.src][0])
stacks[op.src] = stacks[op.src][1:]
return stacks
if __name__ == '__main__':
with open("input.txt", "r") as f:
rawstacks, rawoperations = f.read().split("\n\n")
stacks = buildStacks(rawstacks.split("\n"))
operations = buildOperations(rawoperations.split("\n"))
for operation in operations:
stacks = performOperation(stacks, operation)
print(f"Solution 1: {buildSolutionString(stacks)}")
stacks = buildStacks(rawstacks.split("\n"))
for operation in operations:
stacks = performOperationVariant2(stacks, operation)
print(f"Solution 2: {buildSolutionString(stacks)}")

View file

512
2022/Day5/input.txt Normal file
View file

@ -0,0 +1,512 @@
[R] [J] [W]
[R] [N] [T] [T] [C]
[R] [P] [G] [J] [P] [T]
[Q] [C] [M] [V] [F] [F] [H]
[G] [P] [M] [S] [Z] [Z] [C] [Q]
[P] [C] [P] [Q] [J] [J] [P] [H] [Z]
[C] [T] [H] [T] [H] [P] [G] [L] [V]
[F] [W] [B] [L] [P] [D] [L] [N] [G]
1 2 3 4 5 6 7 8 9
move 2 from 2 to 8
move 2 from 1 to 6
move 8 from 7 to 1
move 7 from 5 to 4
move 1 from 6 to 4
move 1 from 6 to 3
move 6 from 3 to 5
move 9 from 8 to 1
move 3 from 6 to 7
move 14 from 4 to 1
move 6 from 1 to 7
move 16 from 1 to 9
move 6 from 1 to 4
move 1 from 8 to 6
move 4 from 1 to 5
move 11 from 9 to 7
move 2 from 1 to 8
move 1 from 6 to 7
move 1 from 8 to 7
move 1 from 8 to 3
move 7 from 4 to 3
move 14 from 7 to 6
move 8 from 6 to 9
move 19 from 9 to 2
move 1 from 1 to 2
move 2 from 9 to 7
move 9 from 7 to 8
move 2 from 2 to 8
move 16 from 2 to 9
move 4 from 8 to 2
move 1 from 7 to 9
move 3 from 9 to 6
move 3 from 3 to 6
move 11 from 9 to 2
move 7 from 5 to 3
move 2 from 5 to 9
move 6 from 6 to 4
move 1 from 6 to 4
move 4 from 6 to 8
move 5 from 9 to 1
move 4 from 1 to 7
move 3 from 2 to 6
move 3 from 4 to 1
move 1 from 4 to 1
move 2 from 1 to 3
move 4 from 3 to 7
move 1 from 5 to 2
move 3 from 1 to 6
move 15 from 2 to 5
move 3 from 6 to 3
move 13 from 3 to 8
move 2 from 4 to 2
move 9 from 5 to 4
move 2 from 2 to 5
move 5 from 7 to 5
move 10 from 8 to 6
move 1 from 2 to 5
move 10 from 4 to 6
move 4 from 8 to 6
move 3 from 7 to 1
move 3 from 1 to 9
move 1 from 2 to 1
move 8 from 5 to 2
move 3 from 6 to 9
move 6 from 8 to 5
move 6 from 9 to 2
move 1 from 1 to 9
move 10 from 2 to 1
move 4 from 8 to 5
move 10 from 5 to 9
move 11 from 9 to 7
move 5 from 7 to 9
move 1 from 9 to 2
move 3 from 2 to 9
move 2 from 2 to 8
move 4 from 9 to 5
move 4 from 1 to 9
move 5 from 5 to 2
move 5 from 1 to 4
move 21 from 6 to 9
move 3 from 2 to 9
move 2 from 8 to 1
move 25 from 9 to 6
move 4 from 5 to 7
move 1 from 4 to 6
move 6 from 6 to 4
move 3 from 4 to 6
move 7 from 7 to 3
move 4 from 9 to 1
move 3 from 7 to 8
move 2 from 9 to 8
move 2 from 2 to 8
move 4 from 1 to 3
move 9 from 6 to 2
move 13 from 6 to 4
move 13 from 4 to 5
move 1 from 5 to 8
move 2 from 2 to 3
move 6 from 5 to 3
move 19 from 3 to 6
move 1 from 4 to 9
move 2 from 8 to 1
move 5 from 2 to 3
move 5 from 1 to 9
move 7 from 5 to 4
move 1 from 8 to 3
move 1 from 2 to 6
move 8 from 6 to 3
move 1 from 9 to 8
move 11 from 4 to 2
move 1 from 4 to 6
move 1 from 2 to 8
move 5 from 3 to 4
move 4 from 9 to 6
move 1 from 6 to 8
move 9 from 3 to 1
move 7 from 2 to 9
move 1 from 2 to 6
move 3 from 1 to 8
move 2 from 2 to 3
move 3 from 9 to 7
move 3 from 4 to 7
move 2 from 4 to 3
move 2 from 3 to 5
move 8 from 6 to 4
move 6 from 8 to 6
move 2 from 9 to 4
move 5 from 8 to 6
move 3 from 7 to 5
move 1 from 5 to 8
move 1 from 8 to 2
move 1 from 5 to 1
move 11 from 4 to 9
move 2 from 6 to 3
move 2 from 2 to 4
move 6 from 1 to 2
move 6 from 2 to 1
move 3 from 7 to 3
move 2 from 4 to 7
move 4 from 6 to 5
move 7 from 3 to 7
move 5 from 9 to 6
move 22 from 6 to 8
move 2 from 6 to 5
move 2 from 8 to 4
move 14 from 8 to 7
move 11 from 7 to 4
move 3 from 8 to 1
move 9 from 7 to 8
move 10 from 1 to 4
move 1 from 7 to 4
move 4 from 8 to 7
move 6 from 4 to 9
move 7 from 4 to 1
move 3 from 4 to 8
move 1 from 5 to 8
move 8 from 5 to 3
move 4 from 3 to 9
move 7 from 8 to 9
move 3 from 8 to 3
move 2 from 8 to 2
move 7 from 9 to 1
move 2 from 2 to 8
move 8 from 9 to 1
move 8 from 1 to 7
move 7 from 1 to 5
move 7 from 7 to 1
move 11 from 9 to 8
move 9 from 8 to 5
move 2 from 8 to 5
move 3 from 1 to 8
move 2 from 3 to 7
move 6 from 4 to 1
move 6 from 1 to 6
move 5 from 7 to 1
move 2 from 4 to 6
move 1 from 3 to 5
move 4 from 7 to 4
move 2 from 8 to 7
move 10 from 5 to 6
move 9 from 6 to 1
move 8 from 1 to 6
move 1 from 7 to 2
move 9 from 6 to 4
move 2 from 4 to 3
move 3 from 8 to 1
move 1 from 2 to 4
move 4 from 4 to 1
move 7 from 4 to 3
move 3 from 3 to 2
move 1 from 7 to 6
move 9 from 6 to 7
move 6 from 7 to 4
move 2 from 7 to 2
move 6 from 4 to 7
move 2 from 2 to 9
move 1 from 2 to 4
move 1 from 7 to 4
move 4 from 7 to 6
move 4 from 5 to 4
move 1 from 2 to 5
move 1 from 7 to 5
move 1 from 2 to 6
move 6 from 4 to 3
move 9 from 3 to 9
move 4 from 6 to 2
move 7 from 3 to 8
move 22 from 1 to 7
move 1 from 1 to 7
move 2 from 8 to 3
move 4 from 5 to 6
move 2 from 3 to 2
move 6 from 2 to 8
move 3 from 8 to 6
move 1 from 4 to 8
move 1 from 1 to 8
move 8 from 6 to 7
move 7 from 8 to 9
move 22 from 7 to 4
move 3 from 5 to 6
move 1 from 8 to 1
move 2 from 8 to 2
move 3 from 6 to 4
move 1 from 1 to 3
move 15 from 9 to 1
move 5 from 1 to 5
move 3 from 7 to 6
move 5 from 5 to 6
move 4 from 4 to 3
move 6 from 6 to 9
move 7 from 7 to 6
move 5 from 6 to 7
move 4 from 1 to 9
move 3 from 7 to 4
move 2 from 9 to 7
move 5 from 3 to 5
move 3 from 6 to 3
move 5 from 4 to 6
move 10 from 9 to 5
move 1 from 2 to 9
move 1 from 3 to 5
move 1 from 2 to 9
move 3 from 1 to 6
move 2 from 9 to 2
move 7 from 6 to 5
move 15 from 4 to 9
move 2 from 4 to 5
move 1 from 3 to 4
move 9 from 9 to 1
move 1 from 9 to 2
move 2 from 9 to 4
move 11 from 5 to 4
move 1 from 9 to 3
move 1 from 6 to 8
move 4 from 7 to 8
move 4 from 8 to 9
move 15 from 4 to 7
move 1 from 6 to 7
move 1 from 3 to 7
move 6 from 9 to 6
move 1 from 3 to 7
move 1 from 2 to 1
move 1 from 9 to 5
move 3 from 6 to 1
move 11 from 1 to 4
move 6 from 5 to 1
move 2 from 2 to 5
move 1 from 5 to 7
move 2 from 6 to 1
move 7 from 5 to 7
move 3 from 5 to 6
move 4 from 6 to 1
move 11 from 4 to 3
move 1 from 8 to 5
move 23 from 7 to 6
move 18 from 6 to 9
move 1 from 5 to 9
move 1 from 4 to 2
move 3 from 3 to 7
move 3 from 3 to 8
move 17 from 1 to 8
move 5 from 6 to 5
move 2 from 7 to 1
move 20 from 8 to 2
move 4 from 7 to 2
move 3 from 9 to 5
move 7 from 9 to 7
move 6 from 9 to 2
move 1 from 1 to 8
move 3 from 9 to 4
move 7 from 5 to 2
move 6 from 7 to 1
move 1 from 1 to 8
move 3 from 2 to 6
move 1 from 7 to 6
move 2 from 8 to 9
move 35 from 2 to 4
move 3 from 3 to 2
move 1 from 5 to 7
move 2 from 3 to 9
move 3 from 1 to 6
move 2 from 2 to 1
move 32 from 4 to 7
move 3 from 4 to 8
move 3 from 9 to 5
move 1 from 1 to 2
move 21 from 7 to 5
move 2 from 2 to 1
move 3 from 1 to 2
move 15 from 5 to 1
move 3 from 6 to 7
move 3 from 4 to 6
move 3 from 8 to 5
move 1 from 9 to 3
move 8 from 7 to 2
move 6 from 5 to 2
move 9 from 1 to 6
move 4 from 7 to 1
move 2 from 5 to 4
move 2 from 4 to 3
move 3 from 5 to 4
move 17 from 2 to 7
move 3 from 3 to 5
move 2 from 4 to 8
move 1 from 4 to 3
move 5 from 7 to 9
move 1 from 3 to 6
move 4 from 1 to 7
move 4 from 6 to 7
move 2 from 5 to 2
move 1 from 1 to 3
move 10 from 6 to 4
move 1 from 3 to 7
move 20 from 7 to 8
move 8 from 4 to 8
move 1 from 2 to 8
move 4 from 9 to 1
move 3 from 7 to 4
move 2 from 4 to 9
move 2 from 6 to 3
move 1 from 2 to 8
move 1 from 7 to 6
move 1 from 9 to 5
move 3 from 5 to 9
move 4 from 9 to 2
move 1 from 4 to 5
move 1 from 5 to 3
move 3 from 2 to 4
move 1 from 9 to 7
move 1 from 2 to 1
move 1 from 7 to 1
move 11 from 1 to 2
move 3 from 1 to 7
move 25 from 8 to 5
move 1 from 6 to 3
move 1 from 6 to 2
move 7 from 8 to 2
move 9 from 2 to 8
move 2 from 4 to 7
move 2 from 5 to 7
move 2 from 5 to 2
move 5 from 5 to 1
move 7 from 5 to 1
move 2 from 4 to 9
move 3 from 5 to 6
move 1 from 1 to 8
move 1 from 5 to 6
move 1 from 4 to 7
move 1 from 9 to 2
move 3 from 5 to 2
move 2 from 6 to 9
move 3 from 9 to 8
move 1 from 5 to 4
move 3 from 3 to 9
move 10 from 1 to 5
move 4 from 2 to 8
move 2 from 6 to 1
move 3 from 9 to 7
move 1 from 1 to 9
move 1 from 4 to 3
move 1 from 9 to 2
move 9 from 8 to 2
move 2 from 3 to 7
move 2 from 7 to 6
move 3 from 5 to 6
move 4 from 8 to 6
move 4 from 8 to 3
move 4 from 3 to 2
move 4 from 6 to 8
move 1 from 7 to 9
move 2 from 1 to 8
move 2 from 8 to 3
move 1 from 9 to 2
move 13 from 2 to 4
move 6 from 5 to 7
move 2 from 5 to 7
move 10 from 2 to 4
move 11 from 7 to 8
move 1 from 6 to 4
move 4 from 6 to 7
move 24 from 4 to 9
move 11 from 7 to 4
move 1 from 3 to 8
move 1 from 3 to 5
move 4 from 4 to 2
move 5 from 4 to 2
move 9 from 2 to 5
move 4 from 9 to 5
move 1 from 5 to 1
move 2 from 5 to 7
move 2 from 2 to 5
move 1 from 1 to 7
move 2 from 2 to 3
move 18 from 9 to 6
move 9 from 8 to 1
move 2 from 9 to 5
move 5 from 1 to 8
move 2 from 8 to 7
move 4 from 8 to 4
move 5 from 8 to 7
move 10 from 5 to 1
move 10 from 7 to 4
move 4 from 5 to 8
move 14 from 1 to 9
move 6 from 9 to 8
move 1 from 5 to 1
move 12 from 6 to 9
move 4 from 6 to 8
move 11 from 8 to 5
move 1 from 6 to 1
move 19 from 9 to 7
move 2 from 3 to 5
move 13 from 7 to 5
move 3 from 7 to 1
move 4 from 8 to 9
move 2 from 7 to 6
move 7 from 4 to 8
move 5 from 8 to 1
move 1 from 1 to 3
move 1 from 7 to 2
move 6 from 1 to 6
move 1 from 2 to 5
move 1 from 8 to 1
move 1 from 8 to 2
move 2 from 4 to 8
move 5 from 6 to 1
move 2 from 4 to 7
move 2 from 9 to 6
move 1 from 6 to 5
move 4 from 6 to 2
move 1 from 9 to 5
move 2 from 4 to 5
move 4 from 2 to 4
move 2 from 8 to 3
move 3 from 3 to 2
move 4 from 1 to 2
move 2 from 4 to 7
move 4 from 2 to 3
move 4 from 1 to 2
move 13 from 5 to 1
move 1 from 6 to 2
move 1 from 1 to 8
move 15 from 5 to 2
move 4 from 3 to 1
move 5 from 4 to 3
move 1 from 3 to 6
move 1 from 8 to 7
move 1 from 9 to 8
move 1 from 7 to 8
move 3 from 3 to 2
move 1 from 8 to 2
move 1 from 3 to 7
move 13 from 1 to 4
move 3 from 5 to 3
move 1 from 1 to 2
move 1 from 8 to 5
move 5 from 7 to 2
move 1 from 6 to 5
move 2 from 3 to 4
move 10 from 2 to 5
move 1 from 9 to 5
move 3 from 1 to 8
move 3 from 8 to 3
move 11 from 4 to 5
move 12 from 2 to 8
move 4 from 4 to 7
move 10 from 8 to 5
move 2 from 8 to 1
move 1 from 7 to 3
move 1 from 7 to 9
move 5 from 3 to 7
move 1 from 9 to 4
move 7 from 7 to 6
move 13 from 5 to 8
move 6 from 6 to 7
move 5 from 7 to 4
move 1 from 6 to 4
move 2 from 4 to 9
move 1 from 7 to 9
move 3 from 4 to 3
move 1 from 3 to 6
move 4 from 5 to 7

0
2022/Day6/Day6.py Normal file
View file

12
2022/Day6/Day6_temp.py Normal file
View file

@ -0,0 +1,12 @@
def findFirstUniquePackage(signal: str, numberOfUniques: int) -> int:
for offset in range(len(signal) - numberOfUniques):
if len(set(signal[offset:offset + numberOfUniques])) == numberOfUniques:
return offset + numberOfUniques
if __name__ == '__main__':
with open("input.txt", "r") as f:
signal = f.read()
print(f"Solution 1: {findFirstUniquePackage(signal, 4)}")
print(f"Solution 2: {findFirstUniquePackage(signal, 14)}")

View file

1
2022/Day6/input.txt Normal file
View file

@ -0,0 +1 @@
pjbjvjtjljplppjssvtvwtwptptztltbtrrjgrjrzrqrjrbrhbrhrlllbpbdbbzqqgsqshqssjjbsjbsbmbhhmchhrqrcqqbwbqwwqrrznnsbswwwdjwdwmmsvszzlbbgddbgdgfgttzjzrjzrjzzvrvqqgpqggtbgtgvvrhvhtvtjjbpjjfjhjbhbddbjjjmzmtmgmpgmmmljlnljjmpmbpmbmrrlhhlppdgdfgfbbqlbbtffjjgvvnpvpbpttqmmnhhgfgrrwhrrbnbznzccmbmvmmzszsvsbvbccsrslsjsbbtdtwtvttvpvzzvbzzwczwcczhzhwhjhjghgppgpgttdwdhwhphnppqmpqqhthcchdhmhnnbcnbcbbggbfblljttwsswspsggpjjzszcscsmcmdmnngzzhrzrbrhbhzbzvzgvgffnlnljlrrhchhsvhssmpmccncdnccgdgbglgtlggnllsvvpfvpfpbffsgglddjrrzzphhptprtppwrwffzllrbrmrpmpdmpdmpplpspcphcphhgmmqnmmvnmmdvmvsmmqjmmlmlbmlbmlltlptphpnncscbscbcggwhhgjgqjqmjmdjmdjdrrvgvvzlldgdnnvttmmpffdjjvvchcwwbhwbwzzlmlccrttcntccpcgccpgcpggdrrbtrthhlrrbqrrpspdsdldbldblbzbpbgggtngtgqqtwwdjjmmcrmcrcvclcddhllpzpdzzmccrtccfvffccfhccpscctbbbzqzvvllgwlgwgvwwjswjswsvvwhhvjvsjvjmmjhjrhrmrvrnrccmnmzzmdzzbtbvbqvvgzgcgvvvvlltvllbfbqqrppwhpwpffzddzdzwdzzrggmhmfhmhbbzjzsjzzhhjdhhdnndsnssnfffbmffwhwrhhmmbnnbrnrbrrtqtztnzzzzblbhbdhbbfmfqfmmsgszzvfzfmfwfnwfwggwngnqnwqnwqwvwqvwvdvrvjjfnjnmnfmmwzzltztjjqnnnmlmzlmmrcmclcqqhrhdhccdfdvfvccvtcvvdmmtmccwjjcbcrrjmrjrdrffgwwvbvlvsspwpsspzsschssmqsqmqmlqmmqgqfqcqjcjtthjttlddfvvwwjvvtpvvfsvffqnffznzqzszgzmmjttwztwzzhqqccqsqmqnmqqjhqhzhwhvhdddsndsdfftvffwlwnnmmdpmmnhhrqrrclcdlcddhcdcppgrprnpnptnpphgpbqfngdgzvgndwcgrwcsfmhzsvddhzbgjmvvdjjzswvgnpmvgdpwsgbgjzjpsrfdzdzjzzrpplbhsmgddqzjbdzdzltqqwqjzqvwfmcdppbdbprrwzhmnrqclzrnmdjnfbwmvdrwtpwvgscrqgpndqnzbjsbljcbthbpgdjdcdwfhpvjnbsfjdlrjldvvmtfdslrhlfwmvclqrljrqmmjgqfwmfgwdjzzptgcthvtgdswsqjrqvnzmtqldjjcqnfhtvbwhjqlvpptfwjrdpcwvzddgcjzvqbhtsnnnjqqmqlbgvqmvjhvvpbzcbdmhgmcjbfcccsvlzjztvjzrrlhtgwccdcgcptqlmdhmdhvqzfntbjqtsmvqgwsltqntgszllntrljfgfsghtbbcqrdgwqphmbqtzmjqccrgvqpqpchzjstdmmtvntwjqsbcqjgnhzlllcfbpgtgrhwwhqqdlgrlsbzbmchvjnsgpdnmqvtgwqjpgflqgfngjfcfwqzmvvgzmmhbgfnbzvzclwclqdcccgbrrzpwdtprgsvhbgsnbntgrvnzhrnzfzdmnlbnrbqvmjbwpgvjlhbcvsrlqmcsnlrvtfdwtvcbmlndgbctsnmtctjszlpddqmzbtphhhfznwbdfsgppmdmczmhmmrzpllfqqbgvlsrscpfgznhdhgrnnnvrchgvzlqbgvcfghjvlvrvpclfcshbmvglcfrjbzrbcjmjjrfgqthwfrqbgtjldmbnfwllspmwrvstvrltvrlvrtjvprgtgzjlrgclvjhqpfcwcdbdtzwdsdfrtsvtvgjmsszdfqlmhqqlzswjfndswlmhcrhglphvpnfjpbmggbwlmzjchpnrllbjpmgmzjjrqpqgsbrszqhdljcpnclvrvbntgtcdcmhtdhgslhpvdjpvrszfrjhsbvcvtfwvvgczprnpbhmnnlmctbtqdjspgvhvnhwvspwgnjvzllwlnjhfjwsslppmjbfbdnthcpzbcmnnbvhctgwgdvhvlrbltmdnlfcsncqgrmjprshdvvtvcccgzhszcjgczhmhtvmccjpchqshhdzjjhbfpzqdjszdhdvlmgctmwcjprwlsqbcqhlcrfdgnqzfdfvqslmqlppbsvbmjmfbrtdmpmtqvwvppcfzddjzhhzlrrnnhbrlhmzlqwftprfvctnfhfhfzrnrvggfqmqwcwszhtbfjncprgwcqbjlvtnrprlwwghswvprjmsbmqvwnnfggprndvshfvvwtrqjpwghgbppftgzhqjslfzhngwfsjnmjzdsjqgpmglwnjlcgmczgvndszrszcpnzqpbzjmgrfsbjlghwrbqsqdhlnhzsvsgbqhbcdffjlgrbdrrjvclzqpftlhdvvcrvlgvlpnjcqdcbdjtlwnldjhhhzrwsqlhlsztwrznfsszptlrhjmqwmnfwjtjwmmmtvwzhpmjgzgsscbddgvvhpcnhvnggzhbzvvjlmdftpbcsvtsttrvgghptmmcdclbdvmnsdntthfbdznbclwccnlzcvdwzrqgddjszvbdqcjppzrtpnrhfcvvwpjqczgqwzzzvzmlnlzqszvtllftthgwgftjzsndpzzcnqpcvmsdvvfrjdsvfclsqqhsjrrctfvdrlhfmhprjggdcmqrrbqtwnrllhhztvjgmzqszbvqfwsgllvhsvfrjffvdscwjzqlzlwdpgthddpgzjfdbdqpsnntwpslvsdpqfnsgcllszcjwvtqhwhpfrlfdgwrfmgfpjmvnstrmtfcvgwlqdfqvntltqtrmjjtwcthvwntqgvncssplnmvlnstlcphvlcmvjnstwldtntchcbmzmlzhgjfbrdlgzvqpgcndmfdnmcnwhmpdnpqstfddddcrpgrpfwfbzjqtnzwwqpzrqpmrjpfznrndfgwhtlvrcrphqfjzjbttwhgnsngqwvnsbvcqtjlmhvmnmnnmjcmlpnpgmrqsbmgljvsfqvrlljqzmzqqbgpvcrwdjmgsglssjswmnvtshhfqjhqmfmvcjwfpwsppgtrqsbhhcdljnjphnjszqpvdplbwzpwmmpwfhmhngtllzqvpmgdctmfqwwqjszssmjhwnrjdtmmvpdnwlqtcbpfcmwtbjmmsmmdpqgzdhsblgjmjbpzgqvqhnggtwmhztbbhlflllgwblncjjsngdgvsfdmsbsvlpnjjzqqbzhsqclmjnnmmwlpvtgwqmcgmrqdwdddlgbvhntbztbjnqhdlggnzwsdtdzprgddhtcttjrcpszgchtfwqjsdlnbntfwqpzpfsqrqjhthmcfszwtwcqwbvfzdnrrpmzjdrhsgmhfbsldvcrjdwvpqpszzlvbptljgvccqsdhhnztjpghbvhfptgplqdvldjzfthpspwvgljwnnndwrqzbrstnqbvrrcghssnrpvtrhmvcmbngwndzfswmgjwnnzqdcjhpthcgvthsnwqzrnzrvdjmctchhsbnrtvctzqfpcjhzmhnfjlqftbjztfbcppgmwvrzzrvlcpnpwwpvtcpdplrcfpgfqjtlfjtphhpcltwqcbqbznbtjrtdrpgtvzmgsclhpptrssqqbctdrftqzmwjmrmjtgmjmsnbnspjvcqpqnmgzgjrmfhghvsfsdqnbdjsbcpczsdswdcvhfzlgpzbtmztcnbpcvjnlcdmmlbtwzsfqtfnlrwjtwmgslcgptgbdsfwdhppvfwbbgdfdqtrbncbznmqtchzsdzlhlhjnnbpdvnnfjrdfbdqmvcb

0
2022/Day7/Day7.py Normal file
View file

View file

0
2022/Day8/Day8.py Normal file
View file

View file

0
2022/Day9/Day9.py Normal file
View file

0
2022/Day9/input.txt Normal file
View file