summaryrefslogtreecommitdiff
path: root/Advent-of-Code-2022/aoc-3
diff options
context:
space:
mode:
authorkartofen <mladenovnasko0@gmail.com>2022-12-03 18:16:22 +0200
committerkartofen <mladenovnasko0@gmail.com>2022-12-03 18:16:22 +0200
commitc438b26e7453d890d77c382d8737b74b96f7ac63 (patch)
tree81839034848299a9bd0a2764aa3f9fd053932e05 /Advent-of-Code-2022/aoc-3
parent41085185b9a69e455a72d6beed8f29c52967d21d (diff)
day 3
Diffstat (limited to 'Advent-of-Code-2022/aoc-3')
-rwxr-xr-xAdvent-of-Code-2022/aoc-3/build.sh5
-rw-r--r--Advent-of-Code-2022/aoc-3/input.txt300
-rw-r--r--Advent-of-Code-2022/aoc-3/main.c92
-rw-r--r--Advent-of-Code-2022/aoc-3/sample.txt6
-rw-r--r--Advent-of-Code-2022/aoc-3/vgcore.140079bin0 -> 6590464 bytes
5 files changed, 403 insertions, 0 deletions
diff --git a/Advent-of-Code-2022/aoc-3/build.sh b/Advent-of-Code-2022/aoc-3/build.sh
new file mode 100755
index 0000000..30f495e
--- /dev/null
+++ b/Advent-of-Code-2022/aoc-3/build.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -xe
+
+gcc -o main main.c -Wall -Wextra -pedantic
diff --git a/Advent-of-Code-2022/aoc-3/input.txt b/Advent-of-Code-2022/aoc-3/input.txt
new file mode 100644
index 0000000..51d8036
--- /dev/null
+++ b/Advent-of-Code-2022/aoc-3/input.txt
@@ -0,0 +1,300 @@
+lvcNpRHDCnTLCJlL
+RFZggsMrjTFGCJmdmd
+srsBZgBqwBqRZbzqtHpzzDNtHDqV
+CCTPpCvlpzzZQQQflrzbQDttTJcgcggJcHtcddtdhT
+nMLBRnGsFFLznRFRLMMNBnNLDRDdhScJccctdSccJJgDDHhH
+GVBGVBsLjsrrvfzpjpfQ
+dzVRSPVVBVDSPzDBQVSQFFlrclMplpMJMtPJlJvHZCMt
+TjmGmbhjTnTmwhmrvvrHcZvCHZMl
+fnLwwqfwfqjghHwGThwfTGGBFVDFFsszSRVzRBsdBDgFsV
+CCWFCcdDWwcWFpSvggnzRRQszngJwT
+mGtqqLrqfmmLNtNrgTjgJzNQlvJTvznJ
+tnhVbhMLLZZrnWHPSHDBWbWBFd
+nQhvgnCQjSSSTTSMCsLDsfPfDlsPJMWLzL
+qrqBFFBbrVRLszLfsqdqPW
+bNFFRbBcFZNrZRRRbprNpFrHSwznTnvSwgHvzCSSSjnCQwgz
+tnnZZVmwmqtvVdZqnddQQHHTHQLsFTnsPrrgrQ
+MzMflMGpzGzPGPgjLgHrGj
+zPfhMJDDMJfzlhcRJvVwcVtwVcmcbqqtbv
+GVzrBVcPVfGrzVVBcQJlGGRCZSSRtSdRnGLJ
+wbjvHWbLvhFppjZdtwZRNddtJwlR
+pvMmbpFFbqqqvWHMFvzrLDMMrMTTrVTPzVzc
+qPmgpmwpwqWWPHdjdTNStzNLMztSWtMNtz
+lVFfJrFJbbcsvcRVRZzQCzQNSZTZ
+DGbvFSDGbDjnqgjwmGdq
+DMnpnpwwnpmRRmcRBDnDwpbRQHssHqhHCHHSsQddHZQQcqqs
+JlZjjlJgNSddfsgQdf
+GvrWvzNjvPVLDpbPZwBP
+drQDzHsHrdZWqDSSPwmmJDDbvbSJ
+hphBhCMFlBtBtGTJMJsscPwTjMJv
+tlBCGFgVFNpGClFFVGGtFBZrdZQznfdQQrRWVRQdRsVf
+NjdCLdjzzlNdjwBBtZqpqPJQbN
+CsDWcHcGHtcBbJPpbP
+mGHSssSgSsHFSgGrSgmlLzCdldllrCVCLdnfnT
+rDLLzRmbcLJRtRSvSBdZtSTp
+MFswshwgsCsjghgFBsGssjlZpfpvdSHfTdCZTSpHtfddTH
+llwlwGjMPMQQnBMswsFgglPVcWcDcbWqLWbbLJVDzrqnVr
+pqmmcSTLfSSSMFlf
+rHWtPWnHtlrlDntzWwtBFdzCFMRCfjRQFfgMRMjC
+PWWHDVZPDDJVlWHncGGbqqTVvVmpGTmm
+wLBtWhGWJBdMmZMs
+jgvNCFvvGppGnmNJ
+DDRQTgcvjTPFqGHhRVhLRSVL
+tPPwLpBpDpgLSPvgQCvsLPjdjNZrJZsdZjsrsnZNjbZc
+lMWzWMBhmMhRGfVRffHmMjJcJjrNNZnjJcWjNqJnZJ
+mFMzhTmBGfHTwgPgtptFpPgP
+qCcqJQHslgtsQsCZmPWNSRNZTPBBCN
+nnLpjjnvwwvDnrGwFvbFjwPgPWRTPrrPShNhmmNSRRPN
+bnwdDLjnzGgvFqdJQcqVfQVqHt
+DfCzDCCTDLDBCsdjzwdrHjbRgjGH
+MSStMScccJtPptJNJZtJJSrFdwPGjFFHHwsggrwdwRdP
+nStlpVlhhNSshZlcNZnMcctpBChWBQLqCWqmqvmBCBmQBqmL
+RfLHNvfLfLZQBtRZsBfffjVqGvqpGSmJpgrJpjGjrp
+FDbPCMzbTTDDPmzrVzqppJBrBj
+DPcWPWDhlbCcWBsQZZfHtdwf
+fbHfPfHHfPZWgZfSGpqNBqdBBjpjdPBJqv
+rnVNCwwrhhDrmmvcmjdDqcmB
+hFRrslFRNhFzVthllRCRCCwnQtSGfQgZZbbSWQLSSTZWbQTt
+nmVqTFCmTVbnvVCnqwFrffjhZLffhNrNJF
+StBHWDgMBpHMBHDzLjffjWwZJNNfNZjL
+wBBcDcgzdVbbQcnQlq
+MfGCtqGDhjDqHhrjGCcJZZBwHRcspZsBsHRc
+PFFpLFSpzVdSTPgnzzdPPZBRcZBwBJRcWJBmJW
+vdTTzVpNVpfCChMGqMvr
+VtZzBzhtlrhznFlBfgrfZgFrPjGRMGjRTmSjRjRTHjfRHmRv
+DQpnsbJCsNNnpNNJsDQdCDcRmHPGTHTHRSmRmHjvjHSpSS
+cQbnQdNLdJJQJJJDJWnFwzgwBthrgZBwBgFLZV
+VhRRgmhpFjFFBDVPGPWQPzvvMMWfjf
+qcnbnCbfLqJrCnrcdbbLrGSlzWsQvsWWzvWGdMWGQl
+bnfbwrcwCrHqnHcZhFBTBVRDFmpBHB
+lrtqltJJJqSTWJqVHRnsRhphdbfbzBdhsRsd
+vSZCgZMMLSNvCQLPLDPNgZgnznzBfsGGnQnQGdnsfhsfzb
+CMFLgmPgFFNMFDDCgLLcrWrjTTjtmSJqlWTTwWSr
+LdjljBdZMFdZFLLLgPvWzQRzCsCmCVssmFSW
+TJttwDhnnTlWsQzSQQDvWm
+HtcnfctJwtwrHhrwhfHhJpjNLMZBMgZLrBlbbLNPNj
+qqhNchPdpqTTNqpDmmvvGzVfzfmvdH
+cwccjsFwFjnwGwQDfVVVVv
+FbWjcRsLLFngBrjpbJqCJZTbJZNClq
+lhznMTSzSnjhQGtVPQBdGB
+msfNDDJLWslJgfNgCrmLdtGQFVvdGQPZVttBFP
+RCrJJJDrJRsfgmbsrNsrlDMTSMHcjqwzScjMqqTjbbSc
+nNgsvNWDRvgnRNVCFddTNZTNZQCTFZ
+lffHJfHSPmSfvLlbLmpZrCTFTtrTQHqtTrCCrq
+cpzblplpbvMzWnsDDB
+CgtvQvJvMtWttvwftCdWvDQrfsFcrqnlcnqZZFRcRqsnhF
+HzLzVBNLjHqnhzFlWFlr
+NmBjLbVVbmbTLpTjBNVLHNdCtTSWQvCgdwSwJtWQwdSD
+lncHcnlccVSLNSQNslncLcrZJCrgPfJZDrggJCCvZPHC
+jRqqRmmqFwRFppfPPppPBfpWBvZf
+wmMqjtTdjFwGGdtNhQbVfhntcNLVbL
+HFBgMjpbpddMpbHdgHLLRNwhwFLDtNSRDLLD
+zsCnfqZflrlnhhrtwNgggNNL
+CGqnQzlqlWWMWgVBGg
+pQnvzjztpzpCmtzzjzpnBHrJNGlqggMMqgqlNWgfNNqNCP
+sVTSwddRRDVShwRwRTWgPNqMGQMGNqMWslsg
+hDSTQhcQcHrtcBmZHv
+QRmQfvQpWpswfZWWvNbhlMglgFbZDldlbL
+rzHqtcnqqVjqjGcHdLdFdCFdCbLDnMCh
+DGcGGSPDpWTsSfpv
+llfMHTmvHlfZlFZRzgQzsFBLtLzFGF
+wrWNJrdJhRmhGmNh
+DWrrJjwPjCdPDwdmwnrTZnZZcqZfnqbvZfHvql
+mPmVJJmNZJmlVBPPrZpWcFWbGWbjgqNbdqjSjg
+nMhzwRhwvhMDMgWHRdGHgccggd
+sMvnhQshMwwvdvMMCwBtlZtplZpTmPBVZVlC
+ltlRzpncRglplzhFwFwzZZMWLWZBqnDVZLDVZQQQ
+SJcdvJscNSsGcSGCSJmsTQDTVZQTLTQQWCTTMQCW
+sPdJmcvsJvGJmdJmfpwftfrlztrRlPfP
+LdPrWcMCWCfPdMJgdFsbRRHsRSHRHHcFpH
+hVVTQmQTnRFLFsmzps
+qthVVwZqlQLQhNttDDDWrffDJJJDrgNP
+BTjTNjtlPrBjjrljbnMFfhVWFFhlMWMfHdll
+mzcgZvDggDDCJCZLvsLJLcmVqWVSVqFLfdHHMWVWWWffnF
+cmmcmzQDZQJmZCnDRgQCTTwjpTtwRjrbNjpPpwrj
+rMbchQphhCSbGnzSbl
+qFtgvTTqFFFFJGzWJG
+NZjGqGBNjNHQrhpPNHQr
+LnLmbtTtTwtLcVfFFLtPrfPrfqqqsqhSvrhrhh
+BzJWzZRZJzJvlZJCZgZZpJHCqQDhNQPDqDDrjNsjPPNrhSCN
+lpJWZzJpgHWdWMgHlJMZzgpJLGVLGGvwVwtmcGbvGMGVvncn
+WdBgdqRgWqHmNNwsGgcQ
+ptPVbPbSbMJrmsVzRzhwmcGQ
+SSbvrJbJtCDZfTqdRfCdBZ
+WDNNWvPpvNJRRbGLsGMnnbmG
+qgFdBwgVdjwdtjjdBgMgGmLQsnZrnZssGswsmLrw
+FqTCTtqjdjVqgCqSMJMTvPThTJMNDh
+brSSSpZjVVWdfVrHPhRBggNNGwHr
+fDlLzFCLMvnMMJLNHNCBQwNhRgwRPP
+MJqMmfzDvFtLDtmsVsZZTsSScWcsbq
+CSZlllhSdnDrrDdJjqjzbSGzGvwbfHMb
+gTNvVNLQtsFpQHqfwfBfVMfHzf
+QgNmWTtmTcmmdmrZRvnlPl
+SmzfvfjvjbjLNJjD
+cFhWMhGHTPhccMQQGBTFGwbVVwdbddJDvVJLvDDHvd
+GFMBGcWTWhcGrhFZTTchQsSfgtmnnRvnmnnRgRCrRS
+ZTQHVZsZSQpQQGBMGqfBRbRB
+CwtLDtNFcPnllwnqvMgbvGVfVfBG
+VClLWWFPPhlhctsTrrSpWpmszjZj
+HChzPltNnnHtnpqSpHpFpSfSvS
+mJmQssZJLdTQLcbjlGLGfSgMbqwwSFSMSFMMqMwS
+JdBLlGTjLjjjjdmmBPnRzCBRNPhPtPWPtr
+FPLHMHqqPMgFLLggsMghTJhwtDSSJDltJvtwdvST
+WQfmjQZsjfZNQCrZCNZQQWQBCSClvdwTSClwSwlTJvtwJdbT
+BpmzrWcpBrfmpsGPGFqPRgzqVPLM
+bHjccpHwGHJTfPlffPwr
+VtChMZVhhStZdfTCfJvcPRCTJn
+sLNLZcdNZZqZqqVqSNWtjQDGHssHGHgQHDBgmsDg
+CdWgCpddwgClFlmmVTBbRtRtbntBVVds
+vcJGhPLPhJvChLhMLfccrvfvsVVbsGBTTBnVbRzBVstsGnbz
+vJJHhjcCLPPjQPHLrSZmpgmqwlWZZgZZQm
+VpTFCFtrjCdJdjHVFnSjszSllDjsDzgvzl
+fhmhZBMtfZfGBNfNcmsbZnzSlRsRggslsbnv
+qPLPhMcLhPfNWPpFrdFdFTtJ
+nlgQJhJFlncMzMWZMFvw
+mDdsDfHjHsjHdjTLfpDsbDcNzzwcRbZNZPMcCPWMRPMc
+sqqdwffHjTmdmpffmLddTTGDnSJtJBShVVhrGVJtShrlBBnJ
+CrcMcMDBCmLlZdSd
+qPjGjnQPqWjgZmTdlFwTmqLJ
+bnPnnzHjbPznzVpdpVDcvprr
+TCScMQcQCrssJPQhQs
+VpfnqqfdVVwpqvqwGbDPPsjgPShDSsJhlnSl
+qffdmGpfwfbfvVqpfwwfbdqRMTSTWNMWTmZLTzTCZTMLWC
+QQPpPbPbDNplSJrCCj
+VdMzffgnRmVdfVWRvlrCTjRlNBvrrlrr
+mGgNdthhGgMWWtsFcHcHwqLqtH
+HrPFVqVppVpDjFDrVbCpDFJSLsmwjhjGLLmthJLJLmZs
+WWgRdMdRMnQnRzWvPSssPWssJmhsshtG
+MnfvMlnQccvfMlcTRMQdRfpHPDDDpPrDTbTBNbHbHDCq
+GWWRsSwLhWsRsSbsPttThZqrNBJJBgPNCJCCqNMNgP
+HpVDTHzfFDpFfzHzFVcrBZCggMJBvNrNgcNNrM
+jlVpVpVVQDHdFVlmmmQTlzpjjGstWLsSbsnnnStWLRhnht
+prLMDDjNCLZbdFLGngdLBv
+VQHmhWSSzhWHmPJRJhSmVHJPFvgTbtnTbBtGqbQnbdqgTFqG
+RzwzzhwhwNCvvfpc
+wQgmZnhmWVtwQmnnnQbQhzwsFcRPrFPvRJhPlPPBBBFvJv
+DdjqMMGLLMMGqTGdMqdMLdBBJsJPJBJJrrBFcqRlPlqr
+DsddsfMsWgfzftZb
+lcqlFSFwBBPlNwPlvSlQfWsVLTQjzjWVfLsWVq
+HMMbMHMtJHgFzzFrVVtfFQ
+RMFpCDDFcCNBcZvP
+gwDrClhppDDPwPhnmPlwDrlDjMFfMTjMTjJmRHHJBJRMJHGj
+LbbZBSvSLVRHffHJHJGZ
+WztdtLsSvNQStbbtzdStthWhnwnPBDclgwwnrwllCC
+MnMMBppMBDWMhpnCDBgCBmRbstvPvvbGltSPVGlVPWVv
+TrrddJHjNcTqrrqdFcqZwSvLSlGGPbtFRbLvFVSRPG
+JTccqTcwNQcTJrZwNJcJqHwJBQDfhCBCpCQpmpDfMRfCfBpn
+njVcjHfGjVjpTCpMWprW
+tsSsQDvSqQshDhtmWpnQnmMmbrpdzM
+FNhsDDLNLnNllBqfRJGBVHBPHRRBZZ
+hFVdlFSFlfZdRhgWgdWnnnfGpMNfnLMQzQQjMD
+RsrJRHsvBcvHBHjDMMpDQDjjzDHj
+BcCmBqvrbbqJgmFZtWdRVSVV
+FzzdDJrJCFSFRqLlwsgspsBCpL
+HQdWhMZMVwqLMllw
+bbQtcvZcmHtNPZcWthWRvrdrRzrSDfRSrzjJjR
+bTFZzHjZNJHzLggsJgbdsWcdcShWCwsSSdvGvv
+VDBmntntfCBGGGGhRc
+fMnnPDfmDlmnMPmtmttnVlHzZzNLbFbLbhzJJjMgJFbb
+GzgJGPRrMSgTgpgH
+hcvWhBdhcfPFvmFQvwfbHMsMMbpDpTDSSHsHpd
+LmcvFFlcWQlFlfPnRZPVCJzJClCz
+DdCHCHrmHRgghTHH
+pFVZFwfssMsgghML
+tSnphvhtctSSQNDqNdmrWGvq
+rqmtRmGmcWrRRQprRRnfbGMMlPGGPblwMbTP
+BHHhVZSvDNdhvBVhshbzfPbTmDfnwPwzPgbl
+ddvBsSSdsLdshLsLpmWqcWrCCrtFpQ
+wZPCwdPCHrnLQCGZDcPRqllzqqBzjlqc
+gMmgnJspsvTmWNVWNpTNWNcDcqVjqDcclhSzllRSDzqR
+JnWsgMnngmttFWWMdrwCZwHfZfdfGdFd
+wwgNgrsWvbfBrqqsWbjDCDDDCDCmFbSmLDLlSC
+QdpdzQTVdzRMTVVzcHTQLnlFmZHPSChCmlDPPHnP
+dRMLVttzzVtTVQVqrrrgBtsvWWwtNw
+vtBvntlqMvfnTfPDPhdRNbhdTFzF
+QLWcmrrcgmCgCcsgcQWlWWrrDjjzzjsdFDdRhPNDhhhzDzPF
+GGWHcCQcCCSlmmBVMGVBfMqwJtqv
+cfqfhDRwhqZgRgRzRvcfhBSrsBnrDBBJWrnrWrSmmr
+VCTVjGCTCjFddQntmrsVsJvrtrrW
+PFQGpFbvPRMNqgRq
+MmDgZZGMjZGfZRFztzCtCjzSrF
+cBNpPJpBdNntcBHBccJlsSVVzzSwlCRrCnzsFw
+PPBJLPPBBLPHBNQgqfMQtmTftGGvhq
+bbZnbnVVgVSnbgZtntZrltsprpMCJvpqdJmsCMMmvvCq
+BjDcjLLDzNjLDcjDzhcDNLLLHdpmpHJsqsMMNfCHfJpspqvp
+dFLTFBcBzjFLgTbQtRgTVTlZ
+nqNnrBRjLnjLZCqGGlqSGWlWDS
+mTJTTcTJJfJfhhhwMbQDPWCQFCRlbDCSDDPl
+dhMcRgJmgRrBrrrNgrLZ
+GvJvJSGZFrGmmbmCrWnhjncLctcWttVqjLBB
+wDlTzwlHTncRTqnRBt
+gspglgzDzdPDfpgfdDzsgMPGvZJBrrbZGJNFmCFvmFvFvM
+RLjMZZzfvNLBdjQfBfQdhRfSTVlcVqGbGcLGlbmqLVccmm
+FggHCwsggrWWtCHJDDHtWrTNNlqSnlTlnGVTmWGcbcbm
+PtpttrwsJssPsdRQvphZNzdMBh
+NqqpZBHqTBpPNpPpGwwMPGTJjjLjQljGmtLfftllbJQfGf
+nHczcrSFnVWSlrltrgJmjLLQ
+SvzcDDVVFzdzhndCFSvnhcDspRDRDMPpMHRNPPZqppwM
+FRSbVCSFFCDMFjRMjSSVFSWggMmWtWngJWttWmmJctnt
+BPwcQQcQqQmWHfgrfwrh
+PPlBQdNQvdLzzvclczdNRSbpLSbRbDjFZFFZVsFs
+wtrrVhBbpcZSSjBfSfmm
+MDWTvTMGMRCDCTQWsvfrRjjFfHlFmjlmLlHl
+gQrTQvQDssdNWGsTstcbptwVPqcbpNqttP
+jtGSwGQczrzjtGzrcsJwMRqMVMwRVMWFvVTWFV
+DhLgnDLndDHmLvWqpTHqHHVNqF
+LhdmPhfgZnZDlPCPmDfljQtGsJtBsWjGJzJSWBjC
+zHDjcjBjTfjjfGpf
+NNFTnNwPNNdqnJdFnqqTgmgftfftrWCZGbmrpWttmW
+FLJqVNVNhnwnTRsRQBlQzShs
+HJGJGJzzHHQHfJHsnNsGMbccMrTgbr
+vddSCCjdmVvDDmvmBVbbBchcrrcscMTTnscn
+VjWdFCVVMWWmjdSVFSVpqwwZttfJJltJZqltppLw
+SnmPBPBnMLnPBsSgSDqRNRRccDfNcNQQRg
+lZVWtWVzCjvZzCCGzDwbwRwtqJwJNTtDfD
+zCzHZFFFfdLnBfFf
+NRBFpNNJgNbWbJLRpRbWNtNpZllCZdjjZfjPVljTVCZQltlV
+sDqHmsHcDrwHhMDlfCQfVBjDPCTd
+MnGGcqwhhsrchcmGpzRJSSGGJWJzbJBR
+LBzjQQzcjWvHWLnVDdnHRffHDCVR
+rmJSrPJJsbNZssGSPrFpddfGwDRRpVjVpCGdCp
+mPsrmsNTrPNLTjQlWQhqLc
+MSDFszbhbRRTRdwhtw
+PWmCZCmZVvGqMcjmJRpdTTtdLpqwdlll
+MWGmmCVHvMSBDSNbbHHS
+mBwSBSfSPHZCLPZSWwfPppTndVpdVncFgcgPpP
+rhQJjzQjrltJzGqCrGJTvgqRpnTgFgcFTVFqFR
+QbhGMJrhzrhQGQCsjwMDNWBDSZBZwSBLmM
+bQfDPgDQbQNGPgflWfvMZcRMMFmcvMfZ
+BLqSssjnzpBwszqwzFCNMvzWvRvzCCZFvc
+BpNpjnNHnSpssqLqrBLLHjdhTPPDgbggllldhTPdrrQh
+CvCMqNWVVqqPvNvvChhhdSnFHwBdWwhfdS
+gqTZGGjlmclrZjlmSndSDwfFhhDBHm
+tRrZpgrcctbbltRpgtqCVJCvPsRvsvPCQPCLPz
+dTjRdWDBRzvjfzTfvTJPtJttsSLqHsSQJw
+hrJNmbnFNZrbhlCsqltqcQcQSQqwPL
+pVNhFgZphZmjzvjGDJWzVJ
+gWzQhCWbQnCCFgCJnFQnWCzwjrHjjHGTwHGrhLwjjjtStL
+splcpqDNDqqcZqRlspwHbjVrjjHTrwSbtVNV
+BpMslDqDmRDRsBRBJPPnbzCfvQgmCWJb
+tRtgRQWCwlTglHZHTglCtTdbbfvhWpbSBbhWzzbfGpfhbb
+cqZVMJmLqmNrsJMDbzGrGSvzGBhvvG
+mmnJPMZcclFRdnQtCQ
+QVQVqfFzVVQQrQwZsCTrBtTrccTtctcJRRjT
+vNNPnvGbBtWBLvBf
+mMHbfDfHdHGmnhDDqZFDzVSQzF
+NNlTNFCRTrfllTZsPWSsFPfzJdVQVpDQVszQVtpbzJMVbJ
+LNHjNHjmLLjNqvGgvVQJQDVLbDVDpdQQzQ
+nqmqGHjwgHvgwGHjGgccNTSWrrlCZrFfPSFFCP
+qWzCQqhPCHjHmqJhqvqmjRgSFMTFggMFTFVRVVTgTm
+SptGsDlnGfnDLgTMTwgRFFFs
+bBcntZdpGZZcctlGtDfnDnBCSWqJvQhqjqzjhJqJQCQWPd
+SjZJrSSDShddqLvPqzzdwq
+nTssfRpQQmQCHlPBBgGmwVGzwm
+TWQsbCRQFHFWQRTpzRHRsRrMtDrjhjbtMbccrttJjJht
+cCChVMwPPMHCPCCPrvJnntdTJSvTtdrSRt
+FGfFDBhGGlfGGfWJWdbSRSnRNbTvdn
+fGpGlDmBhflgfDFmmfFpcVzMzqZZzcCPQVZzqP
+SmgtSjGPjppBjbqqWTCZDQTHHHTg
+VsFfCzLvsMfzNfNRhVMslzlHqrWrQDQcqDqTrLWHcrWJJW
+dsRdsNCvNMVpwPdnnGbbPb
diff --git a/Advent-of-Code-2022/aoc-3/main.c b/Advent-of-Code-2022/aoc-3/main.c
new file mode 100644
index 0000000..d8e5815
--- /dev/null
+++ b/Advent-of-Code-2022/aoc-3/main.c
@@ -0,0 +1,92 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if 0
+ #define PART part1
+#else
+ #define PART part2
+#endif
+
+#if 0
+ #define FILENAME "sample.txt"
+#else
+ #define FILENAME "input.txt"
+#endif
+
+int sum = 0;
+
+int char_to_index(char ch)
+{
+ if(ch >= 'a')
+ return ch - 'a';
+ return ch - 'A' + 26;
+}
+
+void part1(char *line)
+{
+ int times_seen[56] = {0};
+ int leftest[56] = {0}; // rightest position of that character seen
+ int rightest[56] = {0}; // leftest position of that character seen
+
+ int len = strlen(line);
+ len = (len % 2) ? len : len - 1; // fgets reads the new line and the last line has no newline
+ for(int i = 0; i < len; i++)
+ {
+ int ch = char_to_index(line[i]);
+ times_seen[ch]++;
+ if(times_seen[ch] == 1)
+ leftest[ch] = i;
+ else
+ rightest[ch] = i;
+
+ if(times_seen[ch] > 1)
+ if(leftest[ch] < len/2 && rightest[ch] >= len/2) {
+ sum += ch + 1;
+ break;
+ }
+ }
+}
+
+int gn = 0;
+int times_seen[56][3] = {0};
+
+void part2(char *line)
+{
+ for(int i = 0; line[i] != '\n' && line[i] != '\0'; i++)
+ times_seen[char_to_index(line[i])][gn]++;
+ gn++;
+
+ if(gn == 3) {
+ for(int j = 0; j < 56; j++)
+ if(times_seen[j][0] && times_seen[j][1] && times_seen[j][2]) {
+ sum += j + 1;
+ break;
+ }
+ gn = 0;
+ memset(times_seen, 0, sizeof(times_seen));
+ }
+
+}
+
+void parse()
+{
+ FILE *fp = fopen(FILENAME, "r");
+ if(!fp) {
+ fprintf(stderr, "ERROR: Could not open file: %s\n", FILENAME);
+ exit(1);
+ }
+
+ char line[256];
+ while(fgets(line, sizeof(line), fp) != NULL)
+ PART(line);
+
+ fclose(fp);
+}
+
+int main(void)
+{
+ parse();
+ printf("%d\n", sum);
+ return 0;
+}
diff --git a/Advent-of-Code-2022/aoc-3/sample.txt b/Advent-of-Code-2022/aoc-3/sample.txt
new file mode 100644
index 0000000..f17e726
--- /dev/null
+++ b/Advent-of-Code-2022/aoc-3/sample.txt
@@ -0,0 +1,6 @@
+vJrwpWtwJgWrhcsFMMfFFhFp
+jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
+PmmdzqPrVvPwwTWBwg
+wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
+ttgJtRGJQctTZtZT
+CrZsJsPPZsGzwwsLwLmpwMDw
diff --git a/Advent-of-Code-2022/aoc-3/vgcore.140079 b/Advent-of-Code-2022/aoc-3/vgcore.140079
new file mode 100644
index 0000000..c9dfe3d
--- /dev/null
+++ b/Advent-of-Code-2022/aoc-3/vgcore.140079
Binary files differ