day 03 - original solution

This commit is contained in:
yosh 2022-12-03 03:37:14 -05:00
parent 4d9fbe730e
commit 5258095239
3 changed files with 337 additions and 0 deletions

36
03.awk Normal file
View File

@ -0,0 +1,36 @@
BEGIN { FS=""
# make a barebones "value" array for any character
for (n=1;n<=26;n++) {
v[sprintf("%c", n+96)] = n
v[sprintf("%c", n+64)] = n + 26
}
}
{
# part 1
h = length($0)/2
split(substr($0, h+1), a)
for (c in a)
if (index(substr($0,1,h), a[c])) { # find the index of each "2nd half" character in the 1st half, if it exists (!= 0) then add value to t
t += v[a[c]]
break
}
# part 2
mem = (mem + 1) % 3 # count member in group
split($0, ma)
for (i in ma)
if (s[ma[i]] != 1) { # this is a really basic and naive (?) way to check if you've already seen a character but I wrote this at 03:00 AM cut me some slack
ga[ma[i]] += 1
s[ma[i]] = 1
}
split("", s) # this clears array s
if (mem == 0) {
for (c in ga)
if (ga[c] == 3)
gt += v[c]
split("", ga)
}
}
END {
print "compartment total: " t
print "three-group total: " gt
}

300
03_input Normal file
View File

