y2024d9
This commit is contained in:
parent
0dec0bbf82
commit
99430e8e26
598
y2016/resources/6_input.txt
Normal file
598
y2016/resources/6_input.txt
Normal file
@ -0,0 +1,598 @@
|
|||||||
|
uzmnhwye
|
||||||
|
jvyyfmhr
|
||||||
|
eiwokyzj
|
||||||
|
rghqvfsx
|
||||||
|
pqjbfqey
|
||||||
|
ceqkjgny
|
||||||
|
kbpuzvof
|
||||||
|
epyeucto
|
||||||
|
bqhqvbef
|
||||||
|
tqduwleg
|
||||||
|
ysadziyj
|
||||||
|
onvxrwcl
|
||||||
|
dwbhjkmx
|
||||||
|
qvgqewkr
|
||||||
|
qazepxhd
|
||||||
|
bqtuexvi
|
||||||
|
vieyforp
|
||||||
|
kizhadeh
|
||||||
|
ofpraxry
|
||||||
|
xamrsokr
|
||||||
|
jrrottpf
|
||||||
|
gweaulph
|
||||||
|
gyctgzpo
|
||||||
|
mkddcnuk
|
||||||
|
llbxmhbt
|
||||||
|
mghoubct
|
||||||
|
arhrpksk
|
||||||
|
hzeshlue
|
||||||
|
loygkukn
|
||||||
|
asakqobo
|
||||||
|
vwvjnarb
|
||||||
|
pmqcgzkj
|
||||||
|
soucxjes
|
||||||
|
szsuqdss
|
||||||
|
hyjyxtyi
|
||||||
|
qjsjwjuf
|
||||||
|
cvkuyeit
|
||||||
|
qvlmnzih
|
||||||
|
distpoga
|
||||||
|
dtlpvlub
|
||||||
|
fszspsdu
|
||||||
|
zkpxuozx
|
||||||
|
yumhqgty
|
||||||
|
wetfiqij
|
||||||
|
ozpmcegi
|
||||||
|
ylpbjbru
|
||||||
|
rqksydxz
|
||||||
|
ifayduog
|
||||||
|
xqlhyrhl
|
||||||
|
wrolqshx
|
||||||
|
cliyrafn
|
||||||
|
jtuerdyy
|
||||||
|
damyknzr
|
||||||
|
olbtisgv
|
||||||
|
sdlvkpjg
|
||||||
|
tvfvrshv
|
||||||
|
ugywkitq
|
||||||
|
idjjqpzc
|
||||||
|
eeowwemi
|
||||||
|
npplofdm
|
||||||
|
ouzjrlph
|
||||||
|
foawnibc
|
||||||
|
xcdcepzd
|
||||||
|
irqsuacz
|
||||||
|
xtnmuzqp
|
||||||
|
sgsxsjoj
|
||||||
|
qhkpbuvq
|
||||||
|
tsvwtvtz
|
||||||
|
lgqaycod
|
||||||
|
adttxkwp
|
||||||
|
kjcyqgoc
|
||||||
|
bfkxbgxq
|
||||||
|
iiszhwbf
|
||||||
|
cgnihihb
|
||||||
|
gsgvjypz
|
||||||
|
lgcgjccw
|
||||||
|
rdkltabk
|
||||||
|
wnymgwbv
|
||||||
|
jdfqdvis
|
||||||
|
yxtuyupx
|
||||||
|
nsvafgfo
|
||||||
|
ztmbgjux
|
||||||
|
axugvumx
|
||||||
|
tstqlnye
|
||||||
|
eeyqirow
|
||||||
|
ovaityku
|
||||||
|
cdqyjdkz
|
||||||
|
vuhkumlu
|
||||||
|
rwebkmlj
|
||||||
|
prncgnbt
|
||||||
|
ftuhvnow
|
||||||
|
lhmnkhmy
|
||||||
|
unyaizoz
|
||||||
|
ezshlifw
|
||||||
|
bllzrnar
|
||||||
|
uxblibez
|
||||||
|
fpkclnns
|
||||||
|
zqocayvl
|
||||||
|
umoistgi
|
||||||
|
skmgbxls
|
||||||
|
jgtlmsux
|
||||||
|
nulmpeow
|
||||||
|
rxeyoiwy
|
||||||
|
xpqouwhq
|
||||||
|
ogepecdf
|
||||||
|
paeqseqk
|
||||||
|
auntemaj
|
||||||
|
kyorwfkl
|
||||||
|
tnvbjicg
|
||||||
|
xazuvzok
|
||||||
|
noiksasa
|
||||||
|
tvgkzpcl
|
||||||
|
jqzwlyvl
|
||||||
|
zcbzkese
|
||||||
|
notfmgol
|
||||||
|
vceqbfbg
|
||||||
|
qfeabvhv
|
||||||
|
hejfluqw
|
||||||
|
yoxvxdes
|
||||||
|
pbgiqytr
|
||||||
|
tntrwezn
|
||||||
|
duadnppa
|
||||||
|
nqnwslev
|
||||||
|
okmdpmyr
|
||||||
|
eljfthrk
|
||||||
|
fymbhtes
|
||||||
|
cdyjpcnd
|
||||||
|
qmaihzyz
|
||||||
|
cifmitdm
|
||||||
|
ksjznrxd
|
||||||
|
jdcmoqpo
|
||||||
|
caicyvmw
|
||||||
|
zhgsnmcv
|
||||||
|
idxndssh
|
||||||
|
ppykgzto
|
||||||
|
hvkjejgz
|
||||||
|
dezkqhas
|
||||||
|
ddfpqxfu
|
||||||
|
zabdhasf
|
||||||
|
qkhgknfl
|
||||||
|
gqrzmfdv
|
||||||
|
lnzrgbwm
|
||||||
|
wrytspbl
|
||||||
|
bsjzukak
|
||||||
|
kfpcoyua
|
||||||
|
zzbpiifh
|
||||||
|
ygrhxtug
|
||||||
|
zedbugkr
|
||||||
|
sienwiyq
|
||||||
|
vpophmnv
|
||||||
|
kvrgegtp
|
||||||
|
azpkkojs
|
||||||
|
jgwlwtjo
|
||||||
|
azwbmxgy
|
||||||
|
wblpgwvu
|
||||||
|
jwkustki
|
||||||
|
fmjixbct
|
||||||
|
ghkclypp
|
||||||
|
erczaojx
|
||||||
|
iqmhmlkf
|
||||||
|
yfqnajza
|
||||||
|
vhpadprc
|
||||||
|
hjicylfh
|
||||||
|
mwbavklg
|
||||||
|
txhtbhbm
|
||||||
|
pufqjjei
|
||||||
|
zazwoxia
|
||||||
|
yhzexooi
|
||||||
|
vuqtvkuv
|
||||||
|
mppianmz
|
||||||
|
tscbvqrg
|
||||||
|
hajzaamg
|
||||||
|
urqizitm
|
||||||
|
ircgrvlo
|
||||||
|
jgzcpbjo
|
||||||
|
erpiqxlw
|
||||||
|
xvnqbjqc
|
||||||
|
xauztetw
|
||||||
|
bcytezdp
|
||||||
|
sqwrbgjb
|
||||||
|
tinldoyz
|
||||||
|
rdkbfbew
|
||||||
|
kkpmcqid
|
||||||
|
fjiztfcy
|
||||||
|
ybdoeafy
|
||||||
|
burdrehw
|
||||||
|
uyredvvm
|
||||||
|
bwvobekv
|
||||||
|
fniozvjr
|
||||||
|
ifaoxink
|
||||||
|
zaoujdun
|
||||||
|
bykdovxw
|
||||||
|
wasdjrzy
|
||||||
|
uxokzwlb
|
||||||
|
votizlio
|
||||||
|
leoxtnlc
|
||||||
|
ymcesetp
|
||||||
|
mibahaht
|
||||||
|
ldgfbbar
|
||||||
|
aaegvpyn
|
||||||
|
etgdecrd
|
||||||
|
cbqerkil
|
||||||
|
myldihga
|
||||||
|
aycsmksz
|
||||||
|
sbdprnva
|
||||||
|
ytlllxsq
|
||||||
|
shxuxktj
|
||||||
|
otxymese
|
||||||
|
hygjpofa
|
||||||
|
lozdcvfn
|
||||||
|
ulrvezsj
|
||||||
|
elflfepx
|
||||||
|
xtyqbbaz
|
||||||
|
wombapna
|
||||||
|
uesqfrfo
|
||||||
|
amagopph
|
||||||
|
tdipmqwo
|
||||||
|
qlfhnwxp
|
||||||
|
qycwncct
|
||||||
|
haofnvsq
|
||||||
|
bwiyooof
|
||||||
|
fdftgidb
|
||||||
|
xzntthfa
|
||||||
|
ouzddcqt
|
||||||
|
fywssrae
|
||||||
|
ywmmvhut
|
||||||
|
gphtugjk
|
||||||
|
qxfymjuh
|
||||||
|
dbnxhxac
|
||||||
|
mvwunqfa
|
||||||
|
tfrrjcnr
|
||||||
|
lycvubak
|
||||||
|
pfxofasn
|
||||||
|
xiacctnn
|
||||||
|
vrlncgrn
|
||||||
|
wjkeqsav
|
||||||
|
vskxlpkf
|
||||||
|
iaknsppj
|
||||||
|
kzexhdzd
|
||||||
|
jesglqmn
|
||||||
|
lkqtzgzd
|
||||||
|
wnwksqbf
|
||||||
|
htqrcgyq
|
||||||
|
jjynwudx
|
||||||
|
lawnwevw
|
||||||
|
cfewlcwu
|
||||||
|
ledcrfvq
|
||||||
|
zlfpilwv
|
||||||
|
jckvhaly
|
||||||
|
xhggozqd
|
||||||
|
hrnuxzwq
|
||||||
|
ajominjf
|
||||||
|
bkoaxnil
|
||||||
|
zcjslwqq
|
||||||
|
vgexcqtl
|
||||||
|
ddfannml
|
||||||
|
ufbfceuh
|
||||||
|
vuibklnx
|
||||||
|
tmrtgqxx
|
||||||
|
izxwfael
|
||||||
|
njtzahxu
|
||||||
|
bzwyyycr
|
||||||
|
ggxoqbvo
|
||||||
|
oysvzvoi
|
||||||
|
ejxxjhjl
|
||||||
|
unwkfzyr
|
||||||
|
nwycafcu
|
||||||
|
lfqieudu
|
||||||
|
natvibge
|
||||||
|
qzrnpxew
|
||||||
|
mqjbtpmh
|
||||||
|
ixdsjywf
|
||||||
|
nmilafsn
|
||||||
|
tfwubeot
|
||||||
|
ccmrtlfs
|
||||||
|
uajfiusi
|
||||||
|
jhinkyxm
|
||||||
|
qwcvvimb
|
||||||
|
wlbhjanf
|
||||||
|
vdcedtkw
|
||||||
|
uiibfsbh
|
||||||
|
hkgxmybs
|
||||||
|
lsqlrxll
|
||||||
|
ihvodcrb
|
||||||
|
ewrfalkm
|
||||||
|
kelnqkcd
|
||||||
|
vroxnjwh
|
||||||
|
jeneowpg
|
||||||
|
ozivuper
|
||||||
|
fxatuncj
|
||||||
|
dchmobvr
|
||||||
|
oyxqiszo
|
||||||
|
uuyxgshp
|
||||||
|
sxcbjmhu
|
||||||
|
dorsqxgt
|
||||||
|
urygoghb
|
||||||
|
lolotlqh
|
||||||
|
ytaalnkv
|
||||||
|
bcspchnq
|
||||||
|
wbdululm
|
||||||
|
vzqwkjix
|
||||||
|
hinyyoag
|
||||||
|
qkyqkdit
|
||||||
|
lolhbfkp
|
||||||
|
zlwjxdoa
|
||||||
|
yudtkctc
|
||||||
|
xcvazkiu
|
||||||
|
ttvfuzxr
|
||||||
|
rqfrdkcm
|
||||||
|
rihwltdh
|
||||||
|
qcpjwsjz
|
||||||
|
bazpmmmx
|
||||||
|
grxiwhag
|
||||||
|
cbljykhx
|
||||||
|
weooldcv
|
||||||
|
lumfsfwj
|
||||||
|
kiunrfgy
|
||||||
|
fafbvyjx
|
||||||
|
acpzgmgh
|
||||||
|
pdyhmtvq
|
||||||
|
ssismufm
|
||||||
|
pdlzydrn
|
||||||
|
sxxbtkqi
|
||||||
|
gnuxwgui
|
||||||
|
wcuguqju
|
||||||
|
jkjkdkph
|
||||||
|
prpmfknq
|
||||||
|
csuabssx
|
||||||
|
khymlrkm
|
||||||
|
muavohgo
|
||||||
|
sqgzadar
|
||||||
|
svzwomsw
|
||||||
|
zfscsyyh
|
||||||
|
rhuwuqij
|
||||||
|
otxcyjya
|
||||||
|
ftecgqvj
|
||||||
|
nbdrbipz
|
||||||
|
sppapkeb
|
||||||
|
xxysrbxg
|
||||||
|
pkvvzfwx
|
||||||
|
mpadytha
|
||||||
|
iqbdgpwm
|
||||||
|
aqisvbnk
|
||||||
|
ipckdhwl
|
||||||
|
rkivzxzk
|
||||||
|
tkiykice
|
||||||
|
jmpfxvqq
|
||||||
|
shrwhvwl
|
||||||
|
uxlgxmgf
|
||||||
|
nhjjylml
|
||||||
|
ujvjqgao
|
||||||
|
yekgzrqv
|
||||||
|
ujbnxfya
|
||||||
|
pmtovthi
|
||||||
|
hsazctam
|
||||||
|
hhmesojw
|
||||||
|
vgxomjtg
|
||||||
|
ucudhxze
|
||||||
|
kzgkdvlj
|
||||||
|
vtjkjgrj
|
||||||
|
fticzjct
|
||||||
|
dwulyubi
|
||||||
|
fyfiwbkt
|
||||||
|
orcuggcq
|
||||||
|
kvxqcwfz
|
||||||
|
vvjeoumv
|
||||||
|
xsyobzop
|
||||||
|
iszghxbl
|
||||||
|
kxxvtiuf
|
||||||
|
klwsferz
|
||||||
|
emzmpfvt
|
||||||
|
gnsxgbib
|
||||||
|
nnrmtcdj
|
||||||
|
qqnfngkm
|
||||||
|
lkdxvyxe
|
||||||
|
vkeaswre
|
||||||
|
kfvpnnpd
|
||||||
|
mozumbpg
|
||||||
|
omwjojxc
|
||||||
|
sjmkijsk
|
||||||
|
fivvusjy
|
||||||
|
esmktnbm
|
||||||
|
mbkizlzq
|
||||||
|
mscagsvf
|
||||||
|
twpwpsbj
|
||||||
|
okwrcirc
|
||||||
|
hcexoyjh
|
||||||
|
tzhxxmkr
|
||||||
|
zfhzgnoe
|
||||||
|
soldpmdf
|
||||||
|
ejikyuba
|
||||||
|
cudjzzmg
|
||||||
|
xfwpcilo
|
||||||
|
vpjqpuyk
|
||||||
|
oprtpooj
|
||||||
|
djzadomw
|
||||||
|
shuqtulp
|
||||||
|
rlspstxi
|
||||||
|
gxbfmsqv
|
||||||
|
qoojsatd
|
||||||
|
rvupwphy
|
||||||
|
zfgqbrwb
|
||||||
|
ninnufxt
|
||||||
|
annvdtct
|
||||||
|
phwyfyjt
|
||||||
|
qxwfsujq
|
||||||
|
bwrbuwxs
|
||||||
|
ihwlqjbr
|
||||||
|
zylvjunv
|
||||||
|
bmmsjzxk
|
||||||
|
rvfidswe
|
||||||
|
fjgovnmk
|
||||||
|
mogllpfx
|
||||||
|
ddsefzqd
|
||||||
|
wrssovrq
|
||||||
|
yaqhesmy
|
||||||
|
cvvcswup
|
||||||
|
kpmipygw
|
||||||
|
xrjtbhze
|
||||||
|
nqucxgea
|
||||||
|
kpbbhdhz
|
||||||
|
fhdsgcdm
|
||||||
|
pmjidvmk
|
||||||
|
szbhczpa
|
||||||
|
tchjtqzu
|
||||||
|
qzorzcpu
|
||||||
|
mfnvijyy
|
||||||
|
wuutyddc
|
||||||
|
ysupoemc
|
||||||
|
dunwqmbn
|
||||||
|
mocewxzi
|
||||||
|
qiwracmo
|
||||||
|
rmbbhvud
|
||||||
|
cltnmdiy
|
||||||
|
ruutdaeo
|
||||||
|
wihpnryn
|
||||||
|
mgajpkys
|
||||||
|
iahfwmuw
|
||||||
|
vuocxwiu
|
||||||
|
mbygminp
|
||||||
|
kmkjaead
|
||||||
|
hxnztxbh
|
||||||
|
flnxmtbj
|
||||||
|
nkbrfcqg
|
||||||
|
blkvlojl
|
||||||
|
ppdielzk
|
||||||
|
ssclzhip
|
||||||
|
qvvymayo
|
||||||
|
cthwrgfx
|
||||||
|
rjqdlnep
|
||||||
|
hccjexgw
|
||||||
|
cbclqcga
|
||||||
|
cxjjdgvu
|
||||||
|
puthjawq
|
||||||
|
gvvzvjac
|
||||||
|
wtxxtwef
|
||||||
|
retdqdpn
|
||||||
|
hifhvrbd
|
||||||
|
jctkaclz
|
||||||
|
bftzisge
|
||||||
|
wofmrtss
|
||||||
|
fvojyyar
|
||||||
|
cbnhtlqp
|
||||||
|
jqozxhny
|
||||||
|
ybgsemfv
|
||||||
|
ooaqxove
|
||||||
|
gqvrbkqy
|
||||||
|
ppdcrmte
|
||||||
|
clfxucnu
|
||||||
|
toenbwtd
|
||||||
|
jzmywsup
|
||||||
|
inqsaqid
|
||||||
|
aehpaztz
|
||||||
|
gragbfrw
|
||||||
|
dlrjyzmu
|
||||||
|
sblqqwsb
|
||||||
|
gzruigwt
|
||||||
|
aplpzlui
|
||||||
|
wmrpyrjm
|
||||||
|
xyxwaeog
|
||||||
|
bhkpwzvo
|
||||||
|
egdpnujd
|
||||||
|
hbbdjlws
|
||||||
|
mbphcthb
|
||||||
|
bykhifcd
|
||||||
|
rrwkidpm
|
||||||
|
iztrhfnf
|
||||||
|
nydlpqze
|
||||||
|
dgulsfzt
|
||||||
|
eludirwj
|
||||||
|
iyvbrttp
|
||||||
|
aerocrzf
|
||||||
|
ejaearsc
|
||||||
|
dxruknqe
|
||||||
|
zmhbnkls
|
||||||
|
qnsykqvu
|
||||||
|
gotmslog
|
||||||
|
nbprjbxc
|
||||||
|
gtlykrzb
|
||||||
|
egethaib
|
||||||
|
flomperi
|
||||||
|
xcamglue
|
||||||
|
zceleqek
|
||||||
|
cnvgfdwf
|
||||||
|
dchfyogi
|
||||||
|
ygtzquvk
|
||||||
|
xxxunqji
|
||||||
|
amqehkhx
|
||||||
|
lsacrdtm
|
||||||
|
ybnapfyu
|
||||||
|
aiukmmqc
|
||||||
|
pepgjpqa
|
||||||
|
uermcxac
|
||||||
|
kapeodph
|
||||||
|
ozdanagr
|
||||||
|
pdjfzxdb
|
||||||
|
ioospvis
|
||||||
|
uhxuoyrd
|
||||||
|
jnnlwvdv
|
||||||
|
gnxaqkly
|
||||||
|
zsiucnpt
|
||||||
|
gtveajfy
|
||||||
|
tudfnxqg
|
||||||
|
pwugrcdu
|
||||||
|
obeeyadl
|
||||||
|
yhybzygs
|
||||||
|
enbwkfwn
|
||||||
|
iiziwmrj
|
||||||
|
rmldlsrp
|
||||||
|
wfqifmcn
|
||||||
|
aehofonk
|
||||||
|
bvxavoez
|
||||||
|
fwelvohr
|
||||||
|
eviaivqh
|
||||||
|
yjwslphn
|
||||||
|
wjdocdoc
|
||||||
|
dqgiuhli
|
||||||
|
geinepsk
|
||||||
|
npaemvap
|
||||||
|
ngnqfbvw
|
||||||
|
pobgwlhb
|
||||||
|
zufxdrkb
|
||||||
|
ggfdeuts
|
||||||
|
defhitoc
|
||||||
|
ndzvtils
|
||||||
|
oysmqhnq
|
||||||
|
tdmsbwqi
|
||||||
|
wwfvshad
|
||||||
|
btkerpuz
|
||||||
|
gwqvhvto
|
||||||
|
nflozwyk
|
||||||
|
tbiexdrg
|
||||||
|
okshetxm
|
||||||
|
mbgrhojh
|
||||||
|
eluzaxsb
|
||||||
|
hwqtiqwr
|
||||||
|
yrsddclj
|
||||||
|
wrsfnbdb
|
||||||
|
klfmnoqq
|
||||||
|
ztmkgmgg
|
||||||
|
xnkrekxs
|
||||||
|
qmdwfeuo
|
||||||
|
jwzfwhkv
|
||||||
|
nxjlnbiy
|
||||||
|
vdhnrrxi
|
||||||
|
smgjcxcp
|
||||||
|
aphleuvc
|
||||||
|
ljbadhdn
|
||||||
|
jkbnkinm
|
||||||
|
mjtovsxa
|
||||||
|
xpjsorxu
|
||||||
|
gicuerdc
|
||||||
|
azrhkarl
|
||||||
|
hpgwlzge
|
||||||
|
bweruitv
|
||||||
|
vnoglwep
|
||||||
|
pjwqtqdb
|
||||||
|
myvyrjye
|
||||||
|
xiqzlwfn
|
||||||
|
zqpnhjnn
|
||||||
|
hkzycpkb
|
||||||
|
fmoryqng
|
||||||
|
dfembrgo
|
||||||
|
dvguwian
|
||||||
|
rwgwffsn
|
||||||
|
ixgfpslt
|
||||||
|
rkxnxyff
|
||||||
|
ljankcms
|
||||||
|
kksozyit
|
||||||
|
cncygufc
|
||||||
|
agsevmlz
|
||||||
|
ectijrxs
|
||||||
|
rhvtaplx
|
||||||
|
hxddxhda
|
||||||
|
mpvfoaim
|
||||||
|
rtxkcevq
|
||||||
|
qythgaev
|
||||||
|
lnhqdrzc
|
20
y2016/src/bin/d6.rs
Normal file
20
y2016/src/bin/d6.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2016::days::d6;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/6_input.txt")).unwrap();
|
||||||
|
println!("{}", d6::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/6_input.txt")).unwrap();
|
||||||
|
println!("{}", d6::process_part2(&content));
|
||||||
|
}
|
73
y2016/src/days/d6.rs
Normal file
73
y2016/src/days/d6.rs
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> String {
|
||||||
|
let line_len = input.find("\n").unwrap();
|
||||||
|
let mut rows: Vec<HashMap<char, u32>> = vec![HashMap::new(); line_len];
|
||||||
|
input.lines().for_each(|line| {
|
||||||
|
for (idx, chara) in line.chars().enumerate() {
|
||||||
|
rows[idx]
|
||||||
|
.entry(chara)
|
||||||
|
.and_modify(|count| *count += 1)
|
||||||
|
.or_insert(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let mut res = String::new();
|
||||||
|
for row in rows {
|
||||||
|
let most_common = row.iter().max_by(|a, b| a.1.cmp(b.1)).unwrap().0;
|
||||||
|
res.push(*most_common);
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> String {
|
||||||
|
let line_len = input.find("\n").unwrap();
|
||||||
|
let mut rows: Vec<HashMap<char, u32>> = vec![HashMap::new(); line_len];
|
||||||
|
input.lines().for_each(|line| {
|
||||||
|
for (idx, chara) in line.chars().enumerate() {
|
||||||
|
rows[idx]
|
||||||
|
.entry(chara)
|
||||||
|
.and_modify(|count| *count += 1)
|
||||||
|
.or_insert(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let mut res = String::new();
|
||||||
|
for row in rows {
|
||||||
|
let most_common = row.iter().max_by(|a, b| b.1.cmp(a.1)).unwrap().0;
|
||||||
|
res.push(*most_common);
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "eedadn
|
||||||
|
drvtee
|
||||||
|
eandsr
|
||||||
|
raavrd
|
||||||
|
atevrs
|
||||||
|
tsrnev
|
||||||
|
sdttsa
|
||||||
|
rasrtv
|
||||||
|
nssdts
|
||||||
|
ntnada
|
||||||
|
svetve
|
||||||
|
tesnvt
|
||||||
|
vntsnd
|
||||||
|
vrdear
|
||||||
|
dvrsen
|
||||||
|
enarar";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, *"easter");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, *"advent");
|
||||||
|
}
|
||||||
|
}
|
@ -7,3 +7,5 @@ pub mod d3;
|
|||||||
pub mod d4;
|
pub mod d4;
|
||||||
|
|
||||||
pub mod d5;
|
pub mod d5;
|
||||||
|
|
||||||
|
pub mod d6;
|
||||||
|
1
y2024/resources/9_input.txt
Normal file
1
y2024/resources/9_input.txt
Normal file
File diff suppressed because one or more lines are too long
20
y2024/src/bin/d9.rs
Normal file
20
y2024/src/bin/d9.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d9;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/9_input.txt")).unwrap();
|
||||||
|
println!("{}", d9::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/9_input.txt")).unwrap();
|
||||||
|
println!("{}", d9::process_part2(&content));
|
||||||
|
}
|
129
y2024/src/days/d9.rs
Normal file
129
y2024/src/days/d9.rs
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
pub fn process_part1(input: &str) -> u64 {
|
||||||
|
let mut ids = Vec::new();
|
||||||
|
for (file_id, chunk) in input.trim_end().as_bytes().chunks(2).enumerate() {
|
||||||
|
let byte = chunk[0];
|
||||||
|
for _ in 0..(byte - 48) {
|
||||||
|
ids.push(file_id.to_string());
|
||||||
|
}
|
||||||
|
if let Some(&byte) = chunk.get(1) {
|
||||||
|
for _ in 0..(byte - 48) {
|
||||||
|
ids.push(".".into());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut ordered = Vec::new();
|
||||||
|
while !ids.is_empty() {
|
||||||
|
let id = ids.remove(0);
|
||||||
|
if id == "." {
|
||||||
|
while let Some(id) = ids.pop() {
|
||||||
|
if id != "." {
|
||||||
|
ordered.push(id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ordered.push(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut res = 0;
|
||||||
|
for (multiplier, id) in ordered.iter().enumerate() {
|
||||||
|
res += multiplier * id.parse::<usize>().unwrap();
|
||||||
|
}
|
||||||
|
res as u64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> u64 {
|
||||||
|
let mut ids = Vec::new();
|
||||||
|
for (file_id, chunk) in input.trim_end().as_bytes().chunks(2).enumerate() {
|
||||||
|
let byte = chunk[0];
|
||||||
|
ids.push((file_id.to_string(), byte - 48));
|
||||||
|
if let Some(&byte) = chunk.get(1) {
|
||||||
|
ids.push((".".into(), byte - 48));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut from_idx = ids.len() - 1;
|
||||||
|
loop {
|
||||||
|
if from_idx == 0 {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let (id, size) = ids[from_idx].clone();
|
||||||
|
if id == *"." {
|
||||||
|
from_idx -= 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let to_idx = if let Some(idx) = ids.iter().position(|id| id.1 >= size && id.0 == ".") {
|
||||||
|
idx
|
||||||
|
} else {
|
||||||
|
from_idx -= 1;
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
if from_idx < to_idx {
|
||||||
|
from_idx -= 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let free_space = ids[to_idx].1;
|
||||||
|
match size.cmp(&free_space) {
|
||||||
|
std::cmp::Ordering::Less => {
|
||||||
|
let remaining_free_space = free_space - size;
|
||||||
|
ids[to_idx].1 = remaining_free_space;
|
||||||
|
ids[from_idx] = (".".to_string(), size);
|
||||||
|
ids.insert(to_idx, (id.clone(), size));
|
||||||
|
from_idx -= 1;
|
||||||
|
}
|
||||||
|
std::cmp::Ordering::Equal => {
|
||||||
|
ids[to_idx] = (id.clone(), size);
|
||||||
|
ids[from_idx] = (".".to_string(), size);
|
||||||
|
from_idx -= 1;
|
||||||
|
}
|
||||||
|
std::cmp::Ordering::Greater => {
|
||||||
|
from_idx -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut res = 0;
|
||||||
|
let mut multiplier = 0;
|
||||||
|
for (id, size) in ids.into_iter() {
|
||||||
|
if id == *"." {
|
||||||
|
multiplier += size as usize;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for _idx in 0..size as usize {
|
||||||
|
res += multiplier * id.parse::<usize>().unwrap();
|
||||||
|
multiplier += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res as u64
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT_1: &str = "12345";
|
||||||
|
const INPUT_2: &str = "2333133121414131402";
|
||||||
|
const INPUT_3: &str = "23331331214141314020202";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_simple() {
|
||||||
|
let result = process_part1(INPUT_1);
|
||||||
|
assert_eq!(result, 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_complex_1() {
|
||||||
|
let result = process_part1(INPUT_2);
|
||||||
|
assert_eq!(result, 1928);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_complex_2() {
|
||||||
|
let result = process_part1(INPUT_3);
|
||||||
|
assert_eq!(result, 2842);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT_2);
|
||||||
|
assert_eq!(result, 2858)
|
||||||
|
}
|
||||||
|
}
|
@ -1,15 +1,9 @@
|
|||||||
pub mod d1;
|
pub mod d1;
|
||||||
|
|
||||||
pub mod d2;
|
pub mod d2;
|
||||||
|
|
||||||
pub mod d3;
|
pub mod d3;
|
||||||
|
|
||||||
pub mod d4;
|
pub mod d4;
|
||||||
|
|
||||||
pub mod d5;
|
pub mod d5;
|
||||||
|
|
||||||
pub mod d6;
|
pub mod d6;
|
||||||
|
|
||||||
pub mod d7;
|
pub mod d7;
|
||||||
|
|
||||||
pub mod d8;
|
pub mod d8;
|
||||||
|
pub mod d9;
|
||||||
|
Loading…
Reference in New Issue
Block a user