@ -0,0 +1,300 @@
WVHGHwddqSsNjsjwqVvdwZRCbcJcZTCcsZbLcJJsCZ
hngprFFhFDFhrDpzzQDhtnBJJRJZbZvTcvbfRCJfBRcBJl
DmptngtFwvvMmwmm
HFddrJnLdqtHBMQBmmVm
gbvNsbhsvQtmZTbQPT
vDshDlczcDhcssscwzQwslLJrSJLpqrrzpnCrSfLSnqq
pDGQDSpFDGzFDQSJqzDhjhQMTjTrwTstbTBTjTtLtbTMBT
zgzVNHHgMwMLbLNB
WRWPgdHCZccggJmJGzJmzGhGCD
sVJNlhldShpdpnnwVnwCwtwggt
WLFFcHWQLPPZQCgtnCgmbtbHwt
MPLWzRMMcGgRrWNDpSSSfDflMlTd
BBMZJcgBRjCZZzBpSvHQvbLvvHCQLQ
VlVTFwDTVGnfWSQPtsDPbvrpDS
wWdqhWlwGVfGwlfTVqFWfWWjzZZBJmMZMNdzZJMpjzNjgJ
FBWFphQBmDmpmMSpDWVcVcvsPcRbrjPMcMsr
HHtdnHnwNCHCTJRTPTzrbvVbcVRr
lHqHwlnlqnGCNGGmWDvvZfpZvG
mfVtmPtsccMmHcHCFfmhVmnpgZLbWPZqWnpqZbZWpgPW
zzvwBrzdQDvpZJfQJZJpLf
BrTBwRdNcfNmfStc
sTlhFLfZTTLcfsLlLDZflvQvRNqRJFNvRMRNvQQRBQ
CWcgwStWwCWWwvgNQvJBvQMQRB
wptGzbzGWVGSCVVlVlLDcVVsfhLTlf
HVnMVGwLLbsGnVsLnwLSBggMhjmgmgmhtmqhtgMhMj
zrZzJRZfzZfrPCrFcWccPdTdHHlvdmlgTghCtmtTgq
NFfcZWWzZrrHLBpBBGVGNG
HqFhhCBCBLmwwCqJCHFvvFdcprrrSSrjRFRjpgrggb
VGzWtQzGGQPVtlVNslVWsPdRpmcRrjpSzcrcbdSmSnSg
WPPGllQMPGmTLvLJBCwM
PvDWRSmTVvSvRhbZRpRpbjjjzM
GBFGHLglHrrrLgGrttbMjpbcpcZJBsBp
lrHgrrndgdNnlHGFQPMMmWPTvvWSCDQn
mmhQShhmhQfzNfTTlShbHJrRtltltJJtHlRLLZ
WscggNqwPWjcGcWWcpNcRJHHprZvZHrvtttZJpJr
jGjgcMGCwPNsGDCcszBfhhQQQDnFnTVVBV
mcGjrwzQcrZtQzZQDZcPssvPVVCPCVLwswwPBC
NJbqHddNSgdPWvvsVHVLPs
NqglNSlJFNSbSNdldNlNdNbTRFDrvRmQrQGtmDrvttQmmtDj
zzcBPnHBjgHjWJvbJQTvScbwcQ
qdspVCFqVqfFqLFCqtpTwtpTbSTbJpwBST
FRLFRCNNqMfdWNmZPBPZrHmm
VmtRRJmtrDrwhRcvPspltvgqtqsd
WGQBZzMMBGBGbZTTWWCMNSgggqnPlsfbqndndccglffg
CWQQZMFWdzMQdJJwJVFrwmmmRw
rZsFfGfNhznzsjhzZfVjGVvVdvSTSJHSDDtcmmmttC
wWpRBWlbWMWlQDvCcRSvJRSStm
LPlwWqbgwqjjcFshNf
lsppsGphmPrRQnvHdRpd
qBgjLqMjgjTLPnzHPrPRLnzv
gSMfNjNtttVbqBbtTSStjTqlhmlZDsDsbWZWFFFsGhlWPm
sPDPDzrGzBsGRsbwrjtSVvthVfQtQw
ClpgFZgNqMWCgqCpMNZqNWmNdtSwtljtVHQhtwfvdHtSdhSj
FpNCJpNcpfCpgNWPGBLcbTGTzTzPnG
mssNLCZqSqmNCHmrqHChJTjTjnRRnnqVnTTGngGTRn
dbwptFwQbvdtcvpZDcDddgzGPjTGgpPTRpzzzgRzTn
BwZdtZldDbrSsNrsrSHl
MLnFWMRWpnpnLnLCmPGTqQsFzBttTQ
SwNlDHNcddglSDBjrqmqGQqqmGtGGwszPP
vdSlNcrvvvnBMbBR
psZPRmTpRpgrlrDRBFgV
jvCqNhwnjhGNqCMqVgFHWtgHBrtwHFrJ
cGvbNcjvvhhjcvbQGcZdZSQpzdpmpPVpdZpd
drTHDdlHzllZDTzTQRQLsPPSsBbSjQdL
MfVVWmNvMnqNmVVpMMgfgMmvBFFfRRLQPPsPfsFLFCFRSFjR
whMnNVnqWmlllHswJTZT
ZSQTTLLlTsbmmDZlmNQSNFfPwHwqCjCCfjwFPwfwLr
MctMJMBVttnhJcBBVctwRHjHRJwJwjFfqPfRwj
vzqgqhBVzzTlZmmTlN
WgvlHJFvljvdBmzcvcwpmchc
TQqZsTZttLZbRZsLLMzzppBmNShCmBNTcNCN
LPMZsMZLMQVgglFPhFHlFl
qsBCPVPqVbwfnMQNmZJnqJgR
hHdrvvLWtvtjWQnZJTMrmpTZgN
DShSShLZdFGPGDPGsPsG
qRBddRzFFqFqHnNnPSnnmmSpgpJm
ssZDQMvvMwppNJWRDRpW
MMvwlsRMcQBjcLqLBBqc
ZGHpwFGvwpHrvfFTMtDfccMjntMntc
RgSCLRLJRSRSQQqJmTDMPMTtsJjnclBjtj
LVmmSSddLCwVHDbzDzZr
psgWdsBjnnJjbZWQDDLNrDcrLVQjLM
zPSCCHqCfqfmWNMcrVSLRM
TPHzWPFTGztqTGgdJdsssvZgwb
gcFgBChcClJjNCPb
sWZdZdrSmWmSZRwSmsvPlsTtTtNMnnlvnJJv
GSWrHZdGQpRrrSGmpWQmQfLfpVzDfghppzBVLBlBqg
BFNqFzBNhqVwmTtsqVst
dMwMwMfCMWbDtDvDssCC
ldMwMSHHMMWJpRpPLLpBzPZjgnZPhN
WczRJhcWggVBdzPPLnCjdvjm
lSpSTpTSsCCmmntNdp
wSFDCTwsGDqQqQVWWcJw
RqPqhDGBhRDrrhBFmPmbgssZbwbgCbwsmZsQ
nCtjMppjfTpjJJfVZwtzZtllLZwLss
MHfpMWdHpSCSfnSTJWhDDFDFBGqDGvvDBDFd
MCCGMCSHVGNTspVWQznddndg
rttLtvRbrhLZrbcQdJnnQdfddsrggf
BbRqltRtHsNNllNC
ncFpcsLLdFmWlRmnllTR
bMMVzVqMzjNVDblmRTPGlSmmPlqG
gNDDJMVZNCbNJNDNQCbZCbscvBsdBvrRHfcpdQpfFFff
VnWFbZvFbHWhFjZWVJZJLZFWTttpMCspQTTzQCHpgQMgztzT
dGcfdNdGrlRlBDGNSllfBMspgzmTgtQQgztMtzpmcT
lBNdqRsBRdfPNrLPFVVPVJPZZvhj
TLWgggJzwjgWgjgGnnmQnzQfNNNQsm
SpPbBlPBMlvFZpbbBmQGsmCJmCstsdNGBQ
MhSHhZPrPbvSFrJPpPMSbMcLjjqTLHDRTDDTTLDLTqgH
fprRRbbznFbcQVPDdQPdFV
LTvmsLmcsHmvDvSZDZVVSS
jWtmLccssJTLjHmLWWJwnwlBfwnBbllpCBnffbBr
plPBWzbnFLPPtGqMMwlMGwmS
ZQjDHjrQjdjVFwdMvCSfmwMqdt
DDhhrRDjQghHJjhWBbgbTccbsTzpWF
vgCbbwsTbWWWgwBWDGGDqtPGtMgGlFMH
znrznJNhLSLphRRRDlFPMmpFPjjHtMFF
llNcSQVSNcRbvCwwWcTdwZ
qpnJbnRRnJhRFhFHRgQSzHlSRHCCCg
fMBttBvsBjffvsQTtfGTWlCWsSgSmHCzZmLlHgzZ
ffMdjrfdwjfwwnhJPFchhqwQ
NCVSTCVCQCCRVDQSJsqFPsPNspFhhsgjPh
btvtWtcWnpgmFhjmmt
cfnffBfcWcrMdbvMQJDDrDTDVCpCDrGD
fZNhBWFSlFQFjWQTTldHgCwvTvqqdr
zznVzCznmHvnwgdH
PMMbCGPMDPcLbJhFhWhBhRScQZBQ
WQMrDWGHbSWHMNrTQRhghmgPZccmqDLwPqPg
svCzfpdzzdsnslCsnPZcHZPlJcqZgmqPPc
nntVpdpVsfjCHzvnsCzRTBrtWGbNNQSMbTNSRr
SnpDQdBqGpDSBMfQGcMQBDJPNstvJcWNsPJCtJtNRWPC
VrVHrhTHlPHTvvNtbhNRNswC
TzlFHHmrVlgTlTGSzGqpdMGBPQBS
zrCDnrDVCnCgnrHgGDnVVCZsNttQZmjtsmbMqGqsjbqj
TlRRWPSwwFwbSwTTTpNQQqNjqZZlmMMQQt
wvbwbRTLWdFFwvRBTbvTTRzrnznnJrDDCzBczBfHCJnz
SvTdmLNNNdvTBmvmLvSvDpgczzjfgjggpcjcNPzD
VJHQsJVlHpjjpzsjzP
VRlJbJQrVbVHJJPMhBdnBRCSLZZZnvnLvv
tMGcpGtMtLtsCGspLzNCBBmwCzQRzBBRWQ
hdlHFllDdZgDbDDlDHTWWTnzBBBvzmNHzwRz
FSddDlFRqDFqFSdPVqdhcfGMsVtVfLjrfGfjtMcs
RGMWnBMWfCCMBHTDptJJgZStRPmSRD
bqzFqjqcFLNLZZSmpSBgZZ
rFrQNbNBlNcbrQlNQvvclMswTCTCnwrwHrWGsGCswn
WLhJQddCQwRNCQNHczHNzMvZcZvcNc
SlSpSlrpDqnbqDjlGjGGljTjMZZPPMMfVPgfHMMVgVvqfgcw
SbGsDspbbnjTjBldCFmLwFCJLBmtJB
TMDjMvMqMvDTzcmFCgrJCr
ZZZJSZWVBHZWSSZQJhVhWnHJwczGGwGcCCFzwgmzcwFgwVzc
pLHNQSnNJsMLRJds
TsLZGwdsDFWHBZJFfZ
mqhRvqrzJRbmzJBFfgHHgWgHrrlH
JvvNhJmvtDdsNTwdLV
wwnSVSmwtbstznwgbzzVMTNpTNWdlCSlSWTffWNCSN
cFvccLGFGvvGHZflnNTpnZpZcB
GPqGDhGGqrDhVRgbnbttPmgs
rzSZJScLrcBLvjvsqMPZvjQl
nnpDqgDqFTgwqHHvMHvvvTvPMM
GnqCGpDqqVhccLmrmSmCRL
tJSTmdfddDTDJCPmbQvQLHvqqqbrbvlP
zWGsjcwwGGcVVjcGWcNjvNjQqrQtNFFQHHrF
RZnRVsswRsGWcwVBZVtBRdDJgCffTgmgfnnCpfTfTM
FnCrzhTrNPrMcnhMTnZZZNPwDPdbDmdDtwjdtjbmQwDt
sBvWrpppvLBsLRVBfHSfbbQmbwSjStDSwSwS
LVRRRJqqlHNlNTChrhMG
WNsfsstMvtMvNNGPZwmZmqZPLWZcww
rDCdDRCDFQjSVLcmZcDq
bBBHqTgBbQlQRCQFbgqdhvshGvTJMnfTtnnThnsN
VwWBTNQcVzDtrgfrtzzt
LLbpShLGvlbCmLjpGSCSCpvFdrgdddcHtrtGgfqHcDHqrd
pmvLmlpmjbLbpljJPBBcTBBQRZBBVJRZ
cVTcVTNvvghNhvggPPgtCVSpSQmzCqZDRCmDZDZS
dGJMWFsFMFWsnlzRlQzlzqpzlZzD
HdLFssFMsJbnbFjqbhPgjNggcrhg
LLVhQCTvRvmWlCppQfQQjPrwszNsfzNz
BZSgncHgnJStJHJgntMWzGsrPqGwsfPfGPwwwZ
bdBdJMBcShWCLbhWVC
vjdpGNGwSNCTwwRbfnWgQMLjQWMnLQ
DcmFPFtHmlcgpqWDnMbDLf
FZJPtcprHtPPHplZHPZclwwGBSZSvSwCwvZzNdwvvw
CdJLJCJPWPWcbtzJtqJzFrQvBhfjBBvjjvdjpFjr
sBRgsZGDNSBBRGDwphrrrThpHpgHvhpQ
DwDsGBDNwGmMNlMlMDSPmztJVCbVCCWqPqJLmW
LSTMgDSRSMHbMDWLHSvDScwtCGqGrjGrcLftqVGtVC
hzJPmlphCGrCwVrJ
zhPNdNnQZBZBhZnNZSgMWMDbMHwWSDWNDH
rcdvvcwvrHrMZBjHSZ
sDtWblgnltsDFlgFqltCCVQTMTgSHVTfSQfSHj
tDtRWFpFbWWWWNNDWsNqWvmzvhzhzGmzjjGvLwJmpc
nFSSnnbhSfgLSSnVjdjfHMgfMzGzmqlNGGmTPlqqTzTNNzlT
pBZsJJvccbBmlWGlNb
cvsssvZwsDwrDdfFgnbDfVbgng
mWRNWNCTdwdCwhCddbWWmhsZVgJQJBVBfsBsJQLQBLJb
qFFlGzFtjjcqzHtFtlRfVfsZfQHVfBHQRHgf
jqGjtcDnGnPzFRlzrnMdWrrCMMddNNWT
MHWCjjGMcHhbhPDLphHQ
nRVJrtgssdLgCppvLQbg
RlVVZNVRJlsstldsBCNlczfjjSZmWTcmGmTSfmSm
RTHqgTgMwgnGTRzqTHCGfdFdfhmBrJrdvbFJMhPB
lNZNNNLttLWJBPBdZBFmdZ
SppscpLVStclNPWtCczqnQQwHTTgCGwq
hSHRCbZRSZhbRZBctnMVjwwtWtwh
GrdFzQrDdJstjcWttwsF
drPJLDPGPvDvzrJPQLdDHpZlwLgRmwCHLpwgSbff
zMSSnCtCdSdCtdfMdHMdtVBDjhWDHBqbTVVBqhbDjr
cPNhFFNRlNDlTBqjlTBG
RvmvRpPNRgwgPvFwhmdCssmCzdMshMmL
tttjgrpTwmCgCwgwrrlrHzbzqqFNzdJqqZnddJwNbh
cQjMjPMBfcLBSjGQBndFnzNdNnhzzNGFbF
sSQPLMfVPBVSfBMvVLSPfHCttDjCDRRtrVVglgpttD
vdTvdpBvcTPdSSvCLrCCDLDCQGDl
sRfnFgmFRMVsnqgRmqzmrrDBDwtHlLHtrLCDGL
qRMVjJgRFnJfMssMsgZScPJpZbPbPPWhBZSp
ZJgNJhGZglMZZFDTPSNqFSqTSb
mwdvwpsjrcjBvpwFrvbHcDqbWHRWDSPWDHSR
CsvpsLLjFzhlLGFZ
sDNQrMrNfrlQjJRgGjbTllHG
ZRhSnWFVSwBtFRBVvVgHgbzjgGTJnngmGmHC
vWZLShhvZLVtSFSLqwVrQdqpcqMDddRNQMdsNP
hQhSQbbwtHzShwhSQPbJRsLwRCjJmDCcvmqCcs
FNdBTBTNMsRqqCjTjL
GNdrdMBVFShhSLSGGL
cZzcCmjjcvdzdWqgWTZgPZgZhh
wSwVGSJFTffgJTNh
FSVpVlBMShzbjzcpvp
qqlblClRbnTvqTmRqlmnTwrdfdwFFNrngfddDBrNtr
PcLcQLMVLGMzHLMchhLcjLFrrNrBfrfFNJtNgJDDBNzt
sSjjGcGQscSVSMjHVMSVPSQsWmCmppZCmtCWbbWTlZTqTl
qWlVJmDJHWJHVJlsdVTdhbFNNgFhwhhhFhwwZg
npjnvQpStCQLvBpPnvtBtBpGSGbzbGDggGNbgwghzZNGGN
jBvLtvjnrtMDmmDRTTrsWc
pmwdwzJtFmmlpFsWwtstJPGgvNgCCLWCvPgNNPQCQv
RfbfTRBnRGQvPNnncc
ZTbPZSDSBfSBVSbbBRbbbtrFdtlFmVsswtFwzdpszw
hVphQcmdcWWprWWhChFQBsfHjDTTBCHlSsTSBgSH
vqBRqqzbqMZPMwSTDjJjlHDllgHZ
PMnMLqtMnntQhWBccthB
vqqvCSvHSSwqvqCddnvQFmNbVjbJVVmGNNVHNNlH
pggrhzWgptWhZsmVlFmgNNVNbj
RzpMLLhhphtzrRrSSbQTBQwSTDBwQM
DSFQDlDFRddDHQHQtFlDVsVMTzrMCLSWZLZffSzLWrfCJz
jjBBvpgmbppBPbMwBBBNbbZWZzzCCTzzZgzWcJccLzWz
bvPwNwmpnBNhPmqpPvnwwNmtRQGQMdQDQlsGVVGhRlGFsl
SfJJwDJgpGdSGJNSTwTVJDRbWWfLtCWCLtRLHWrtbWBf
cQQPnFhjjQlczhqllhszhqsQRWnrbrHdHtbWrBWBbtvvHBrW
qMqqqqzFFmPjmmsFjmzsmhjcDGSZTJgTdpZwZgwSZVpMTNVG
czrcHMcMJtCCPnpFmH
DwGGlvLljGmDRdwLdLjfhtFsssnFVpfttpptsnFPnp
TlRTghTjwTDRTDlZZQgWMMrMJMSZmM
BzdNzNdgNNPfgdNsdQdNvVMLLVQVMcCRCMRmvCGc
zHpplwwZrZlqlWWrpZwqlHhLvqMCRDCGVmLcqGMVvCMmMD
rWrjwWwHplZbwpZtHtJJbgfFTfsNnBbsfbSdTzgB
jPRRppDLDGDTLLggMMjpLTGcrJWHsttJfwnWrMvrJnvnrNfJ
blqbzBdzmhhbQWnsNHtJvfssfd
lhFhzSzzSZVNSlVPgDPCPCGTRcGR
cqWcNWffPftvsvfpqPtZsBzrbmbFddBmbcLbdDHbHz
TJgljTnGgnLBTZbHdBFz
JgSnJwSlgGJRwMtfPtvfwsZQZZtv
hHhPbQPTwsdwdHqtgttjpNfjDt
FFlCmSzRCCmlzzRGCFNvRpvjvtZNZqsRfNRg
mVmsFMGFzJFBwQTMnMQndd
QQVpQGcVdGmspHHLtbqfqfbt
JvZTFDFzJzhFCWCZZDzWPBCJfLbnnwLqttnsHHNPwtbHLwjn
DssTMWvvvGMcQGQGld
sshRHZSZRbSZHhBFBMpMWpFgbbtb
JfjTjmwwTPvfTNPTQlmFFFqqmFMBBqFgFt
vDTvJffQTJjJvPvTNSHRzhCsShRRRDtZHz
NFLsRDNNDNBDlgPPgBglQlzj
HJhdZpfJzlWQjjHw
ffJTppZZqTNlGnNsMG
ZMrWcWwqqvPZMndGdqlnnDLnVT
HpCsshCfpFfHHJDDSlSVQQGGflDQ
zssNzRJFhjNHNNHpJRwbwMMzWWtZPcbBbwbG
HlNHHLHsBDRpHLlsHRlJnMhfWZMRnvCCCnWhZj
wtqSmQqttzSSQdPmmwZhChJjWJjPggCZCfZJ
SSwtTbTQmbtdqmGTTcfqzDLHFsBLDGLNGrsBHFGrLB
FFDvWznMWWMrPnPnWPgsmgQbhJRslHbwHwVVsVHjBsHb
ZtSffffpdLqpSCLfCNqfLqLCjHjHbwhpBwJllHlRVQllphjj
ZcNCtcGSctZScqfNGScLNcczPJFmzmDzGzWnrWFPFWDvrM
DnTPspmTPsTCDQWRZzZzZRCRfCfHfh
BNcqTBcFgbVchVJhVR
dTwdrBrwTSPPWnnmSmsn
pfbbDbHpNBFmQbpNNBSlLtlDStSdSPJLtLJR
ZcszvwgVCZswFzVTRTlTlRLgRJSWJR
jzZvVwFjcjjnwvzwZcjMpqMpbGQbQmhhHhmfHQmh
hTbddhQCtdNmdtwtdhTBbCddRSWscczwcRSWLJzcFJzDsFsR
NflgfPZPcgSLJcWD
lPVNZMMMpZlZZvfrMvpbQHQhtbtqdTQHthrqhd
JlWSStwhWJSRJpJvJBjTwTqcwTsDjsCTCB
dqFzgFZGGQNVmTcCrjrzsBrB
fdgLFQLnPdnqShRMPhlJMpWW
TMPcsPDjdDhsDcDcTTTDvdvghBNFGGtmNrSrgSSBGNtNFg
CVCbJqlRVVWWpRqRQZRWVWJZBtmSFGNmggGmtmmBFbrGMGMt
JRqHVJVCRLZWTjMnfLTPcfLd
TRTZFTTrghrZVhVWdWZpMmbzbdzBmtDpDDzmzB
wcsSSsjfPfGPqQwqsQcfJJCtJGpppCBJzCbzJzCb
sPjflcwljfjfvqNcTZTRhtVWrNrVLnrR
rVLLsmwmCWTmsCTdwQrdTmqWDjDHjNGNPbjDBPNDNsZRDBjH
cFcSvgJvfhfLnShtMJtPHRRvRbBBGBPNBHPbND
hgLcgcLpJSMwzmrmzqQrmp

View File

@ -7,3 +7,4 @@ this repo will also include online solutions that I think are neat, indicated by
## Days
1. awk (uses features exclusive to GNU's implementation, gawk)
2. shell (completely POSIX-conforming implementation)
3. awk (POSIX-conforming)