This commit is contained in:
JISAUAY committed 2024-12-02 09:58:35 -06:00
commit ca9736d8ec
122 files changed
+28514

No files matched your search

+1000
View File
@@ -0,0 +1,1000 @@
ninefourone1
53sevenvvqm
kscpjfdxp895foureightckjjl1
72fivebt9ndgq
28gtbkszmrtmnineoneightmx
four66jqrbtqcsxjtqjvfjhl1
four8pzznjbhxlhtz6bhtzdxjlg1
rgxjrsldrfmzq25szhbldzqhrhbjpkbjlsevenseven
slkjvk4threesevenznjqmmfive
61ppgrkmkfhteightone
1threesix67px
sxbjdbtlnjrmlzgxneightthreepmqxdxhfk8jfrheightwovp
twofour2sevenk
sevenonezknqnkfqbzffjvfivetwo94two
45xj
mp7one6eightvhfnmfive6
fhtctftxm3threefour2b
2dq7bdmhhs92
pdnbqlbvtcxgpnfhmsfhzstgm173
8fourvxkddsrlcvseveneight
15zqpmsix77hlljgfive
jzjv6seven
eight1vbfive
721sixsdzbqtskbpkqbcmgmlpk5psrhr
pqxdxcx5
twozsf2five
7twosixthree775
7xtxrch7six
729twofourlqrxtwo
qtvbgtclhnk4ninefourseven5one
jvhngkcdjhnmqghdbqdzqssf5onegzjbbcchboneightn
five8two14five2nine1
one3twomddthree
8nine9two
7fiveeight9ninesix6fivethree
254kcd61dc4two
7sixonetxvthntlngtwobzkbz23
8sixnine6
threedqtgmv2skmvcd
7ptdhpvr1
lsvmzvzvd9mqxszjmbddkmxzdxsninedmglzlzphtwo
kgdt12seven4xxtttr5
nrdtgdftjmfour6fxjninenineblqlthvpcx
ninezmstcdfchc11onebmmfdfhvdncrhc
1fiveseven
oneone26twoeight
threefivenine98one9twotbbcq
9cm7ninestc
jcrbmcjtrlzvz7
nine8nine22
3nineoneseveneight
58four2three
stwonefourthree9twonine4six5bvxgkxf
ninechzcz4seven
2tgzgmtzzpjdqqz
brsptjppb28qxcxxjbzpeighteight
eightthree3ninejrft4
sixqsgkzdjmgpfive4threemxltqdxsfive
vxfd2q8
khqhgqlxslkmbrvljcnineeight1gjgcqmnbdczqb8four
mvbltrgpfourcclxftbb7gcbqcptvgfsevenrdm
61eight
six8fourthree6fourseven6three
jqdfxvhjg3sflkn2sixptxxsqrfml
6jtxs
seven99threeone
five6sevensmbbrjqvdbmkbsqtwonelg
fdvfsndt32fourgllgfrninebhnzzczfive
9hxp9srhjhjjvqljhzprcjpqreightzs1
djldhkkcn55threethreefourflnxnbzhkzmx
fourfive43chfvjnvjrkpxlgjrfnqbl
fxjgtj4
1sevenfour2fiveeight
seven43rxxeightb1
9sevensnxkp3lpzxfxnntkxzkrhk7jzhmtvn6
25one
threeone7
1pkfvsxxthreeoneseven
ztbvfqnpz2xdhgdjmgvfourtworqbxqsh47
8four7sixninesix
threedgl88cczqhqxjnc
nineeightthree4sixfive3sixdqlmscqjk
16crjsdl
tgq2sixhc7three
tzgsqspndt5xnqlthghzfvkkhone
4fxdqrs64ninex34gd
seven22
kghfkrpvnppfncbhhqpt55bjf
hjhb71bqdrrgsrkqdtsgrxgsscqjmtfzjkzsbp
lgdnt9threeeighteight97
pvjhnk83sixncvgmsjltwotdmmpxknhvntfndxr
7449
qdfzv9hkprplzkfh
66three5five4zdsfrcnljqmsxf2
veightwo27bdbsvseveneightrcqcjxsixeight
1thvkkk
8bnxqfsdhzppblzlzbkfsksfscmb
zseventbdzlmhnnrfive1one
sixxnmntrmp6srcsqbrqnjfiveeightfive
4trnzlshnjtwo5twocxrvfssbj
6two3twonetqt
55qsnx43
3three23tpctbkrnqv
sixqk4cnfdmtltmlhqxtwo41glkhdhgnt
35fivesevenpfournxzsbbgzthjvlvzrnine
tworkzgkcvcone53nrvgdvgtc
two9llkjbkz8pklrsgqqzr2four
ninecgpbgcnine4tldjqsone4six
2tfjhtfourfour
onebhlhdvvqx1sevenmsixsix9
pjgjt6jkrgshxltfnine8four45
4vsqfljrfiveqeightnvbdb
11nfslqvhm
7crrhqxsfive8ctkzbhqnine
vrvtglvthreettrkq5bdlrtpx718
1btbxlthreedtrzgeightnineqczhqm3
193
fcbzxqxxjtmn47ffschdrbeight
twoh1gqkrnm1
7ninesixpzpsn7
5kkvzpgqd
three6nine
32fdn
22twoxgvktxpxmbjqtgtbckx
1hdtftwosix
2jfc
six5nvzcgmrscjn5eight4
nineqhtczsninetwosix4five
9three6sj
hntktlbqmldrphqzxkhfour193
twotwo5259
v7six1vtlxnpm
rhsm2
gprmtxbhlsv8onefournine
2fsrbtdvft15six1kxpqbnqsxh9
one5onemxthree8
nineqbxdbznzktxsmstsntzffour3one
9blhkhjsgsfgsblzdtqqfour8
stz4889563cb
vjrbs6threeptbbmncz7hqhqgfgldtseven5
vbfs1
zjqgczjsjpvzvjseven4
sixfjzbrrhcfqvglxhnsxninedrvtvjbfqjdbrzblkq6three
one3threegcdldjsrsssixonefiveonechngsl
7srxv4hsgjqsqfvv1tdngkpjrczkl4
5scgdglnjbnsix8fivesixtjccvmkfxfnzvhctgpncjc
4eightfivefive1lgscbj7kpcr1
eightknfssevenfive6jnpklczrpfeightwol
37qccxllhzshninebvpc8
1eightmmcthkhf
seven8fourqn7tbgqnmzcc1
sixsevenone4
clhdvjnqnine9threesix
onetwoeight9
81z3threenjsdhnqxvtwonezv
9hqtsb
onekgnlbthreeg3
eightspnrpjb65fivevzfpvjntbg7drbgjccneight
ninerdlsix7285
fournineninefive3vbnhmhdvjgdqcm
njzspqxpxrone7four55
nfdhlqcpvzrrtsmzhgq3
fourmfdtnpsfbxkjtgtgx5sixrppsqplqdjvnsixdtqvtdm
21onesix6sixnine2
fffsmvtt8fivenineglrqrmktzzseven
fivefoursevencjxmskrqclz2
lgk27threefourfsqrbkntbkfourvflgrzhh9
617hj9
ninegcxninetwohpfdxrb3tjjjtxtnvtwo
one1gnftc8onehtsxsmg
foneight3fsbhdqzr5twojbsdnntwohd9seven
zkzpfvcxqnbvrg1
nine36cddqfvrf
rdjlpfk2pschfsdrpz
nine994three8six
three3nvflpftf2eight4
3nine2
rxxjdk5354
hf4eight8qjtcfldnkvtwofivetwothree
7six3twodhnvmxj1nine
57seven3six6
qklbvzfhclfnllhhgeight8xtvld
5fgzqhkssmkcfour1
hhvjkdnlffnineeighttwo18twonecs
sevenbfzrgfm1six1
nine71cskklxvcbnxtskdbqnpgklrxklcgccxjnssksrlkx
hmklhhjdthree77
3vpxclbgkpone3ninesrclfive
djfqkgjvqpfvdsix5sixtwoeightsix
eightlt7csvgxpnslk
sevenfoureightnld2mxtgpbzpthree1
11sevenglfmsb6
onetjjnxvssg1four4drxbxpnpv24
2zdxs9mfnbgfmjln1threefive
one186ltsbck
6fsbpb9sixhc
nine818
xzqcpcdprsqjbgknkvztwo419q
39qfdlcnkhg31
9djnlcrxqxhrcb8mczrxrm
nmb887525seven
jhmv3
zhvdbn1fivem8seven4sixoneighttsn
6zmmjqmnftclqbcthree
6cpzeight92
onepqfhtsevencvlfvnczhb91mmtdprqxmcnine1
tvqdfxn8eight
five6fivercgrpbtjgv87jmcndclbk2six
jgtmrbvl68lpqkpxddqqxvsixfivesix
nine2nlffgkvmp
1frdnhssftg4eightgclxsgqtn
2sixblr94six
94mlfv
6vlqtcsmdd47hpfmlc7fiveeight2
tklxghxv5bzc4hhcdcpmnine8
four6one1zzgqghvs412
xghjpblsfpg19ntpfmcfd
471rbdblzs
69fourhjxkvd7fourfour
jmrscfqdfppfdjskpk61
five5eightnqpd9ninezknztwo
onelknchr7nrfprgmqzp
svxlxrx9892five2
3ntkbzzpxhdmrsix8ttgp
ndh7zlnrzpvmnine
one7xlnbmjjmfv62qvqjpfprbvjkpcnine
99three5
threetwotwo7dhtgtbchc7sixtwo
tmfxxph3eightgdccscdsrkmnhbb75
joneight4one5
nine3six
81tqzsqpkv99
sixvjlq7
five7bkc
five3811threelfpzztxzk
1fourkkpclqc3
xgrpbmktcthree46g
bgcp4two8
jtgeightwo7nine
bkmcrcq3eightrdtvrbglmxmmztqm
7tscmg5one2jhhbfb1
zt5khcrgqjg5nxxzxzd
five85
twothree1
eightsixthreetwo6b3tnjmcqdjfive
onefrlg7
fivescbjxbdnvslqqsone5bdbvskpmksqmmfsncsmd
two83fourthreefourseventhree
dglrmbtkfltwofive8ninelzmrxvxoneeight
8nine6sixsixtwo7
sevennine4lbsevenkdnrhpltn
h3fiveeight4cplrnd
vhsgjbqm3ninedfhfsb
93nine7jvjmlzgcztrqlxtwo
zhhhdddbbgcssvfzdhmpone5fivefournine
l9fourvjfbqpdslkmvxsdrnsgcvzpjxm
kxlseven5two
rbtwonegsdgvsjtpnnkone7mdz
phffknvthree2threeqgvfqxgnine7
2lgglnmthreeseven27three81
lrgkrxx2
seventwokxvzkvq6eightthree
5fiveseven
fstwonersngdlngx28nine
49oneninesix8four2q
hfvhzvmjgbfcbsevenrmhjhzkc3
six84
8eight2gzblldzvkjfive
6fz3eightzmsqb4qsbbsnthm
fcglpc2one51
sevendqghclrpxt7pzone48two
three5one
5sevenfivebbzkjlcnxseven8fourmzqlxxgjvc
xgg8one6782
gggtljnnsix3lkhdqzzpdtdkmjtgjddkpgx4five
qrmsfc13onevnhlbgs
nrtwonethreerbbqffzh62
5eight81gcdbrx3rlk
mtdtxcmm2bgmqhgqrtxsn8
onercx2
9sixoneqgr4
xmoneightfour2
six85foursixninetwo
ninetwo8four8six
qchclfzq47
khrll3two21
seveneightnine8868four
3rmbmtbxjp12seven
3tsxgvqxmzvxbdvxtgrvdbzqbh
eight7fourjtxx
fmb4one7threekbxeightwoj
vcsevensixseven577
2dkhlrrtrnbgzrmxm5fiveclhgn1eight
1sevenlmrbnfour17seven
three5jtbvkseightoneseven4df
fourrgqxplbpbxtsgkm7
fourqdfxchlc371sc2
fqxlmeighttwo1seven
zvvlftlhfthreesix6three46qkstxvdt
m74pjgccfour1four
plphq933eighteight
cdbqlhbhj3eight
4onevgdkxhz799five9fbljhpqmvk
two6qzgphxl
two1eight
onekxxghlonerqqlrs83threehvvdhsxmfour
npmsvvrdl2673
fivejthseightsixtwo9vgrvjzbzsrxjv
eight2gqfive7mzjzpxqcvheightjfx
1bxckdpt
dngoneightbtdptfn85
fourtwovfzgmxjseven935
8onesix2drgjnlrxbtdlmlznine5
five4mmpmqlttsx56ljdzldntdvthree
1nxxgtwothree22twothreenine
38eightsevennxctjfstp
8fourvhnps3onellstpnztn6kvjccmv
1bseven93eightfour
5nphkdbhxqb2pqxtkvhxq
nvvx6fourjgkdsczjv
fourxrmq78
8tjmnvthree3ninetwo2five
p7cvtwoneq
7thbggjbznrsixonethreeninej
xdgm1crqfnklk
onehmqqgh4ninenthjonegfjmvtfgd
sevenbsqtlk9
8seven9two9hdz29
fbcjhzdgzdg8jgjvcrmgbcrsixnine
3bssqrj44onedqxvhkfive1
tmmxtz5dtxbbcjlfivesix
pvfqzksgrs4khmlvtwoeightlsx
psbttsmnpninefour42fivegsixfive
sevenfiveqscr7dfxpninesix5
xmsjddzfxftsjfq6four6eight6three
seven42
eighteight1nineeight9
8c
pmqljjjzvx5znxqnsfour8
78zlpxnvsqpgmgmk
four7fsgttnrgnlslr
fourtwo3jg2
qlz18three5lpxfjvnfppqjxh
4fiveonetthree4eight
7lzffxkxnzjrtr
three7nineone46ksnshqgdpt
8dntxkkkgdxggvhxh2onefour5gqzsqkm
tjsixonedbklrxxk2twonxdpjzb8
mfglbrjrq93
seven37xhsrxrvcgninexbmdrzxthreeonethree
fivegznvfztszqlhtrsslsmqq43212
tdthjjjbkeighteightsevenpcbmpfq2
five1eightq
three13three4vrsrrtp
cgztjgqgdths2
dhxztfvlonetwokszrv8prdpm2
dfkcklchjj8twonine52ppvndfcnf6
three7ninenkxfourfive
93sixlqxctdhmvssixone
oneqbvfrvteightnineninefivethree9
jskrtmvsrqnpvcgsmxbonecmlrjpdpc4three
crpcfour54xxgzz
9fivefhdpcqsd
fivenineclfctjninefbsh2
fivexhrzbqpfxl8sixtwoeightllzplcpllk
zxgl5qneightsevenone
sixpdc17thxfive
1twolftpzbmnzvdlkvlsevenhdvgfrjhmthreethreeddkdvht
67twotwo71
oneeightcgnhtdxpfnsevenoneeight13
eightthreervd5tnj17
ssrsmhxrsixeight3gbqggcvfqg29
6fivecvcdxnxhxxtlzthree
fournrrsix595
p2qchlvplzdvchkbdzzbnsix7ninefour
fourthreefourtzvlrnr9m94seven
4jxzkrfourvtjpsnrllkjcczmmqnsj4q1two
4627qlpscgpjcnine539
two6nineeight
63five66fivethree1
skndgzsbsntwoone1
threerzgdxgtthree2three
953lsdgn59
27bk
sixmfmbslpjjsixsvnqrvtxznffive5
2ninenlgpggxm42six234
fdzfvkjnchsevenfivethreetscllgjvrtqckfnmz3cszmt4
7ninetlzsxjsl2nine3
shsvptqngsevencjjthvfm9six5four
7lsrq36threevzfjc62
two59threedxmfourjfschvqvnine
khfqjmksxhbvs8sevenhzrmjtkgm
nine2stgflmsm8fkthhhjzlszdnmkmqpnjxrfc4
twofourthree244nine
eightvt978
fivefiveninesixnine6513
2lbtz19fourtshqsvblhrkhxbpfour
ptt7bntxhdvl
mskflsslvdlmndmmqmfourtczqlssnineseven5xxxkfvzd
l329eightsevenfourfivethree
rmlksxsixspp9fourhlcg
8five9q
hqoneightsix19nine6xmjbtgjzgrhmlrxq
six38
9eight2
3sixbzhgfcg57sixsixjtqmknd
9fchn58
vrpftbnvonefour6
vqgdtrvhnnxxsevenseven9eight
56vnine5rdpsnlqcbq7three
vncrjds2cmrg7
213sixfivesix
tzclpzdsthree4sxgjvrzcrzcndnfour
4sixseven1three7
8fbrggzmtqn8
four79p
twonineqonemfour3dq
5fdgpmrghtksn5onesixtwo
xseightwongqqsxtwo8jslclldvnb
nine1one
9gxjrfourvhqzcxdhrtpxgtwonine
eighthfhtnvchtc7fjkrxsmhtm7rbk
thqxcfjbksix32xqrgqsqtx
6qjqql
jgcreight7eight
6onesix4threeseven
5vcv1twoeight7
fivesthreebvjntwo9jdxghmxvl
632msc9threenineqfone
dqxfourkb4eight
6stsp3nine
566sevenpdmg
xprjdn55
9mjtcmhjb
twoninelkjznqztbc3twolnhjhdbfxmhfr
twotczpxn6qlcfdlpnq
4ninefive
1rs44three2gzczjdgq7ssmtgjbgbb
ggmzqbkgsix4five23bftjlmbfbd
threehfcscmmlqvcjtpthree98
7sixsixone4
2fivefvrr9four4three
1zt1seven
9hsbthqvhhsnineone23tslqccg
sixbqvd3
22148four3
ninejlpbtnfive41rtzqjgfmcbncrrlnn
9sixfour
qnhfivetwofjtqtlxd7lmrlfctq864
69dqrzhlqssgcsxtz54cpmjvrkcfiveseven
fiveqpv85frkmpgxgc
xxqsscldeightone9ngqtkf1nine
5sixgxbnnjsvhf5dgxgone7
sixsevensqghlvkfxnfour7
8gmgvjbfivesevennine
qj796fourone9
rmpfsppvzdtwo4threetwotwo9
dqvtrhm3nhtrxxccmfiveonedfzfvcghr
4threejxkhnxcxjoneightp
sevenhkpfgdgsgnvseven3m
qhrvjcnfdbqchrsvchcxfourbkhhq9six1eight
29pqnd
1oneonethree627
5977rcr2threeeight1
fournthpqbztrhnine64
fjnjpgqxr86five4sixxhrtvbp2two
7sdnvlb5two
58vffgzcgx4nineoneeight3
h1sjgqbhndbz1oneqgncmhnleightwos
gjms21
onetwodphfznine51
gxpl3fourzfz3
five46
mqsixccffmc9gqk1
5kvxpqrrpeightthree
threefoursevenfive2dhtbrxlzzl
shhczssbltllsmntntlqfqgnnl98rm
5oneeight3vkqtwo29
bv69fouronefourone6
eight6five966
4xnrtztgfgcmnmnsevensix
gmsvtnjd1sevennine4xxhqfbrjjqbglqjngttc
mdnxhhteightfive5onenineninegqjbqmfd
xonefourtwo4
onesix61
sjmnjhkj2892eightnine9
nzseven39
99nnjjzdrfsnjhthree1sevenfive
6xmggtbnblnbxdpkzblnvcvjqmhvntwoeightseven
76five6six
chdfjrlfhdzeight778
xrvrck9five1hrvpfvkdcb7eightnine
foureighttq5sgdfourl2
4rnbxrhhboneonefournine
5four3
1b97eight
hlcjghlhsf32tgknm565knxqr
onecqgbgdcmlb2sixsix6nine
kxdkz3
seven5xvhrxdm
xblqbgkqgsixvgrthreezxnzhknklxhbmgl4
fvnkc7threethreeseven
bmbqxv24jhdg
97rfphlxvtx
4pgblonelone
ptdpllrddeight3
9knpjzskrfd4
twomjqdtbbvmj4shvsqrone3
9zzh3pjsf6mhxlhm9glglfztjm
cfconeight47fivetdsmndgvsmbqjvszb
21vbqjz374
sixeightqgfdjbhfd4oneeightone
tbccqdpz78srmcdx4six2
643gqtvhkljxt
klfjf4qms
zrnhkhqzpczzfqsgsrtxklpbtp72
1cnqfltrmhphg832three
twoseven5
mxkmxlcgsixklclrkfr8638fourlrqpzgjq
nkbfkh452pthree
zvcktvd2485four88
rfxj4
three6jnr7
two45rldjnmxkjphtwo7v
fivelncjffdnkzqrshvthreeh3p
ninejgrbmhrbqldeightnine6nine8one
96lvpt2djrkc5
7seveneightthcxgthreeseven5hpfddktpj
6bvn
sixbjxtphstzgspnmkcvc952one
gmmslrndvltlthree394sevenoneightl
threenine7onefourtwojxhzvqlseveneight
5eightsix4txcczzmg
84seven
skjpkhxggsvjbprhllgjhninetwo6
72bdpzccvone4zbdzlllnnonernlfvdpq
bvrtmzmtwonine29
mrlvmdnlxb2814five5fjxzlhpn
lmrpf82rksix611
tvq18oneqnmmzvtclnthree
jrbjc1zbbpqbrddt26seven1
lxfivenmdtnhdmf98ptpxsgmgrxkmmznlk
zbmvchmxsevenddddthree2dxlddjp4
three3onejg2fqgtjmpcgeighteight
three2two9seightfjqtwo
ninefive8sevenvnssix
3cnbxxtgmf5
kpmjcsfrjfgzhmbpnqmlvrhbhqs8
3vvcone64
fvqksdsixthreexbfivetwo3
sevenseven5
63twoone8vhbcpmmlfive1
4ctwo17eightsixkpvlgpj1
rsgsnone1
kbvxonemcqfive3eightone
ninenineone45threepvsmrtonejxmbnd
37fklnjkslqk9th9
fiveoneq8rcgdxtwo8jfkxq6
rgd7
7rgkdpvp7qrb
7crtxfmslxxtcxsv
mqdnltb23fiveqcdqtonethree
8seven7
8cqhqlhndqjznqhdbld2nspnxbj99tqqhp
onelqn7
bvbjfour7
ldqzhvhrbgsrrkh5j
kjsjxdcqgjztldjvxxgr9twoxfknxrrrphkdzdl8
rvscnztblp56ljqtwompclcf
2dbtdgsevenhzctckvkvxvjljz
tvmhhxbbxvvsnlnineqsltjd92one
9twoqdmtvbxhpcthreeeight
81dvnkd87xbct
6mnxqnndcjfivefdckzmppfsevenmqvvvbnrgs
lvl3qjk5
3fivefive
ktvsqzrf14eightmtnqbcktk5
sevencdknznbxseventwo8rzggmvpbvlrs
hkhhrdxlml1xzbshninejzqc
eightseven23shkgzdgvvcxxfdv5
14five1sevenxfmhtptwo3seven
47one
2three3
f5dszzs2
xmxffxkxpkninethree8x6seven
glzoneighteightrnjqgjznjm9
63fznqxdfqt8
33nine
4vrbmthreefbdzf
fourninethreesixnine9fourlvbgqhjbqncnlbjbz
two848dbvbninenine17
pqzqgone1two
eight7lmxbhcsix
szr2fcvkljctlghhthree
sk81pxqhhhhvnjvgzfiveseven
cgqqkrz2vpdpzrthqssg7nineeight
498eightfournine
eight85onesvxnineone53
ninevmchpkcg2
six2shsvqfivefourtwo
mdzckfvr72cv
twotwo7onethreefourdjtgjg
tworfclmm3
5sfvnkrmrptsix7four6kzlmclm
1onedkqgzbr89kphvc8
5seventhree8eight9eight
kvjpgjgrcmpdscbfthreethree4mjqjnnzceightwohh
kjbmh1fdkdtznmsznvlconeznineseven
1fmgpxhxpqznqscvbszhhcmglvtnzhbbjjbzg
1mfqzkfnine5
rrflkqslxztdlqxqkdnhqd7ps
39123thhsmscbpxr
8vnine4jgqrvqtshg3jhhdnbsrxneight4
xkqgnfour87
lsbnjqtzqz7ninenineone73lmkbnkhs
9fiveqqgqblfivehttxk
8twotwognd
4xknbheightfour6358
4cqtpfjpf72eight3
ninemjpqpqg8foureightsevenfcvpnrnnpzhcgkm
37twofivedsxrzbpchnkgxqx
oneone57one2k92
mckoneight9threefour1onefourhdrcrvhqcmngkjnsthree
945
tmmtwo7
57
6twoxzbfftnr27
threenine4bqpztsixfour
84eight
3jpbnjrqhqfnxckqkqdvls
9gzzjzz
374nine
ninembxeight4sevent
threecq3
cvn6cvqmpmfflkzphndjnggtktwosn
pgz7four5nineeightsixqrnfkdkgh
6one781vstwothreef
one617fourthreefourxqxnpv
8eightsqmkjkkf5xckcvd4lfnnfour
seven23qhntfmg56onexkjxh
f5s56rfltx282
twosixninefive1tlzq
threetdhghclfsksql5oneninetwoseven
zbqzxmpb9pxlrthree
r4gxdzjnvzfonejnpmfcpgvxjjvkh8
five338threejkk67seven
twolntxcnzvfr55sixtwofivesevennine
xhlppbqfr71brvppsixthreefddlgpfslqmdv
kxsklgonefjfpkd4threefive9six4
6srphqmtdoneh3glthreefour8
rjzdmj1cqvxnx1nvcvbfctft9
3fqjdgbpggthreesix53
9fivesndgmkvckblktzkshglqgdl4ztwoseven
qqrxkqhnzb23two34nine9
8hrmffgstqpsixeightx1six
jngcsjnrhn2zsvcjmjg
9zfdmhzxdnfour272dcrqgk
lbjbrfhjxhxjphzxsjsix4
fourthree2seven1two
twosix87
vrlqqkctddggcvcjcpk6hxbqvbxmtsix
mrcgbpc6dthzqmmthreefour6two
r2zntjxgpfqfmqh
fourseven3
6nfnsgchjdffttmgfnbvlxzoneseven8
8sevenqqfiveseven5twojvgk
4rmtkvml4
bprnine85
sevenmfpcvlblcnine485fourseven4
sevenseventhree68fivelhqgjqvcdqkvds
3fourxsgghqnvtssnvfs7nine7
1fiveone5hpfdgvxb
eight2eight42twotwoonenine
lpdeightxcgpxkkeighthtjpsninemjlxrxtg31
4smqpjzsixonethree
mr6csbmgrdrjj3onelqd4four1
5sixvbscchd3
384sps
4qzgsvmfx4ninevcclvcfrfp6tckcpvj5s
8l5glclltgcjgbhcg6
3ldtdmjc6threeone
hsrtzl521nine5qqrtpdsp
z4v8threejdsmbfjpbj
9sixln26eightwovmh
848
kndxtqpfrqxdxtfnqrqznpgvp9ninerlzcdvdtwo84
kmqs84775seven
5threefourzkg
43five8cq2kprvdqrmxr1
three4ttjqdh
48nine7sixfive
22x
sixrgtwo3rnbzkrztkdkg
4t
29bjpskmxneightppvthree
zmlzxvtlkt4seveneightbxseven
5two5eightnpszzmbkncnstx4
9vk98sevenhznkxmlrlk7vdbqgvfjdk
1sixb8sjkvdhfld
one42eight4mrsdnpfjpvdtq
76fourntsrfllxkdfqvm6seven
skqndhr3nm4776
4xpmfxmvj633eight
83ninecmpt
fourdthree9
9eightjqnnmthcrseven
7threekgtf1
xscj7threenmhsixseven5s3
cqlzjt41
855threemlmmqkgtfk
ninefzmvjjtvbmgf8nineninetwonegcn
ccpkzcldfourkdtfkjxvfb9fourhbtwonsoneightnl
pkeightwo5seven88rdnzzsdkbjeight9
threen2fjsfivesix26nine
nine4rz8nine7bglpcmkqfzpseven
eight94six8dpgrv
twodfctf278
fltqtmdkgjsvf72three
llrtzsixsix4fivetwosixone
qjhtjqjhgkjkzlpxxclsrdnzk1gbqt
sixeight1sixtwo
one5413nkmqjtlbdkz22
bhtwoneonemzpzkqeighttwooneqkmcmsbq4
sevensix3three2sixprcqcvm
25tjffdrtwohfqlkhzxlhb
97gcgqgjnpsthfjfdv636jsxq
zggjmjone1297six8drzs
jbpvnineeightntkkshbjvr3nshnqzdlkjmkfive
5four2gkkbxmpthreefour6
5two15sixfivetzpg
one4fouronemfpvnqseven
9fnlbljdnzzfournine78
djfljccrtvvqktzzvk61onesd
7twohbkeight
seven1eighttwothreet
4mdcljknhpqgxffqpj5
nine9jlsmfgdgntwothreeeight4
136nh
635ninejghg5
cmone7fdlk9lfivemzvnhkcsp
8eightnlndm
6fourpb892
fiveseventwosixfourthree7
5fm
ninegchdnrf63431
24sgnflnsixninenine8
snm9
3fntd721dhhkrqqxsfpstsvzpgonetkhcr
jlzfbml61vdmgb7one
266517
7fivetwo2vhchmg678nine
cgrp3vzn5ninetwofour
666ninefour
9s
svpcnlktpxtvk42jhsvvdpftxpsk
2qznfzvbdr
foneb7eightfivehlbjjknninethree
kfp6
l34pxxhxtd7d
rsbcrtwo27twocqlmeight
jkzgvqgpjfdqvmjfx2flnvjmgllxghhrbjjkfour2
45sevengdnf59twofive
6fivespvkblrxvkcgdxktl
three9dvrssvl5eight4ftsix
seven56gdmlbfbjsl894sevencmc
814
1one4
onenine5fivekcrf1gvvfhlncsv
2ctvq9djzddfxcrj
ntdlcqgsixvmfvlc4fourvlhtvvqmnmkrm
9nineseven1seven
lcvzbnfourksvjqvmv47one5
nine4blvlvlpkl6
sixnqxrhnztzvpmbzmxjm19five
18jtzhk
rzrhv8four
2npghxvjonebchsprfhsjznrxvxnine
eightngsevencrjkxbhpgtxlzhgb46sevenqhqmlfx
threesffl9fivelgmndjfvseven92
seven85
87six9vnshclz
threetwo7915three
one2vkbp6rhqbxvcl7
bsbr1five91
qd3mnine
jjvhltxtdh5nineone6
mbxlnj7bbhnxonejtmtqjfrzqgtrhkeightnine
fourfourqrxdtfive2smnqp
7tvjrszvrhdl5five
four15tvmpvxpvdjnine
sevenvv5tworpvdlseven3dlqvgblqtwo
nkckggninegnlqlnv25threexlhlbzvzk
3vngmhprjseventhreeeightnine
nvqtpzsszrdvttfivenine56oneseven8
146
fxfbone59
f32dhffctkxp6rcngvtfq
sixthreefsixjhckmjqfive495
42four
65nine984
5fthreeone9twoqqsfvzmp
ttwonefive4
one6gfxseightxqcq6
3sixnrjtwormrncmhxeight
jhdxnmsgsdsevensqsslbsndpdmznmldbgeight3tcvjjv4
5sixtvpckxzcjzbmrzk9
pmdmnfgkb3six8xsmstsmxgmm
53onetvlgbglq4zbqpdgsskzdsksd6
kzjcllvz6skphkfdxfiveqrbhmk
75qqjdgxlmfthreevzbfjdlxkfqqq
seveneightjntpjthzptwo2two
2five4fvrfxxnine4qzkkfkmq
2xlvcltn7
fnmggtj2rqxzh7three
rzpjkgtml1
2oneseven4one7xps6
rljfhfrhmzkjxktnszbkpfspxdkqneight2
pzgnine49six2
plxsqeight2
eight2sevenseveneight8rfcrsdlxb
sevenclpqqfxgjnmtwo9
9sevenrqsixone8eightrxqgfsbjh
kqtkstrxhtfzbllhl4lqvqkcbr
hfplfpbltczflpp7nfive8
ninenvqfrvtwo6onel
threev65
frhn18six9sixninefourrsqzgd
mcxckfg5vpkbs89gbninexjzvlj
fivesixdx28
7ppbqv
hs9twopcvpgtjnrsvksskpc8
9mlpckzj2twothreefive
rkrgdclkninetwo6eighttwodc25
tfivefourtwohkhhgsqlj1dtdcxmxkf
1four6five
fgbvmvxvtsix2twonine2sixfour
foureight66
s6fourcv
mxl358sixfive8six8
ztbtwo73sixvxsix9four
eight7qmdlcxfive5
phgfivekrjxdmnzsqsix9
1mfqsevenhz
rjhcdgzngtc155bqlttbsxklpknvlmk
qjkdqlrrs6two
sxlmqzxdpxdnj9fivetwo9seven5
2qtdblb2
8qgdzrsixtwo598oneightp
1shdb944
vrlpronek2
jm52
8eightfourseven11mvtrmtkr2bmp
mnvnjxrgmrxhztwo2ssrdpqk
ztfive435three6threetwo
tnrrdnbgnbhzljdxhxxfrqkcpeight8js3
foursix6zcsrztvgjxmp
five7fourgnnkspxcmczcbgsbdf77five
fgbrzkmvgrdbqjqndpfive81onetwomtzlfb
2qbsfd1two3ninetwo2
8tdjxvfpvdvone33three
lpchnmln56twofive8tfour
cfkfbhppjf6fourdkfxsvdtbcjspzlseven8
5fivestgkzsevenonedkhhrkthree
37nine8six8onefhvvbkmgdfgtv
26hzz
5glvnsztmnfjmkjseventdm4five
pvnnqrqvftrbcvnnthreenine5
mgscxxlp3eight
53eighteight
two1oneqlcdkbddfour
jbll3
8threeseven5tmtrgdhqxd
8twonine6s1
91seven5pmqrjlhqrtzs
jj3sevensix4482
jeightwo7lk4three
zchchxmsctzffivefournine9sqhqkgfour
72xct1
vnsxvsqkhpfvgdseven23gzcmltzgone
xzjqhcvsix1fivecjtxnfivekmvjdc
zdfourgjlhtwo24d5klkpdgqbz
7sdzzdbrxbtonerjcmknnql4dfzqccvqt
tncqzxjq9twofiveqkxdrxrpj894six
dddmkctrzlpfmsszeight8zvbpmpkg
three23ckjhgjc
375jzdhnfcfr19mhsbnplqh
vpbbjlzone5sevenseven33four
onejzfsevenrbskjq1four
seven13one
vcnkfgv979one6zln
rqlxzzbmjb4lmbthreektqsdcfzbmdsfivethreenrxdlkqt
qkoneight8
5rfourfivenine94fdprsix
onexonelzdh2lcbqpzq6
six6v
7gtgxqnnine
tsljzhntwo3fourpbjncgmvf3fflvjxp
vfkdone9fivecftvmjdk
xc5three6eight94
18363one7
8fiveksshdlfmzhljhcmjrn7kpv5j
xbhmxfhbjnjzmninethree7
2933mkmdqjcl
6ncvzqxfvgfive
lnine5fivetb4qmfktnqjxs
93187
5mqninedzkfhbk
two7eightntdbsix298four
sixone3bspxqxggkmkrbcqrhfrxrlgjrlvfl96
fourfivehqls3nine
threedfklszn2threeqzhh7one
mqmftzglone6kjpgglznhrjz89
146cvkftscqsevensixnine
nndhdgpd484hxdgjtfsdxxg9
6mbzckbjphg
eight6jbjtnld2mdjtd
zjtzcqxb736five
jlkdmone8
gvjnjvmlfvcmvnfb8xcgjcmjqvz1bzcctvsixfzqjlhfkfk6
vr6onejnjmrrldnsixsix5six
ninembtmtkgbctlfive45cjzzrmgcscfbcgeight
2mdvneightjzgffivefive4
hmdnbxghxjxt4czshmsfzc
61six18threehrcj
six3five6eightkdfzhxcjkdhq3
jrhqrqkpd4hsixdsbjdpscclmnnhknqq16
jflzcxr3three
threefourghvgsktkc93cmjmsgh8one6
96fivesevenslklhsfmpz
jgkpgfnnbq2pmspdfhsqxfour
g4fourthreerpkdhjhlxlzvnineseven
xkxhkphnkvpdnlncn86srxthree
7sixsevenrfour
5zr72qltsrbdsv
ninervqzdfzqmf6five
8jslpvs73
ztvlxndlm5twohdhmtrdnhbzdrxb
seven6nine4dpdpvrtrmqvql
jfz1
5nineeight5onefivecxtqbsdtbthreefour
fourgeight6threeszgseventwo9
sixfour3
npl8
tzjkffsvbjseven5rhmlxonezlx
5dhtpfour
twothreebxtfndvdnine1sixbb9
five9nineqlzrmtgs5
9v764nineeight
five4eightlsix6
3nineeight21
foureight8btsc
3xgdgtb2
7threetwonexqk
kkqsix48onefourhlsh8
onekgtdzgfh2fivenine2onerb
six4zgcnlhmltrxp5xphvtwo9
eight7cdqggpssix
niner9pzmrbqldkljmgphrrgmdjseven6
439
twofoursixrthree5bxppnhqtx
bmpnt3
fivepkzkzpghrptpksevenseven83two1
9fiveone8one
fiveseven3lqxghdlskbltrzrstwo
fournine3ninephlghonetwoeightbvmdcconeightq
three2pvklmzqjfh4sixonedrctlsfdfour
three91spjlscscjcxbbpdhrg37
57qqjpdfppsix1qxrh5mlmncf
4nfone5eight
eightqsix7one
4jtvxfd38hnrmqkbnvfxpp
qmfsspkfour1plmslcrsseventhree
fzckcbfvxbpsix7nine
fzrj4
4threeqntnineqstzjftnine
tkrh6sixdqflrvtmzmfiveseven9ktmtvprkxhfour
nine4983four
mpllmjrfgv66five3kvhthplrtwo7nkklb
9ngvdjddqbz
5twosix8lbhmzrg
eightsbmcfgm76two4hhc6
seventwosevenrpm6threeeightwodxs
xkbseventwotwogmkxhpmhm42hvvbfchreight
gcqeightwosix8xdlhrnnbkmsevenqdbrjghz
458ninextfjxvgsq5fltdsk6
rlgsflhxqd5bdbhclmrthree
twothreemqqbzjn88blvqxbseven
rqrrdrmlfsixfive6
eight959tzxkgqjd
txdszrn5eight3cqeight1brqr
45122
jvvslnkdk6qnfzjzvseight55eight
4twoeightgrhhkrvtkrzpfive7seven
three8gsmkpzsmfvf2
fiveeight5sevenone9twoseven
4seightjjdkdglspz3vg
sevenssrzkspld2
qnzcvcthrsgjlnzxmxlppjdpnine8seven7
eight7xhvkrcr
two2tdjdfbqtqxrs119r
+41
View File
@@ -0,0 +1,41 @@
use std::fs;
fn main()
{
let file_path: &str = "./input.text";
let contents = fs::read_to_string(file_path)
.unwrap();
let mut sum:i32 = 0;
for line in contents.lines()
{
println!("{line}");
let mut first: u32 = 10;
let mut last: u32 = 0;
for character in line.chars()
{
if character.is_ascii_digit()
{
let value = character.to_digit(10).unwrap();
if first == 10
{
first = value;
}
last = value;
}
}
let result = first.to_string() + &last.to_string();
println!("Sum of line {result}.");
sum += result.parse::<i32>().unwrap();
}
println!("Sum: {sum}");
}
+4
View File
@@ -0,0 +1,4 @@
1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet
+1000
View File
@@ -0,0 +1,1000 @@
ninefourone1
53sevenvvqm
kscpjfdxp895foureightckjjl1
72fivebt9ndgq
28gtbkszmrtmnineoneightmx
four66jqrbtqcsxjtqjvfjhl1
four8pzznjbhxlhtz6bhtzdxjlg1
rgxjrsldrfmzq25szhbldzqhrhbjpkbjlsevenseven
slkjvk4threesevenznjqmmfive
61ppgrkmkfhteightone
1threesix67px
sxbjdbtlnjrmlzgxneightthreepmqxdxhfk8jfrheightwovp
twofour2sevenk
sevenonezknqnkfqbzffjvfivetwo94two
45xj
mp7one6eightvhfnmfive6
fhtctftxm3threefour2b
2dq7bdmhhs92
pdnbqlbvtcxgpnfhmsfhzstgm173
8fourvxkddsrlcvseveneight
15zqpmsix77hlljgfive
jzjv6seven
eight1vbfive
721sixsdzbqtskbpkqbcmgmlpk5psrhr
pqxdxcx5
twozsf2five
7twosixthree775
7xtxrch7six
729twofourlqrxtwo
qtvbgtclhnk4ninefourseven5one
jvhngkcdjhnmqghdbqdzqssf5onegzjbbcchboneightn
five8two14five2nine1
one3twomddthree
8nine9two
7fiveeight9ninesix6fivethree
254kcd61dc4two
7sixonetxvthntlngtwobzkbz23
8sixnine6
threedqtgmv2skmvcd
7ptdhpvr1
lsvmzvzvd9mqxszjmbddkmxzdxsninedmglzlzphtwo
kgdt12seven4xxtttr5
nrdtgdftjmfour6fxjninenineblqlthvpcx
ninezmstcdfchc11onebmmfdfhvdncrhc
1fiveseven
oneone26twoeight
threefivenine98one9twotbbcq
9cm7ninestc
jcrbmcjtrlzvz7
nine8nine22
3nineoneseveneight
58four2three
stwonefourthree9twonine4six5bvxgkxf
ninechzcz4seven
2tgzgmtzzpjdqqz
brsptjppb28qxcxxjbzpeighteight
eightthree3ninejrft4
sixqsgkzdjmgpfive4threemxltqdxsfive
vxfd2q8
khqhgqlxslkmbrvljcnineeight1gjgcqmnbdczqb8four
mvbltrgpfourcclxftbb7gcbqcptvgfsevenrdm
61eight
six8fourthree6fourseven6three
jqdfxvhjg3sflkn2sixptxxsqrfml
6jtxs
seven99threeone
five6sevensmbbrjqvdbmkbsqtwonelg
fdvfsndt32fourgllgfrninebhnzzczfive
9hxp9srhjhjjvqljhzprcjpqreightzs1
djldhkkcn55threethreefourflnxnbzhkzmx
fourfive43chfvjnvjrkpxlgjrfnqbl
fxjgtj4
1sevenfour2fiveeight
seven43rxxeightb1
9sevensnxkp3lpzxfxnntkxzkrhk7jzhmtvn6
25one
threeone7
1pkfvsxxthreeoneseven
ztbvfqnpz2xdhgdjmgvfourtworqbxqsh47
8four7sixninesix
threedgl88cczqhqxjnc
nineeightthree4sixfive3sixdqlmscqjk
16crjsdl
tgq2sixhc7three
tzgsqspndt5xnqlthghzfvkkhone
4fxdqrs64ninex34gd
seven22
kghfkrpvnppfncbhhqpt55bjf
hjhb71bqdrrgsrkqdtsgrxgsscqjmtfzjkzsbp
lgdnt9threeeighteight97
pvjhnk83sixncvgmsjltwotdmmpxknhvntfndxr
7449
qdfzv9hkprplzkfh
66three5five4zdsfrcnljqmsxf2
veightwo27bdbsvseveneightrcqcjxsixeight
1thvkkk
8bnxqfsdhzppblzlzbkfsksfscmb
zseventbdzlmhnnrfive1one
sixxnmntrmp6srcsqbrqnjfiveeightfive
4trnzlshnjtwo5twocxrvfssbj
6two3twonetqt
55qsnx43
3three23tpctbkrnqv
sixqk4cnfdmtltmlhqxtwo41glkhdhgnt
35fivesevenpfournxzsbbgzthjvlvzrnine
tworkzgkcvcone53nrvgdvgtc
two9llkjbkz8pklrsgqqzr2four
ninecgpbgcnine4tldjqsone4six
2tfjhtfourfour
onebhlhdvvqx1sevenmsixsix9
pjgjt6jkrgshxltfnine8four45
4vsqfljrfiveqeightnvbdb
11nfslqvhm
7crrhqxsfive8ctkzbhqnine
vrvtglvthreettrkq5bdlrtpx718
1btbxlthreedtrzgeightnineqczhqm3
193
fcbzxqxxjtmn47ffschdrbeight
twoh1gqkrnm1
7ninesixpzpsn7
5kkvzpgqd
three6nine
32fdn
22twoxgvktxpxmbjqtgtbckx
1hdtftwosix
2jfc
six5nvzcgmrscjn5eight4
nineqhtczsninetwosix4five
9three6sj
hntktlbqmldrphqzxkhfour193
twotwo5259
v7six1vtlxnpm
rhsm2
gprmtxbhlsv8onefournine
2fsrbtdvft15six1kxpqbnqsxh9
one5onemxthree8
nineqbxdbznzktxsmstsntzffour3one
9blhkhjsgsfgsblzdtqqfour8
stz4889563cb
vjrbs6threeptbbmncz7hqhqgfgldtseven5
vbfs1
zjqgczjsjpvzvjseven4
sixfjzbrrhcfqvglxhnsxninedrvtvjbfqjdbrzblkq6three
one3threegcdldjsrsssixonefiveonechngsl
7srxv4hsgjqsqfvv1tdngkpjrczkl4
5scgdglnjbnsix8fivesixtjccvmkfxfnzvhctgpncjc
4eightfivefive1lgscbj7kpcr1
eightknfssevenfive6jnpklczrpfeightwol
37qccxllhzshninebvpc8
1eightmmcthkhf
seven8fourqn7tbgqnmzcc1
sixsevenone4
clhdvjnqnine9threesix
onetwoeight9
81z3threenjsdhnqxvtwonezv
9hqtsb
onekgnlbthreeg3
eightspnrpjb65fivevzfpvjntbg7drbgjccneight
ninerdlsix7285
fournineninefive3vbnhmhdvjgdqcm
njzspqxpxrone7four55
nfdhlqcpvzrrtsmzhgq3
fourmfdtnpsfbxkjtgtgx5sixrppsqplqdjvnsixdtqvtdm
21onesix6sixnine2
fffsmvtt8fivenineglrqrmktzzseven
fivefoursevencjxmskrqclz2
lgk27threefourfsqrbkntbkfourvflgrzhh9
617hj9
ninegcxninetwohpfdxrb3tjjjtxtnvtwo
one1gnftc8onehtsxsmg
foneight3fsbhdqzr5twojbsdnntwohd9seven
zkzpfvcxqnbvrg1
nine36cddqfvrf
rdjlpfk2pschfsdrpz
nine994three8six
three3nvflpftf2eight4
3nine2
rxxjdk5354
hf4eight8qjtcfldnkvtwofivetwothree
7six3twodhnvmxj1nine
57seven3six6
qklbvzfhclfnllhhgeight8xtvld
5fgzqhkssmkcfour1
hhvjkdnlffnineeighttwo18twonecs
sevenbfzrgfm1six1
nine71cskklxvcbnxtskdbqnpgklrxklcgccxjnssksrlkx
hmklhhjdthree77
3vpxclbgkpone3ninesrclfive
djfqkgjvqpfvdsix5sixtwoeightsix
eightlt7csvgxpnslk
sevenfoureightnld2mxtgpbzpthree1
11sevenglfmsb6
onetjjnxvssg1four4drxbxpnpv24
2zdxs9mfnbgfmjln1threefive
one186ltsbck
6fsbpb9sixhc
nine818
xzqcpcdprsqjbgknkvztwo419q
39qfdlcnkhg31
9djnlcrxqxhrcb8mczrxrm
nmb887525seven
jhmv3
zhvdbn1fivem8seven4sixoneighttsn
6zmmjqmnftclqbcthree
6cpzeight92
onepqfhtsevencvlfvnczhb91mmtdprqxmcnine1
tvqdfxn8eight
five6fivercgrpbtjgv87jmcndclbk2six
jgtmrbvl68lpqkpxddqqxvsixfivesix
nine2nlffgkvmp
1frdnhssftg4eightgclxsgqtn
2sixblr94six
94mlfv
6vlqtcsmdd47hpfmlc7fiveeight2
tklxghxv5bzc4hhcdcpmnine8
four6one1zzgqghvs412
xghjpblsfpg19ntpfmcfd
471rbdblzs
69fourhjxkvd7fourfour
jmrscfqdfppfdjskpk61
five5eightnqpd9ninezknztwo
onelknchr7nrfprgmqzp
svxlxrx9892five2
3ntkbzzpxhdmrsix8ttgp
ndh7zlnrzpvmnine
one7xlnbmjjmfv62qvqjpfprbvjkpcnine
99three5
threetwotwo7dhtgtbchc7sixtwo
tmfxxph3eightgdccscdsrkmnhbb75
joneight4one5
nine3six
81tqzsqpkv99
sixvjlq7
five7bkc
five3811threelfpzztxzk
1fourkkpclqc3
xgrpbmktcthree46g
bgcp4two8
jtgeightwo7nine
bkmcrcq3eightrdtvrbglmxmmztqm
7tscmg5one2jhhbfb1
zt5khcrgqjg5nxxzxzd
five85
twothree1
eightsixthreetwo6b3tnjmcqdjfive
onefrlg7
fivescbjxbdnvslqqsone5bdbvskpmksqmmfsncsmd
two83fourthreefourseventhree
dglrmbtkfltwofive8ninelzmrxvxoneeight
8nine6sixsixtwo7
sevennine4lbsevenkdnrhpltn
h3fiveeight4cplrnd
vhsgjbqm3ninedfhfsb
93nine7jvjmlzgcztrqlxtwo
zhhhdddbbgcssvfzdhmpone5fivefournine
l9fourvjfbqpdslkmvxsdrnsgcvzpjxm
kxlseven5two
rbtwonegsdgvsjtpnnkone7mdz
phffknvthree2threeqgvfqxgnine7
2lgglnmthreeseven27three81
lrgkrxx2
seventwokxvzkvq6eightthree
5fiveseven
fstwonersngdlngx28nine
49oneninesix8four2q
hfvhzvmjgbfcbsevenrmhjhzkc3
six84
8eight2gzblldzvkjfive
6fz3eightzmsqb4qsbbsnthm
fcglpc2one51
sevendqghclrpxt7pzone48two
three5one
5sevenfivebbzkjlcnxseven8fourmzqlxxgjvc
xgg8one6782
gggtljnnsix3lkhdqzzpdtdkmjtgjddkpgx4five
qrmsfc13onevnhlbgs
nrtwonethreerbbqffzh62
5eight81gcdbrx3rlk
mtdtxcmm2bgmqhgqrtxsn8
onercx2
9sixoneqgr4
xmoneightfour2
six85foursixninetwo
ninetwo8four8six
qchclfzq47
khrll3two21
seveneightnine8868four
3rmbmtbxjp12seven
3tsxgvqxmzvxbdvxtgrvdbzqbh
eight7fourjtxx
fmb4one7threekbxeightwoj
vcsevensixseven577
2dkhlrrtrnbgzrmxm5fiveclhgn1eight
1sevenlmrbnfour17seven
three5jtbvkseightoneseven4df
fourrgqxplbpbxtsgkm7
fourqdfxchlc371sc2
fqxlmeighttwo1seven
zvvlftlhfthreesix6three46qkstxvdt
m74pjgccfour1four
plphq933eighteight
cdbqlhbhj3eight
4onevgdkxhz799five9fbljhpqmvk
two6qzgphxl
two1eight
onekxxghlonerqqlrs83threehvvdhsxmfour
npmsvvrdl2673
fivejthseightsixtwo9vgrvjzbzsrxjv
eight2gqfive7mzjzpxqcvheightjfx
1bxckdpt
dngoneightbtdptfn85
fourtwovfzgmxjseven935
8onesix2drgjnlrxbtdlmlznine5
five4mmpmqlttsx56ljdzldntdvthree
1nxxgtwothree22twothreenine
38eightsevennxctjfstp
8fourvhnps3onellstpnztn6kvjccmv
1bseven93eightfour
5nphkdbhxqb2pqxtkvhxq
nvvx6fourjgkdsczjv
fourxrmq78
8tjmnvthree3ninetwo2five
p7cvtwoneq
7thbggjbznrsixonethreeninej
xdgm1crqfnklk
onehmqqgh4ninenthjonegfjmvtfgd
sevenbsqtlk9
8seven9two9hdz29
fbcjhzdgzdg8jgjvcrmgbcrsixnine
3bssqrj44onedqxvhkfive1
tmmxtz5dtxbbcjlfivesix
pvfqzksgrs4khmlvtwoeightlsx
psbttsmnpninefour42fivegsixfive
sevenfiveqscr7dfxpninesix5
xmsjddzfxftsjfq6four6eight6three
seven42
eighteight1nineeight9
8c
pmqljjjzvx5znxqnsfour8
78zlpxnvsqpgmgmk
four7fsgttnrgnlslr
fourtwo3jg2
qlz18three5lpxfjvnfppqjxh
4fiveonetthree4eight
7lzffxkxnzjrtr
three7nineone46ksnshqgdpt
8dntxkkkgdxggvhxh2onefour5gqzsqkm
tjsixonedbklrxxk2twonxdpjzb8
mfglbrjrq93
seven37xhsrxrvcgninexbmdrzxthreeonethree
fivegznvfztszqlhtrsslsmqq43212
tdthjjjbkeighteightsevenpcbmpfq2
five1eightq
three13three4vrsrrtp
cgztjgqgdths2
dhxztfvlonetwokszrv8prdpm2
dfkcklchjj8twonine52ppvndfcnf6
three7ninenkxfourfive
93sixlqxctdhmvssixone
oneqbvfrvteightnineninefivethree9
jskrtmvsrqnpvcgsmxbonecmlrjpdpc4three
crpcfour54xxgzz
9fivefhdpcqsd
fivenineclfctjninefbsh2
fivexhrzbqpfxl8sixtwoeightllzplcpllk
zxgl5qneightsevenone
sixpdc17thxfive
1twolftpzbmnzvdlkvlsevenhdvgfrjhmthreethreeddkdvht
67twotwo71
oneeightcgnhtdxpfnsevenoneeight13
eightthreervd5tnj17
ssrsmhxrsixeight3gbqggcvfqg29
6fivecvcdxnxhxxtlzthree
fournrrsix595
p2qchlvplzdvchkbdzzbnsix7ninefour
fourthreefourtzvlrnr9m94seven
4jxzkrfourvtjpsnrllkjcczmmqnsj4q1two
4627qlpscgpjcnine539
two6nineeight
63five66fivethree1
skndgzsbsntwoone1
threerzgdxgtthree2three
953lsdgn59
27bk
sixmfmbslpjjsixsvnqrvtxznffive5
2ninenlgpggxm42six234
fdzfvkjnchsevenfivethreetscllgjvrtqckfnmz3cszmt4
7ninetlzsxjsl2nine3
shsvptqngsevencjjthvfm9six5four
7lsrq36threevzfjc62
two59threedxmfourjfschvqvnine
khfqjmksxhbvs8sevenhzrmjtkgm
nine2stgflmsm8fkthhhjzlszdnmkmqpnjxrfc4
twofourthree244nine
eightvt978
fivefiveninesixnine6513
2lbtz19fourtshqsvblhrkhxbpfour
ptt7bntxhdvl
mskflsslvdlmndmmqmfourtczqlssnineseven5xxxkfvzd
l329eightsevenfourfivethree
rmlksxsixspp9fourhlcg
8five9q
hqoneightsix19nine6xmjbtgjzgrhmlrxq
six38
9eight2
3sixbzhgfcg57sixsixjtqmknd
9fchn58
vrpftbnvonefour6
vqgdtrvhnnxxsevenseven9eight
56vnine5rdpsnlqcbq7three
vncrjds2cmrg7
213sixfivesix
tzclpzdsthree4sxgjvrzcrzcndnfour
4sixseven1three7
8fbrggzmtqn8
four79p
twonineqonemfour3dq
5fdgpmrghtksn5onesixtwo
xseightwongqqsxtwo8jslclldvnb
nine1one
9gxjrfourvhqzcxdhrtpxgtwonine
eighthfhtnvchtc7fjkrxsmhtm7rbk
thqxcfjbksix32xqrgqsqtx
6qjqql
jgcreight7eight
6onesix4threeseven
5vcv1twoeight7
fivesthreebvjntwo9jdxghmxvl
632msc9threenineqfone
dqxfourkb4eight
6stsp3nine
566sevenpdmg
xprjdn55
9mjtcmhjb
twoninelkjznqztbc3twolnhjhdbfxmhfr
twotczpxn6qlcfdlpnq
4ninefive
1rs44three2gzczjdgq7ssmtgjbgbb
ggmzqbkgsix4five23bftjlmbfbd
threehfcscmmlqvcjtpthree98
7sixsixone4
2fivefvrr9four4three
1zt1seven
9hsbthqvhhsnineone23tslqccg
sixbqvd3
22148four3
ninejlpbtnfive41rtzqjgfmcbncrrlnn
9sixfour
qnhfivetwofjtqtlxd7lmrlfctq864
69dqrzhlqssgcsxtz54cpmjvrkcfiveseven
fiveqpv85frkmpgxgc
xxqsscldeightone9ngqtkf1nine
5sixgxbnnjsvhf5dgxgone7
sixsevensqghlvkfxnfour7
8gmgvjbfivesevennine
qj796fourone9
rmpfsppvzdtwo4threetwotwo9
dqvtrhm3nhtrxxccmfiveonedfzfvcghr
4threejxkhnxcxjoneightp
sevenhkpfgdgsgnvseven3m
qhrvjcnfdbqchrsvchcxfourbkhhq9six1eight
29pqnd
1oneonethree627
5977rcr2threeeight1
fournthpqbztrhnine64
fjnjpgqxr86five4sixxhrtvbp2two
7sdnvlb5two
58vffgzcgx4nineoneeight3
h1sjgqbhndbz1oneqgncmhnleightwos
gjms21
onetwodphfznine51
gxpl3fourzfz3
five46
mqsixccffmc9gqk1
5kvxpqrrpeightthree
threefoursevenfive2dhtbrxlzzl
shhczssbltllsmntntlqfqgnnl98rm
5oneeight3vkqtwo29
bv69fouronefourone6
eight6five966
4xnrtztgfgcmnmnsevensix
gmsvtnjd1sevennine4xxhqfbrjjqbglqjngttc
mdnxhhteightfive5onenineninegqjbqmfd
xonefourtwo4
onesix61
sjmnjhkj2892eightnine9
nzseven39
99nnjjzdrfsnjhthree1sevenfive
6xmggtbnblnbxdpkzblnvcvjqmhvntwoeightseven
76five6six
chdfjrlfhdzeight778
xrvrck9five1hrvpfvkdcb7eightnine
foureighttq5sgdfourl2
4rnbxrhhboneonefournine
5four3
1b97eight
hlcjghlhsf32tgknm565knxqr
onecqgbgdcmlb2sixsix6nine
kxdkz3
seven5xvhrxdm
xblqbgkqgsixvgrthreezxnzhknklxhbmgl4
fvnkc7threethreeseven
bmbqxv24jhdg
97rfphlxvtx
4pgblonelone
ptdpllrddeight3
9knpjzskrfd4
twomjqdtbbvmj4shvsqrone3
9zzh3pjsf6mhxlhm9glglfztjm
cfconeight47fivetdsmndgvsmbqjvszb
21vbqjz374
sixeightqgfdjbhfd4oneeightone
tbccqdpz78srmcdx4six2
643gqtvhkljxt
klfjf4qms
zrnhkhqzpczzfqsgsrtxklpbtp72
1cnqfltrmhphg832three
twoseven5
mxkmxlcgsixklclrkfr8638fourlrqpzgjq
nkbfkh452pthree
zvcktvd2485four88
rfxj4
three6jnr7
two45rldjnmxkjphtwo7v
fivelncjffdnkzqrshvthreeh3p
ninejgrbmhrbqldeightnine6nine8one
96lvpt2djrkc5
7seveneightthcxgthreeseven5hpfddktpj
6bvn
sixbjxtphstzgspnmkcvc952one
gmmslrndvltlthree394sevenoneightl
threenine7onefourtwojxhzvqlseveneight
5eightsix4txcczzmg
84seven
skjpkhxggsvjbprhllgjhninetwo6
72bdpzccvone4zbdzlllnnonernlfvdpq
bvrtmzmtwonine29
mrlvmdnlxb2814five5fjxzlhpn
lmrpf82rksix611
tvq18oneqnmmzvtclnthree
jrbjc1zbbpqbrddt26seven1
lxfivenmdtnhdmf98ptpxsgmgrxkmmznlk
zbmvchmxsevenddddthree2dxlddjp4
three3onejg2fqgtjmpcgeighteight
three2two9seightfjqtwo
ninefive8sevenvnssix
3cnbxxtgmf5
kpmjcsfrjfgzhmbpnqmlvrhbhqs8
3vvcone64
fvqksdsixthreexbfivetwo3
sevenseven5
63twoone8vhbcpmmlfive1
4ctwo17eightsixkpvlgpj1
rsgsnone1
kbvxonemcqfive3eightone
ninenineone45threepvsmrtonejxmbnd
37fklnjkslqk9th9
fiveoneq8rcgdxtwo8jfkxq6
rgd7
7rgkdpvp7qrb
7crtxfmslxxtcxsv
mqdnltb23fiveqcdqtonethree
8seven7
8cqhqlhndqjznqhdbld2nspnxbj99tqqhp
onelqn7
bvbjfour7
ldqzhvhrbgsrrkh5j
kjsjxdcqgjztldjvxxgr9twoxfknxrrrphkdzdl8
rvscnztblp56ljqtwompclcf
2dbtdgsevenhzctckvkvxvjljz
tvmhhxbbxvvsnlnineqsltjd92one
9twoqdmtvbxhpcthreeeight
81dvnkd87xbct
6mnxqnndcjfivefdckzmppfsevenmqvvvbnrgs
lvl3qjk5
3fivefive
ktvsqzrf14eightmtnqbcktk5
sevencdknznbxseventwo8rzggmvpbvlrs
hkhhrdxlml1xzbshninejzqc
eightseven23shkgzdgvvcxxfdv5
14five1sevenxfmhtptwo3seven
47one
2three3
f5dszzs2
xmxffxkxpkninethree8x6seven
glzoneighteightrnjqgjznjm9
63fznqxdfqt8
33nine
4vrbmthreefbdzf
fourninethreesixnine9fourlvbgqhjbqncnlbjbz
two848dbvbninenine17
pqzqgone1two
eight7lmxbhcsix
szr2fcvkljctlghhthree
sk81pxqhhhhvnjvgzfiveseven
cgqqkrz2vpdpzrthqssg7nineeight
498eightfournine
eight85onesvxnineone53
ninevmchpkcg2
six2shsvqfivefourtwo
mdzckfvr72cv
twotwo7onethreefourdjtgjg
tworfclmm3
5sfvnkrmrptsix7four6kzlmclm
1onedkqgzbr89kphvc8
5seventhree8eight9eight
kvjpgjgrcmpdscbfthreethree4mjqjnnzceightwohh
kjbmh1fdkdtznmsznvlconeznineseven
1fmgpxhxpqznqscvbszhhcmglvtnzhbbjjbzg
1mfqzkfnine5
rrflkqslxztdlqxqkdnhqd7ps
39123thhsmscbpxr
8vnine4jgqrvqtshg3jhhdnbsrxneight4
xkqgnfour87
lsbnjqtzqz7ninenineone73lmkbnkhs
9fiveqqgqblfivehttxk
8twotwognd
4xknbheightfour6358
4cqtpfjpf72eight3
ninemjpqpqg8foureightsevenfcvpnrnnpzhcgkm
37twofivedsxrzbpchnkgxqx
oneone57one2k92
mckoneight9threefour1onefourhdrcrvhqcmngkjnsthree
945
tmmtwo7
57
6twoxzbfftnr27
threenine4bqpztsixfour
84eight
3jpbnjrqhqfnxckqkqdvls
9gzzjzz
374nine
ninembxeight4sevent
threecq3
cvn6cvqmpmfflkzphndjnggtktwosn
pgz7four5nineeightsixqrnfkdkgh
6one781vstwothreef
one617fourthreefourxqxnpv
8eightsqmkjkkf5xckcvd4lfnnfour
seven23qhntfmg56onexkjxh
f5s56rfltx282
twosixninefive1tlzq
threetdhghclfsksql5oneninetwoseven
zbqzxmpb9pxlrthree
r4gxdzjnvzfonejnpmfcpgvxjjvkh8
five338threejkk67seven
twolntxcnzvfr55sixtwofivesevennine
xhlppbqfr71brvppsixthreefddlgpfslqmdv
kxsklgonefjfpkd4threefive9six4
6srphqmtdoneh3glthreefour8
rjzdmj1cqvxnx1nvcvbfctft9
3fqjdgbpggthreesix53
9fivesndgmkvckblktzkshglqgdl4ztwoseven
qqrxkqhnzb23two34nine9
8hrmffgstqpsixeightx1six
jngcsjnrhn2zsvcjmjg
9zfdmhzxdnfour272dcrqgk
lbjbrfhjxhxjphzxsjsix4
fourthree2seven1two
twosix87
vrlqqkctddggcvcjcpk6hxbqvbxmtsix
mrcgbpc6dthzqmmthreefour6two
r2zntjxgpfqfmqh
fourseven3
6nfnsgchjdffttmgfnbvlxzoneseven8
8sevenqqfiveseven5twojvgk
4rmtkvml4
bprnine85
sevenmfpcvlblcnine485fourseven4
sevenseventhree68fivelhqgjqvcdqkvds
3fourxsgghqnvtssnvfs7nine7
1fiveone5hpfdgvxb
eight2eight42twotwoonenine
lpdeightxcgpxkkeighthtjpsninemjlxrxtg31
4smqpjzsixonethree
mr6csbmgrdrjj3onelqd4four1
5sixvbscchd3
384sps
4qzgsvmfx4ninevcclvcfrfp6tckcpvj5s
8l5glclltgcjgbhcg6
3ldtdmjc6threeone
hsrtzl521nine5qqrtpdsp
z4v8threejdsmbfjpbj
9sixln26eightwovmh
848
kndxtqpfrqxdxtfnqrqznpgvp9ninerlzcdvdtwo84
kmqs84775seven
5threefourzkg
43five8cq2kprvdqrmxr1
three4ttjqdh
48nine7sixfive
22x
sixrgtwo3rnbzkrztkdkg
4t
29bjpskmxneightppvthree
zmlzxvtlkt4seveneightbxseven
5two5eightnpszzmbkncnstx4
9vk98sevenhznkxmlrlk7vdbqgvfjdk
1sixb8sjkvdhfld
one42eight4mrsdnpfjpvdtq
76fourntsrfllxkdfqvm6seven
skqndhr3nm4776
4xpmfxmvj633eight
83ninecmpt
fourdthree9
9eightjqnnmthcrseven
7threekgtf1
xscj7threenmhsixseven5s3
cqlzjt41
855threemlmmqkgtfk
ninefzmvjjtvbmgf8nineninetwonegcn
ccpkzcldfourkdtfkjxvfb9fourhbtwonsoneightnl
pkeightwo5seven88rdnzzsdkbjeight9
threen2fjsfivesix26nine
nine4rz8nine7bglpcmkqfzpseven
eight94six8dpgrv
twodfctf278
fltqtmdkgjsvf72three
llrtzsixsix4fivetwosixone
qjhtjqjhgkjkzlpxxclsrdnzk1gbqt
sixeight1sixtwo
one5413nkmqjtlbdkz22
bhtwoneonemzpzkqeighttwooneqkmcmsbq4
sevensix3three2sixprcqcvm
25tjffdrtwohfqlkhzxlhb
97gcgqgjnpsthfjfdv636jsxq
zggjmjone1297six8drzs
jbpvnineeightntkkshbjvr3nshnqzdlkjmkfive
5four2gkkbxmpthreefour6
5two15sixfivetzpg
one4fouronemfpvnqseven
9fnlbljdnzzfournine78
djfljccrtvvqktzzvk61onesd
7twohbkeight
seven1eighttwothreet
4mdcljknhpqgxffqpj5
nine9jlsmfgdgntwothreeeight4
136nh
635ninejghg5
cmone7fdlk9lfivemzvnhkcsp
8eightnlndm
6fourpb892
fiveseventwosixfourthree7
5fm
ninegchdnrf63431
24sgnflnsixninenine8
snm9
3fntd721dhhkrqqxsfpstsvzpgonetkhcr
jlzfbml61vdmgb7one
266517
7fivetwo2vhchmg678nine
cgrp3vzn5ninetwofour
666ninefour
9s
svpcnlktpxtvk42jhsvvdpftxpsk
2qznfzvbdr
foneb7eightfivehlbjjknninethree
kfp6
l34pxxhxtd7d
rsbcrtwo27twocqlmeight
jkzgvqgpjfdqvmjfx2flnvjmgllxghhrbjjkfour2
45sevengdnf59twofive
6fivespvkblrxvkcgdxktl
three9dvrssvl5eight4ftsix
seven56gdmlbfbjsl894sevencmc
814
1one4
onenine5fivekcrf1gvvfhlncsv
2ctvq9djzddfxcrj
ntdlcqgsixvmfvlc4fourvlhtvvqmnmkrm
9nineseven1seven
lcvzbnfourksvjqvmv47one5
nine4blvlvlpkl6
sixnqxrhnztzvpmbzmxjm19five
18jtzhk
rzrhv8four
2npghxvjonebchsprfhsjznrxvxnine
eightngsevencrjkxbhpgtxlzhgb46sevenqhqmlfx
threesffl9fivelgmndjfvseven92
seven85
87six9vnshclz
threetwo7915three
one2vkbp6rhqbxvcl7
bsbr1five91
qd3mnine
jjvhltxtdh5nineone6
mbxlnj7bbhnxonejtmtqjfrzqgtrhkeightnine
fourfourqrxdtfive2smnqp
7tvjrszvrhdl5five
four15tvmpvxpvdjnine
sevenvv5tworpvdlseven3dlqvgblqtwo
nkckggninegnlqlnv25threexlhlbzvzk
3vngmhprjseventhreeeightnine
nvqtpzsszrdvttfivenine56oneseven8
146
fxfbone59
f32dhffctkxp6rcngvtfq
sixthreefsixjhckmjqfive495
42four
65nine984
5fthreeone9twoqqsfvzmp
ttwonefive4
one6gfxseightxqcq6
3sixnrjtwormrncmhxeight
jhdxnmsgsdsevensqsslbsndpdmznmldbgeight3tcvjjv4
5sixtvpckxzcjzbmrzk9
pmdmnfgkb3six8xsmstsmxgmm
53onetvlgbglq4zbqpdgsskzdsksd6
kzjcllvz6skphkfdxfiveqrbhmk
75qqjdgxlmfthreevzbfjdlxkfqqq
seveneightjntpjthzptwo2two
2five4fvrfxxnine4qzkkfkmq
2xlvcltn7
fnmggtj2rqxzh7three
rzpjkgtml1
2oneseven4one7xps6
rljfhfrhmzkjxktnszbkpfspxdkqneight2
pzgnine49six2
plxsqeight2
eight2sevenseveneight8rfcrsdlxb
sevenclpqqfxgjnmtwo9
9sevenrqsixone8eightrxqgfsbjh
kqtkstrxhtfzbllhl4lqvqkcbr
hfplfpbltczflpp7nfive8
ninenvqfrvtwo6onel
threev65
frhn18six9sixninefourrsqzgd
mcxckfg5vpkbs89gbninexjzvlj
fivesixdx28
7ppbqv
hs9twopcvpgtjnrsvksskpc8
9mlpckzj2twothreefive
rkrgdclkninetwo6eighttwodc25
tfivefourtwohkhhgsqlj1dtdcxmxkf
1four6five
fgbvmvxvtsix2twonine2sixfour
foureight66
s6fourcv
mxl358sixfive8six8
ztbtwo73sixvxsix9four
eight7qmdlcxfive5
phgfivekrjxdmnzsqsix9
1mfqsevenhz
rjhcdgzngtc155bqlttbsxklpknvlmk
qjkdqlrrs6two
sxlmqzxdpxdnj9fivetwo9seven5
2qtdblb2
8qgdzrsixtwo598oneightp
1shdb944
vrlpronek2
jm52
8eightfourseven11mvtrmtkr2bmp
mnvnjxrgmrxhztwo2ssrdpqk
ztfive435three6threetwo
tnrrdnbgnbhzljdxhxxfrqkcpeight8js3
foursix6zcsrztvgjxmp
five7fourgnnkspxcmczcbgsbdf77five
fgbrzkmvgrdbqjqndpfive81onetwomtzlfb
2qbsfd1two3ninetwo2
8tdjxvfpvdvone33three
lpchnmln56twofive8tfour
cfkfbhppjf6fourdkfxsvdtbcjspzlseven8
5fivestgkzsevenonedkhhrkthree
37nine8six8onefhvvbkmgdfgtv
26hzz
5glvnsztmnfjmkjseventdm4five
pvnnqrqvftrbcvnnthreenine5
mgscxxlp3eight
53eighteight
two1oneqlcdkbddfour
jbll3
8threeseven5tmtrgdhqxd
8twonine6s1
91seven5pmqrjlhqrtzs
jj3sevensix4482
jeightwo7lk4three
zchchxmsctzffivefournine9sqhqkgfour
72xct1
vnsxvsqkhpfvgdseven23gzcmltzgone
xzjqhcvsix1fivecjtxnfivekmvjdc
zdfourgjlhtwo24d5klkpdgqbz
7sdzzdbrxbtonerjcmknnql4dfzqccvqt
tncqzxjq9twofiveqkxdrxrpj894six
dddmkctrzlpfmsszeight8zvbpmpkg
three23ckjhgjc
375jzdhnfcfr19mhsbnplqh
vpbbjlzone5sevenseven33four
onejzfsevenrbskjq1four
seven13one
vcnkfgv979one6zln
rqlxzzbmjb4lmbthreektqsdcfzbmdsfivethreenrxdlkqt
qkoneight8
5rfourfivenine94fdprsix
onexonelzdh2lcbqpzq6
six6v
7gtgxqnnine
tsljzhntwo3fourpbjncgmvf3fflvjxp
vfkdone9fivecftvmjdk
xc5three6eight94
18363one7
8fiveksshdlfmzhljhcmjrn7kpv5j
xbhmxfhbjnjzmninethree7
2933mkmdqjcl
6ncvzqxfvgfive
lnine5fivetb4qmfktnqjxs
93187
5mqninedzkfhbk
two7eightntdbsix298four
sixone3bspxqxggkmkrbcqrhfrxrlgjrlvfl96
fourfivehqls3nine
threedfklszn2threeqzhh7one
mqmftzglone6kjpgglznhrjz89
146cvkftscqsevensixnine
nndhdgpd484hxdgjtfsdxxg9
6mbzckbjphg
eight6jbjtnld2mdjtd
zjtzcqxb736five
jlkdmone8
gvjnjvmlfvcmvnfb8xcgjcmjqvz1bzcctvsixfzqjlhfkfk6
vr6onejnjmrrldnsixsix5six
ninembtmtkgbctlfive45cjzzrmgcscfbcgeight
2mdvneightjzgffivefive4
hmdnbxghxjxt4czshmsfzc
61six18threehrcj
six3five6eightkdfzhxcjkdhq3
jrhqrqkpd4hsixdsbjdpscclmnnhknqq16
jflzcxr3three
threefourghvgsktkc93cmjmsgh8one6
96fivesevenslklhsfmpz
jgkpgfnnbq2pmspdfhsqxfour
g4fourthreerpkdhjhlxlzvnineseven
xkxhkphnkvpdnlncn86srxthree
7sixsevenrfour
5zr72qltsrbdsv
ninervqzdfzqmf6five
8jslpvs73
ztvlxndlm5twohdhmtrdnhbzdrxb
seven6nine4dpdpvrtrmqvql
jfz1
5nineeight5onefivecxtqbsdtbthreefour
fourgeight6threeszgseventwo9
sixfour3
npl8
tzjkffsvbjseven5rhmlxonezlx
5dhtpfour
twothreebxtfndvdnine1sixbb9
five9nineqlzrmtgs5
9v764nineeight
five4eightlsix6
3nineeight21
foureight8btsc
3xgdgtb2
7threetwonexqk
kkqsix48onefourhlsh8
onekgtdzgfh2fivenine2onerb
six4zgcnlhmltrxp5xphvtwo9
eight7cdqggpssix
niner9pzmrbqldkljmgphrrgmdjseven6
439
twofoursixrthree5bxppnhqtx
bmpnt3
fivepkzkzpghrptpksevenseven83two1
9fiveone8one
fiveseven3lqxghdlskbltrzrstwo
fournine3ninephlghonetwoeightbvmdcconeightq
three2pvklmzqjfh4sixonedrctlsfdfour
three91spjlscscjcxbbpdhrg37
57qqjpdfppsix1qxrh5mlmncf
4nfone5eight
eightqsix7one
4jtvxfd38hnrmqkbnvfxpp
qmfsspkfour1plmslcrsseventhree
fzckcbfvxbpsix7nine
fzrj4
4threeqntnineqstzjftnine
tkrh6sixdqflrvtmzmfiveseven9ktmtvprkxhfour
nine4983four
mpllmjrfgv66five3kvhthplrtwo7nkklb
9ngvdjddqbz
5twosix8lbhmzrg
eightsbmcfgm76two4hhc6
seventwosevenrpm6threeeightwodxs
xkbseventwotwogmkxhpmhm42hvvbfchreight
gcqeightwosix8xdlhrnnbkmsevenqdbrjghz
458ninextfjxvgsq5fltdsk6
rlgsflhxqd5bdbhclmrthree
twothreemqqbzjn88blvqxbseven
rqrrdrmlfsixfive6
eight959tzxkgqjd
txdszrn5eight3cqeight1brqr
45122
jvvslnkdk6qnfzjzvseight55eight
4twoeightgrhhkrvtkrzpfive7seven
three8gsmkpzsmfvf2
fiveeight5sevenone9twoseven
4seightjjdkdglspz3vg
sevenssrzkspld2
qnzcvcthrsgjlnzxmxlppjdpnine8seven7
eight7xhvkrcr
two2tdjdfbqtqxrs119r
+112
View File
@@ -0,0 +1,112 @@
use std::fs;
fn find_first(line: &str) -> (u32, usize)
{
let mut value = 0;
let mut lowest_index = usize::MAX;
let numbers = vec!["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
let numbers_values = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
for i in 0..numbers.len()
{
let found_index = line.find(numbers[i]);
let found_index_value = match found_index {
None => continue,
Some(found_index) => found_index
};
if found_index_value <= lowest_index
{
value = numbers_values[i];
lowest_index = found_index_value;
}
}
return (value, lowest_index);
}
fn find_last(line: &str) -> (u32, usize)
{
let mut value = 0;
let mut lowest_index = usize::MIN;
let numbers = vec!["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
let numbers_values = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
for i in 0..numbers.len()
{
let found_index = line.rfind(numbers[i]);
let found_index_value = match found_index {
None => continue,
Some(found_index) => found_index
};
if found_index_value >= lowest_index
{
value = numbers_values[i];
lowest_index = found_index_value;
}
}
return (value, lowest_index);
}
fn main()
{
let file_path: &str = "./input.text";
let contents = fs::read_to_string(file_path)
.unwrap();
let mut sum:i32 = 0;
for line in contents.lines()
{
println!("{line}");
let mut first: u32 = 10;
let mut first_index: usize = usize::MAX;
let mut last: u32 = 0;
let mut last_index: usize = usize::MIN;
let mut index: usize = 0;
for character in line.chars()
{
if character.is_ascii_digit()
{
let value = character.to_digit(10).unwrap();
if first == 10
{
first = value;
first_index = index;
}
last = value;
last_index = index;
}
index += 1;
}
let (l_value, l_index) = find_last(line);
if l_index > last_index
{
last = l_value;
}
let (f_value, f_index) = find_first(line);
if f_index < first_index
{
first = f_value;
}
let result = first.to_string() + &last.to_string();
println!("Sum of line {result}.");
sum += result.parse::<i32>().unwrap();
}
println!("Sum: {sum}");
}
+7
View File
@@ -0,0 +1,7 @@
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen
+140
View File
@@ -0,0 +1,140 @@
F---7-FJ.7--FJ7.-.7-|7F.|7FJ77F7J-|--.FLF|.F-7-F7.F.J77|--|7--|7|-J-F--7-F7.F7-F7F7F-|-|-F777L7|-.FLF|-77F7-FJF|JF--F.77J-L7-FF--7.FFF7FF7.7
|J.F|7F|F7J.J-L-|-|.L7F7JF7-7-LJ|LJ.F7.L|.F|F7FJ7.F7.|F|L7.L7L|-F-|7|L|JFF.F||F777L|-77L-|JF7FJJJLF7LL7|.L77|L7LLLJ.|..LLL7|L7-.-JFFLL-7L-FF
F7L7JLLJL-7FL7|F7-J7.-J.7L7J|.|-JF|FLFF7L-JLL|-F7-F|77|.|L7FJ7JJFJL7JJJFF.FJ||||JFF|LL7F-JF|.LJ7F.|F7F|J7LLL-7||||LFFFF77|-L7LL7F7-JL7|FF7L|
JFL7FJ7.--JJ7L||.LF|7JJFLFLF7.|.LFF7-FJ|-J-77|-F.|J|LLFF-|-7JL7-J7L|JLF7-7F7|LJL-7|L7F7J-FJ|F|7|77|J-F..FJL.|F77-7F|-FJ|J7J.--7.7J.7-|-||LF|
.|LLFJLF--J.FL|-J.F77F-77.L|L7F77F7.F|FJ7.FJ7JF7F7|F-J..7JL|..FF---|J-F|JF|||F--7|-FL7.J-J.|LFFJ-7.L7J|.7-|LJJF7L77LL||.FL--JJ|-L-F|7F-JJ|.|
FL77J|LJFJFF7JJ|J7LJ.|.LF.LL7|||7||-FJL---7.LFJL7J7|FLF7J|F77-J|JJFJ-F-7FFJLJL-7LJ7LLLJ7JLL-7||J|||L-7|---L.FFLLFF---|F--J.|.|L.||FJ7.LLL|-J
|L-J-JJ-F-F-J7F--7.F7F7F7FF-JLJ|FJ|JL7F-7FJ7-L7FJF-7F7||7FFF7JL7.-JLF|FJFJF7F7FJFFL-|.L-7J|FJFJ-JJ7.L|7.|7J-|J.||||LFLJ-F|F7-7|FF-L7|7-.|L7|
7|LF|JLL|.F.F-FJF-7|||LJL7L-7F-JL7L7FJL7LJF77F|||L7||||L-7F||.7F7FLFFJL-JFJLJLJ-F|J.F-FL7.LJ||.|L.F7|.F7.7|FJ||-J|J-J7.7-7---|-LJF|7F|-77-L-
|J.7|LF7JF|F7|L.L7|||L7F-J-F||F7FJFJ|F-JF7||F7||-F|||||F-JFJ|7J|L|F-L-7F7L-7F777.|JF77J-F7FFF777LFFF-F-7-7--LJL|-L|.FF-F.JL|.LFJ-77-F|7F77FJ
JJ--JLJL-J|J.FLF-J|||L||F77FJ||||FJFJ|F7|||LJLJ|JFJ||||L77L7|F--7F7-F7LJ|F7|||F7F7.L|.F-JL7FJL7F---7JL7L7F7.L|F--7L-L7.J-.-7JJ|L-7L.|JFJLJF|
|JFLJF|-77F-7.FL-7LJL-J|||FJFJ|||L7|FJ|LJ|L---7L7|FJ|LJFJ7FJLJF-J||.||F-J|LJ|LJLJ|7-J7L-7FJL7FJ|F--J--L7|||7FFF-FJ|JLL|FLFLJ.-L7FLL-|L|.7.FF
L-77LJJ|FJ|7J.--LL----7|||L7|FJ||FJ||FJF-JF7|FJFJ|L7L7FJF7|F7FJ-FJL-J||F7L-7L7F--J.7|F-7||F7||FJL7L|-F-JLJL-7-|FJLJ77.|7.L7JF|L|7.|---|F--.F
7JFF7||FJJJJL7J7.F-7F-JLJL-JLJFJ||7|LJFJF7|L7L7L7L7|-|L7|LJ|LJJ.L---7|LJL7FJ|||F-77LLL7||LJLJLJF-J-|LL---7F-J|||..JJF-.F7.F-7|L|7F77JFJ-L|FJ
|-|LLJF-7LJ|LL|--L7|L7F--7F--7L-JL7L7FJFJ||FJF|FJFJ|FJFJL-7L-7F-7LF7|L7F7|L7FJ||FJF7FFJLJF-----JF-7F7F-7FJL--777-7L-|JF|77LLLL7JFJ|F-JJ.L|7|
77LJ7F--7J7L7L|.F-J|FJ|F-J|F-JF-7FJFJL7|FJ|L7FJL-JFJ|FJF7|L7FJL7|F|||FJ|LJFJL7||L7|L7L--7L7F-7F7|FJ||L7||F---JL|-L7J.-77J-F.||JF|.L--J.--L7|
L77--L-7J-|7LFF7L-7|L-JL-7||F7|FJL7|F-J|L-JFJL-7F7|FJL7||F-J|F-J|FJLJL7|F7L7-||L7LJFJJF7|FJL7LJLJL7||FJ||L--7F-7-|7.F.|7JL-L7J-7JFFL--JFFL.L
..FFJL7L7-LLF7|L--JL-7F--J|LJ||L7FJ|L7F|F--JF7-LJ|||F-J||L-7LJF-JL--7FJLJ|FJFJL7|F-JF7||||F7|F----J||L7LJF--JL7|F--7LFLJ--||||FLLF7-J.FF-.F|
F-J|7L|-77|-J7|F7F--7|L---JF-JL7|L-JFJFJL-7FJL7F7|||L7|||F7|F-JF7.F7||F7FJL7L7FJ||.FJ||LJ||LJL-7-F7||JL7FJF7F7||L-7|-FJ-7LL77-F7-F|J.F7||F-7
LL7L77L-7-7-LLLJLJF-JL-----JF--JL--7L-JF7FJL7FJ||||L7L7|LJLJ|F7|L7||||||L-7L7||FJL-JFJL-7||F---JFJLJ|F-J|FJLJLJ|F7|L7JF7.7JL7|LF-7.F-FF77JJ.
FF--.7.LJLL7|.|FF-JF--------JF7F7F7|F--J||F-JL-JLJ|FJFJL7F--J|LJFJ|||||L7|L7LJ||F---JF--JLJL--7JL7F-JL7FJ|F----J|||FJFJ|7JF-J-7|JL||LLLJL7-F
7|..L-FFJJFL7FFLL-7|F---77F7FJLJLJ||L7F7LJL--7F---JL7|F7||F--JF-JFJ||||FJF7L7FJ||F--7L---7F---JF-JL7F7|L-JL7F--7|||L-JFJF7L7F7JJ.FJF-7L7J|7|
F7.L7LJJ.FJL|F7L|7LJL7F7L-J|L----7|L7LJL7F7FFJL7F-7||||LJLJF--JF7L7||LJL7|L-JL7|LJF7|F7F-JL-7F7L7F-J|||F---J|F7||LJF--J||L7JLJ.LFLJ|LJ--7JL|
J7-FJ.|7.|J-F7L7LF7F-J||F-7|F7FF-JL7|F--J||FJF-J|FJFJ||F7F7L--7||FJLJF-7|L---7||F-JLJ||L--7FJ|L7|L7FJLJL7F-7LJ|LJF-JF7F7L7L7||--|..|F7|LJ|F|
|F7LF77J.LF-LJJ.FJLJF7|||FJLJL7L--7LJL7F7|||FJF7||FJFJLJ||L---J||L--7|FLJJF--J||L-7F7||FF-JL7|FJL7|L-7F-J|FJF7L-7L7FJLJL7|FJ7|F7|F.|--7-LL|7
|L||F---F.F7LJ-FL---J||||L--7FJF7L|F--J|||||L7||||L7L-7FJL-7F-7||F7FJL7F-7L--7LJF-J|||L7L7F-J|L7FJL-7|L-7|L7||F7|FJ|F---J||F---77-|J|7L-F.L7
-7F77JJF-|7JJ.F-F--77||LJF--JL-JL-J|F7J||||L7|||||FJF7|L7F-JL7|||||L7FJ|FJF-7L7FJF-J||FJFJL7FJFJL7F-J|F-J|FJ|||||L7|L7F7FJ||F--JJ7|.L7|F|.LJ
.L.|L|.F-L|7|FFLL-7L7LJF7L--------7LJL-JLJ|FJ||LJ|L7|LJFJ|F7FJLJ||L-J|.||FJFJFJL-JF-J||FJF-JL7|F-JL7FJ|F7||FJLJLJFJ|FJ||L7LJ|F-7JF777.LFFJL|
J..L.LL|J-J-|7J.LLL7L-7|L---------JF--7F7FJL7|L-7L-JL77L7LJLJF--JL7F-JFJ|L7|FJF---JF7|LJFJF7FJ|L-7FJL7||||||F----JFJL7|L-JF-J|FJ-LF77.|L||.F
.F-.L7.|7.F7.F-7.FLL7FJL----------7L-7LJLJF7|L7FJF-7FJF7|F--7L--7FJL77L7L7|LJFJ|F7FJ|L-7|FJ|L7L--J||FJLJ||LJ|F7F7FJF-JL7F-JF7||F77.JJ-L-|-LJ
FF|-.FFF-JJLLJL|FF--JL7F77F7F7F--7|F-JF7F7|||FJL-JFJL-JLJL-7L---JL7FJF7L7|L-7L7FJ||FJF-J||FJ7L---7L7|F--JL-7LJLJLJFJF-7||F-JLJLJ|-J7|-|F7-L7
|L-JLLJL-J7F||.J|L---7LJL-JLJLJF7LJL7-|||||LJL7-F7|F7F---7FJF7F-7FJL7||FJ|F7|FJL7||L7L-7|||F7F7F7|FJ||F7F7FJF----7L-JFJ|||F---7FJFL7.FFJJ|F7
..|.|F7L77LL77J|F-7F7L--------7|L--7L-JLJ|L--7|FJ||||L7F7LJ|||L7LJF-J||L7LJ||L--J||FJF-JLJ||LJLJ||L7|LJ|||L7L-7F7L--7L-JLJL7F7LJ-7F|-7.|7FLJ
F.L|-|J.F7.|L|-LL7LJL----7F-7FJ|F-7L7F---JF7FJLJFJLJ|FJ|L--7||FJF-JF7||JL-7LJF7F-J|L7L--7FJL7F--J|FJ|F-J||FJF-J|L--7L7F7F--J|L7L|F-J|F|JLJ|J
|F-L.|.-JL7|JF-L|L------7|L7LJFJL7|FJ|F--7||L--7|F7FJL7|F--J||L7|F-J|||F7-L-7|LJF7|FJF7FJ|F7||F7FJL-J|F7|||FJLFJF--J-|||L---JFJ.-JF|JLJ|J.JJ
7-LJFJ7|J.F-.J77FF------JL-JF-J..||L7||F-J||FF7||||L7FJ||F7L||F||L-7|||||F7F||F7|||||||L7|||||||L7F--J||||||F7|FJF77FJ||F-7F7|F7-|FL-F.7-7J|
F7-|7.FF-FJ-|JF7FL--7F7F7F--JF7-FJL-J|||F7||FJ|||||FJ|FJLJ|FJ|FJL7FJ||||||L7|LJLJ|||FJ|FJ||||||L7||F-7|LJLJLJLJL-JL7L7||L7||LJ|L--7J7|FL-|-F
LJ--F7L---JFLJL-JJ-LLJLJLJF--JL7L7F77||LJLJ||JLJ||LJL|L-7.||FJL-7|||LJ||LJFJL7F--J|LJFJL7LJ||||FJ|||L||F----------7L7||L7|||F-JF--JJ-F7LLJ-J
|.LF-JF-F|.|J7.L77|.F--7F7L---7L-J|L7|L7F--JL-7F||LF-JF7L7LJL7F-JLJF--J|F-JF-JL7F7L77L--JJFJ|||L7|LJFJ|L---------7L7||L7|||LJF7L7|7|F|L..L7J
|7F-J7.FFLLJ|F..F7F-JF7LJL---7L---JFJL-JL--7F-JFJL7L7FJL7L-7FJL---7|F-7||F7L7F7LJ|FJF7LF--JFJ||FJL77|FJF---------J|LJL-JLJL7FJL7L--7J-J-7...
.-J|||-|7L|7FJF7||L-7|L-7F--7|FF7F7L--7F7F-JL7FJF7|FJL-7L7FJL7F7F-J||FJ|||L7LJ|F-J|FJL7L7F7L7LJL-7|FJ|FJF--7F7F--7F-----7FFJ|JFJF--J-7.FF--F
J7|FLJF-L7|LF7|LJL7|LJF7LJF-JL-JLJL---J||L7F7|L7|||L7F7|FJL7-LJ|L77LJ|FJ||FJF-J|F7LJF7L7|||FJ|F--J|L7|L-JF7LJLJF7LJF7F-7|FJFJ|L7|JLJF7-FJ7||
||L7.FL|LL-L.LL7F7L7LFJ|F7L------------JL7||||-LJ|L7||||L-7L--7L7L7JFJL7LJL7L7FJ|L7FJL-J||||F7L---JJ||F--JL----SL--JLJJLJ|FJF--J|7FL-.F77.F|
J.||F--7.J7J|-LLJL7L7L7||L---------------JLJ|L--7L7|LJ|L-7L7F-JJL7L7L7FJF--JFJL7L7|L-7F7LJLJ|L-----7LJL7F----------7F7F7|LJ7L---J777.L7LJ--|
L-|-|..L7-|LF.LJ-LL7L7||L--------7F--7F7F77FJF-7L7||F-JF7L7|L-7.FJFJFJ|-L-7FJF-JFJ|F7LJL7F7FJF-7F-7L7F7LJF7F-7F----J|||L7.LJJFLL-7|F7JJ.||.|
L7F-JF-F|7.F77J|-F7L7LJL7-F---7F7LJF7LJLJL7L7|-L7|||L-7|L-J|F-JFJFJFJFJF--J|LL-7|J|||F--J|||FJFJL7L7LJL--JLJFJL-----JLJFJF|..|LL7JJ-LJ-F7FJ-
.F.|FFFF--7||F7LFJL7L7F7|FJF-7LJL7F|L-----JFJL7J||LJF-JL-7FJL7.|FJFL-JLL7F7L-7.|L7|||L---J||L7L7FJ7L7F7F-7F7L----------JJF7-.|L-.||LJ.FLJJ|.
FJF|--JL-7||||L7L-7L7LJ||L-JFL7F7L-JFF7F7F7L-7L7|L7.L-7F7||F7L7|L-7|F---J||F-JFJFJ||L7F---JL-JFJL7F7LJLJJLJL-----7LF7F7F7|||.F-J7LJ7.7|J.L|-
|7JL|..L||LJLJFJF7L7L7|||7F7F-J|L7F--JLJLJL-7L-J|FJF--J||||||FJ|F7|FJF7F7|||FFJFJFJ|FJL---7F--JF-J||F7-F7F------7|FJLJLJLJL-77LLF7L7-L77L.|7
-J7.F----|F7F7L-JL7L7L-JL-JLJF7L7LJF-------7L--7|L7L7F7|||||LJL|||||FJ||||LJFJFJ7L7|L--7F-J|F7FJF-JLJL-JLJF7F--7LJL7F-------J..|JF.77LJ-J-||
L-FFF77|-LJLJL---7|JL-7F7F7F7||FJF7L------7|F7FJ|FJ-LJ||||||7F-J||||L7LJ|L7FJFJ|F7LJLF-JL7-||LJ7L----7F---JLJF7|JF7|||F-----7.F7FF7FJ-|...||
|7|FJL-7-F-7F7F7FJL7F-J|||||LJLJFJL-------JLJ|L7LJLF7FJ|||||FJF7|LJ|FJF-JFJL7L-7|L--7L7F7L7LJF------7|L7F----J|L-JLJL-JF-7F-J-|L-J|JL-J7.F-7
---L7F-J7|FJ||||L-7|L--JLJ||F7F7L7F---------7L-J|F-JLJFJ||||L7|||F-J|FJF7|F-JF7|L--7L-J||FJF7|F----7|L-JL--7F7L--7F7F7FJ.|L-7-|F--J7J|LF-J-F
L7LFJ|F7-|L-JLJL--JL7F7|F7LJ|||L7LJF----7F-7L---7L7F7FJ|||||L||||L-7|L-J||L-7|||F--JF7FJ||FJ|||F---JL------J||LF7LJLJLJF7L7FJFJL-7LF-7LL7FF7
FL-L7|||F|F7F-7F7F-7LJL-J|7FJ||FJF7L---7|L7|F7F-J.|||L-7|||L7|||L7FJL-7FJ|F-J|||L7F7|LJFJLJFJLJL7F7F--7F----JL-JL----7L|L7LJFJF--J7|FJ.LLLLJ
LLF-JLJL-J|LJFJ|||FL-7F-7L7L7LJL-JL----JL7|LJLJF-7LJL7FJ|||FJ||L-J|F--J|FJL7FJ|L7||||F-JF7FJLFF7LJLJF7||F------------JFJFJF7L7|JFLFF|J.L|7L|
F-L---7F7FJF7L7|||F--JL7L7L-JF-7F7F--7F7FJL---7|FJF7FJ||LJ|L7LJJF7|L--7||7F|L7L7||||||F7|||F7FJL-7JFJLJ|L-----7F7LF7F7L7L7|L7|L77FF7|LF.F--|
L77LJLLJ||FJL-J||||F---J||F-7|FLJLJF-J||L7F--7LJL-J|L7|F-7|FJF--JLJF7FJ|L7FJFJFJ|LJ|||||||LJ||F-7L-JF-7|LF7F7FJ|L-JLJL7|FJ|FJ|FJFLF7F7|L.FL|
F-LJFLLFJ|L-7F7|||LJF----JL7||F----JF7|L7|L-7|F---7L7|LJFJ|L7|F7F--J||-L7|L7L7|FJF-J|||LJ|F-JLJ||F-7L7||FJLJLJJ|F--7F-J|L-JL-J|F7F|LJL7FFLJJ
||LFJ-LL7L7FJ|||LJFFJF7F7F7||||F-7F7|||FJL-7||L--7L-JL--J.L-J|||L--7|L-7|L7|FJLJJ|F7|||F-JL7F---J|FJFJLJL------JL7FJL--JF----7LJL-JF7FJJJJJ|
F7|JFF|.L-JL7|LJ7F7L-J||LJ||LJLJFLJLJLJ|FF7LJL---JF-----77L-FJ|L7F7||F7|L7|||JFF-J|||LJ|F--JL----JL7L7LF7F7F-7F7FJL-----J.F-7L-7F7FJLJJJ..|J
|L--|FFF---7||F--JL---J|F-J|F-7F7F-----JFJL7F--7F7|F---7L7|||FJFLJ||||LJ|LJLJ77L-7|LJF7LJF--7LF7F77L-JFJLJLJ.LJLJF7F-7F--7|FJF7LJLJJ|J-7-7..
J|LF-7.L--7LJ||F7F7F-7FJL--JL7|||L---7F7|F-J|F7LJLJ|F7LL7L7-||.J|LLJLJ7.-JJLFF---J|F-JL--JF7L-J|||F--7L----7F7F--JLJFJ|F-J|L-JL-7JJJ|JF7JFJ7
|F-JF-JL|FJF-J||LJLJFJL7.F7F-JLJL-7F7LJLJ|F7||L---7LJL7JL-J7LJ7.FF|-J--7LF-7-L-7F7|L--7F7FJL7F7LJ|L7FJJF---J|LJF7F7FJF|L--JF---7L77FF7JJFFJJ
LL7.LJ|FFJFJF-J|F---JF7|FJ|L-7F7F7LJL---7LJ||L---7L--7L---7-..F-F|.LJ7LL.7J||LLLJ|L--7||LJF7LJ|F7L-JL--JF---JF7||||L--JF--7L-7|L7L-7||J.J.77
J..F|.|LL7|JL-7|L----JLJ|FJF-J|||L-----7L7FJ|F---JF-7|F---J-F|..L|L.|L..F|-||F7F-JF7FJLJF-JL-7LJL--7F---JF---JLJLJL7F7FJF7L-7L-7|F7LJ|JL.7L-
.FF-J.|FJ||J.F||F-----7L||FJF-JLJF--7F7L7|L-JL----JFJ|L-77JL7J--J|FFF7|.L|-|-F-|F-J||F-7L---7|JF7F7LJF7F7L-----7F7-||LJ7|L-7|F-JLJ|F-J|.FL-J
FF|-7.-JFLJ.FLLJL----7L-JLJFJ|F-7L-7LJL-J|F-7F-7F7FJ-L-7L-7J|...F7F7|FL7-JJL7J|LJJ|LJL7L-7F7||FJLJL--JLJL-----7LJL7|L---JF-J|L--7||L7J7--JJ|
L-7--JLLJL|.J.F77F7F-JF7F--JF-JFJF7L----7|L7LJFJ|LJF7F7L--J-L.|.FJ|L77..7J.FF.FLJ.J7.|L-7LJLJ|L7F7F--7F------7|F--J|F-7F7L-7L---J-L-JJ|-7.F7
FL77L||.F--J-FJL-JLJF7|||F--JF7L-JL-----J|FJF7L-JF-J||L-7J.LL7L-JL..L-J7..JFLF-|FJ.|.F7FJF7F7L7LJ||F-J|F--7F-JLJF7LLJFJ||F7L7F7||7||.L--7.-7
JJL7-77.JJLJ.L7F---7|LJLJL---JL---------7|L-JL7-FJF-J|F-J.|.|L-|FL--77|7F7F7||.|7F-F-J|L-JLJL7|F7LJL-7||F7LJF7F7||F-7|FJ||L7LJL-7-7-7-L7J-L|
|.-7L||-J--JFFLJF--J|F--------------7F--JL7F-7L7|FJF7||F-7F-77FJ7J|7JF7JJFL-7J-7F77|F7L------JLJL7JF7LJLJL--JLJLJLJFJLJ-LJFJF7F-J.|||..L-..F
77|J.LF-J|.|LFF7L--7|L---7F7F-7F7F-7LJF7F7LJFL7LJL7|||LJFJ|FJF7|L777JFJ|FL7F|7..L|-LJL-7F------7FJFJL7F-7F-7F------JF7F--7L-J|L7J77F7-|.||FJ
LFL-77|.F7-FF7||JF7LJ7F77LJLJLLJLJ|L--JLJL7F-7L---J|||F-JFJL-J|J.JLJJ|||F|JLJF-JLJ7L7|FLJ7F----JL-JF-JL7LJJLJ|F7F---JLJF-JJF7L-J-7-7F7FL7.FL
FF|7|FL|--F-JLJ|FJL---J|F7F7.F------------J|FJ.F--7||||F7L7F--J7F7F7F-L-77FFJJJJFLL7|JFF-7L-7F7F7F7L-77L-7F7F7|LJF-----JF7FJL7F-77J|-F|7|FJJ
||L|--.JJ|L---7LJF7F--7LJLJL7L---------7FF7|L7FJF-J||||||.|L--77.|LL7-J-7--|||-F|||-.L|L7|F7LJLJ|||F7L-77LJLJLJF7|7F7-F7|||F-J|FJF7LF-|F7J7.
-LJ||.LL7F|JLLL--JLJ7FJF-7F7L7F--------JFJLJFJL7|JFJLJLJL-JF--JJ7L-7J-|-FJ..|7.-|F|77|F-J|||F7F-J||||F7L7F--7F7||L-JL-JLJLJL--JL-JL7|LJ-J.L7
|F-|-J.FF7L7F||F7F---JFJFLJ|FJL7F--7F7F7|F--JF7|L-JF--7F7F-JJJL-JF|--.7L|.7FL--.L|FF-7L-7LJLJ|L--JLJLJL7|L-7|||||F--------7F----7F-J-FLJ-7-|
F7||-F-F-JJF7-FJLJF--7L7F--JL7JLJF7LJLJ|||-F7|LJF-7L-7|||L-7.7JFLFJ-7FJ7|7L7--LF7F7L7L-7L---7|F7F--7F--JL--JLJLJLJF---7LF7LJF7F7||F77JF-7-F7
7JF|.L--7J7F7-L--7|F-JFJL--7FJF7F||F---J|L7|LJF-JFL--JLJL--JF7.|J|.|F7F7JFJL|.F||||-|F-J|F--JLJ||F7|L--7F---7F7F7FL-7FJFJL--JLJ|LJ||F7FL7JJ|
..F--77JJFFFJJ|.LLJL--JF---JL-JL-JLJF7F-JFJ|F7L--------7F7F7|L7JFLFLJL7L-F--LF-J|||FJL-7FJF7F-7|LJ||F7JLJF--J|LJL7F-JL-JF7F7F-7L--JLJL7FJJF-
L7|L|LJ.77F77LF7F---7F7L--7F7F-7F---J||F7|J||L-------7FJ|LJLJFJFF-L7JF7FL|.LLL-7LJ|L--7|L-JLJL||F7||||F--JF7FJF7FJ|F---7|||LJF|F-7F--7|-J.LJ
.F|7|L-F--|L7FJ|L--7||L--7LJLJ7LJF---J||LJFJL-------7LJFJF7F-J.L77LJ.-77-LJ..|7L7FJF--JL-7F7JFJLJLJ|||L---JLJFJLJ-||F-7|||L--7LJ-LJJLLJJF7-F
FF.JJ7|LJ-L7|L7|F7FJ||F-7L-------JF7|FJL--JF-7F--7F7L7FJFJLJJF7JJL|J77.F7JFFF-7FJL7L----7LJL7L----7||L-------J|F7FJLJFJLJL7F7|.F7F7|.||.---J
FJ-|7F-7F|L|L-J|||L7|LJFJF7F7F7F-7|L-JF7F-7|FJL-7LJL-JL7L7F--JL-7.77F7-|J|FJ|FJL7FJF---7L--7L-7F7FJLJF-7F7F-7F7|||F--JF--7LJ|L-JLJL7-777-|-7
|J-77|J|F7JL7F7LJL-JL7.L-JLJLJLJJLJF--JLJ|LJL7F7L7F7-F-JFJL7F---JF7FJL--7F7FJ|F7|L7L--7|F7FJF7LJLJF-7|FJ|||FJ||||||.F7L7FJF7L7F7F7FJ.J..F||F
|LFJFJ7LF--FJ||F7F-7FJF7F7F-7F-----JF7F7F-7F7||L7LJL7L7FJF7|L-7F7|LJF7F-J||L7LJLJFJF7J|LJLJFJ|F7F7|.LJL-JLJL-JLJLJL-JL7|L-JL7LJ||LJLF.FF7LL|
|-7F|JF.LL.L7|LJLJFJL-JLJ|L7|L------JLJ|L7LJ|LJLL---JFJL7|||F-J|||F-JLJF7||LL--7FJFJL7|F7F7L7||||LJF7F7F7F7F7F-7F7F7F7LJF7F7L7FJL7F--7-.|7|F
J||FF7..-7FLLJF---JF----7L-JL----------JFJF7L------7FL7FJ||||F7|LJL-7F7||||F7F-JL7L7FJLJLJ|FJLJLJ.FJLJLJLJLJ||F|||||||F7|LJ|FJL-7LJF-JFF7JF-
J-|L--|7LL7J|-L----JF--7L------------7F-JFJL7F-7F--JF7|L7|LJ||||F---J|||LJ|||L7F7L7|L-7F7|LJF-----JF-7F----7|L7LJ||LJ|||L-7||F-7|F7|7.LJJ7||
||JLJ7|F.|J.F-F-----JF7L-------------J|F-JF7LJJ||F-7|||FJ|F-J|||L7F-7||L7FJ||-||L7||F-J||F7JL-7F7F7|FJ|LF--JL7L-7|L-7LJ|F-J|LJFJ|||L-7.FJJ7L
FF7-7|F7FF77.FL--7F7FJL7F------7F--7F7|L--JL--7||L7|||||F|L7FJ||FJ|FJ|L-J|FJL7||FJ||L-7|LJL--7LJLJLJL7L7L-7F7L--JL--JF7LJF7L7FJL|||F-J-F|FFJ
F-J-7-7||-L7-F--7LJ|L-7||F-----J|F7LJLJF--7F--J||FJ||||L7|FJL7LJL7|L-JF--JL7FJLJL7LJF-JL---7FJLF-7F--JFJF-J|L--------JL--JL7|L-7LJLJJJJLL-7|
77F.|LFJJL-|JL-7|F7L--J||L------J||F7F7L-7LJF77||L7||LJFJ||F7|F--J|F--JF-7||L--77L-7L7F-7F7||F-JFJL--7L7L--JF--------------JL--J-|JJ|-FJJ.FJ
|L-.LF-J7JF7-F-JLJ|F--7LJF--7F7|FJLJ|||F7L7-|L7LJFJLJF7|FJ||LJL---JL--7L7|FJF--JF--JFJL7LJ||||F-J|F-7L-JF---JF7F----7|F7LF--7.F7F|J.|7L77-L7
J-J7.LJL--F--JF--7|L7FJF7L-7|||FJF-7LJLJL7L7|FJF7|F--J||L7||F---------JFJ|L7|LF7L--7|F7L-7LJ||L--7L7L-7|L----JLJF---JFJL-JF-JFJL7--F7|LJL77|
L-J777-F|LL---JF-J|FJL7||F-JLJLJFJ.L----7L-J|L7|LJL--7LJJ||||F--7F7.F7FL7|FJL7||F7FJLJ|F-JF7|L-7FJFJF7L----7F---JF7JFJF-7FJF7L7FJLFJ|7JLFFFL
FFJFFJ7-F.|FF--JF7|L7FJ||L---7F7|F7F----JJF7L7|L7F---JF-7||||L7FJ|L7||F7|||F-J|LJ|L-7FJL--J||F7||JL-JL----7|L----JL7|FJ|LJ7||FJL-7L7|--77FJ.
FJ-LL.L7F--7|F--J||FJ|.|L----J|LJ|LJ|F7-F7||FJ|FJL-7F7L7LJLJL7|L7L7LJ||||||L-7|F7|F7||F7F--J||||L7F-7F7F7FJL7F--7F7LJL77F-7|||F--J-||J-JF7L.
|F-F7FFLL7|F||F--J|L7L7L-----7L7FJF--JL7|||LJFJL7F-J|L7L7F-7FJL7|FJF-J|LJLJF-JLJ||||||||L7F7||||FJL7LJLJLJF-JL7.|||F-7L7L7LJLJ|F7F7||J|FL7J7
F7J.L7|-JLLLLJL7F7L-JFJF7F7F-JFJL-JF---J|||F7L--J|F7|FJ|LJFJ|7FJ||FJF-JF---JF-7FJ||||LJ|FLJ|||LJL7FJF7F--7L--7L7LJLJ.L7L7|F---J||||||F-7.7J|
LJ-F-FJJ--J-L|LLJL7F7L-J||||F7|F---JF7F7||LJL-7F7||||L7-F7L7L7L7|||J|F-J-F7FJFJL7|||L7FJF7FJ||F--JL-JLJF7L--7L7L-----7L7LJL-7F7|||||||FJ7L7.
LFFF7JF-7J|-FJ-F--J||F-7LJ|LJLJL----JLJLJ|F7F7||LJ|LJFJFJ|.L7L7||||FJL7F7|||FJF-J||L7|L7||L7LJ|.F-7-F--JL---JFJF-7F--J|L7F--J|||LJLJLJL-7L||
.|J.77|F7F-.|--L-7FJLJJL-7|F7F7F--------7||LJ|||F7L7FJ-|FJF7L7LJ|||L-7LJ|||||FL-7||FJ|FJ||-L-7L7L7L7L----7.F7L-J7LJLF7-FJL---JLJF7F-7F7FJ.L-
F.|7|-F|F--|.L|F-J|F7F-7FJLJLJLJF---7F-7LJL-7||LJ|FJ|F7||FJL7L-7|||F-JF-J|||L7F7|||L7|L7||F7FJFJFJFJLF--7L-JL-------JL7L-7F---7FJLJ.LJLJ|FF|
|7L-J.LJ7J||-FFJF-J||L7|L-7F7F7FJF--J|FJF7F7|||F-J|FJ||||L7FJF7||||L7FJF7||L7||||||FJL7|||||L7|LL7|F7L7FJF-------7F7F7L7-||F-7LJF-7F77LL|7-F
FFL7|FFJLF|.|L|FJF-JL-JL--J||||||L--7||FJ|||||||F-J|FJ||L7|L7|LJLJL7|L7|||L7|||||||L7FJ||||L7||F7||||FJ|FJF----7.LJ||L-JFJLJFJ|FJFJ||7LL|J.7
F|L|-|7J-J|FL7LJ7L--------7|LJLJF7F7|||L7||||||||F-J|-||FJL7|L-7F--J|FJ|LJFJ||||||L7||FJ|||FJ|LJ|||||L7|L-JF--7L--7|L7F7|F-7L--JFJL|L7F-LJ-F
F--..L7...F7L|J.FF---7F7F-J|F---JLJLJ||FJ||LJ|||||F7L7LJL7FJ|F7|L7F7|L7L7LL-J||||L7|LJ|FJ||L7L-7LJ|||FJ|F-7L-7L---JL7LJ|||FJF7F7L7||FJ-7|7.|
7J|F7JL77-FJJ|.-JL--7LJLJF7|L------7FJ|L7|L7FJ|LJ||L7L-7F|L7||||FJ|||FJFJF--7LJ|L7|L-7|L7||FJF7L7L|||L7|L7L-7L-----7|F7|||L7|LJL7L-J|J-L.F-F
7-J-7-FF-7LJ.F-F7JF-JF7F7|LJ-F-7F7FJL7L7||FJL7L77LJFJF7L7L7|LJ|||FJLJL7L-JF7L7FJFJL7FJ|FJ||L7||FJFJ|L7||FJF-JF7F---JLJLJ|L7|L--7L7F7L-7-FJFF
L|.|LFFJ|F|JF|LLF-JF7|||LJLF7L7LJLJF7L7LJLJF7|FJF--JFJ|FJFJL-7||||F---JF-7||FJL7L-7||FJL7||FJ|||-L7L7LJ||7|F-J||LF7F7F7J|FJL7F-JF||L--J7F7..
FL|F-J.FF-||-77JL-7|LJLJ7F-J|FJF7F7|L7L---7|||L7L7F7L7||FJF-7|||LJL7F7FJFJ|||F7|F-JLJ|F7|||L-JLJF-JFJF-JL7LJF-JL-JLJ||L7LJF7|L--7|L-77-7|.F7
7J.FLF--JLL|F7-F-7LJF7-F7L-7LJFJLJLJFJF7F7LJ|L7L7LJ|FJ||L7L7LJ||7F-J||L7|FJ|LJ||L---7||LJ|L-7F--JF7L7L-7FJF-JF--7F-7LJFJF7||L---JL7FJ7|||-||
|FLL7J||L|FJ7|.L7L--JL-JL-7|F7L7F--7L7||||F7L7|FJF-JL7LJ7L7L7FJL7|F7||FJ|L7|F7|L7F7FJLJF-JF-JL7F7||FJ7FJL7|F-JF-J|7|F-J7|LJL---7JLLJ..FLL--L
JJ|.|F|FFL|FLL-LL--------7|LJL7LJF-J-LJ||||L7||L7L7F7L-7F7|FJL7FJLJ|||||L7||||L7||LJF7LL--JF7-||LJ|L-7L7FJ|L-7|F7L7||F--JF-7F7FJJ|J-F7--J777
FLJ.LLJJ7L|7.LF7F7F------JL---JF7L-7|F-J|LJF|||FJFJ||F7||LJL7FJ|F--J||L-7LJLJ|FJ|L--JL7F---J|FJL-7|F7|-LJFJF7||||FJ|LJF7FJ||||L7FL-F|L|F7L-L
LJL|.FL.|LL.FF|LJLJF7F7F7F---7FJL-7|FJF7L--7|||L7|FJ||LJ|F7FJL7|L--7||F7L7F--JL7L7F-7FJL7F-7LJF--J|||L--7L7|LJ|||L7|F7||L-7LJL-J-||FJFJL-JLL
|J-|JJ|-F7|LFFJF7F7|||||||F7F|L--7|||FJ|F--J||L7||L7|L7FJ|||.FJ|F--J||||FJL--7FJFJL7LJ.FJL7|F7L--7||L7F-JL|L-7||L7||||||F7L----7|L|.F||F7||J
|.|F7JL7|FFJFJFJLJLJ||LJLJ|L-JF7FJLJ||F|L--7||FJ|L7||FJ|FJ|L7|FJL--7|LJ||F7F7||JL-7L-7FJF-J||L7F-J||F|L--7|F7|||FJ|||LJ|||F---7|J.-7.F7.F7|.
F7-LL.LJLJL7L-JF7F--J|F---JF7FJ||F7-LJFJF-7||||FJFLJ||-|L7L7|LJF---JL-7|||LJLJL7F7|F7||FJ.FJL7|L7FJ|FJF--JLJ||||L7||L-7LJ|L--7LJJ7LL7L7FFJ-J
.|JJL7.7|FFLF--JLJF7FJL-7F-J||L||||F--JFJJ||||||F---JL7L7L7||F7|F-7F7FJ||L-7F7FJ||LJLJ||F-JF-JL7||FJL7L----7||||FJ||F-JF-JF-7L-7.|7.|-|FJ.L.
|..FFLLJF7JJ|F-7F-J|L7F-J|F-JL7LJ|LJF7FJF-J|LJ||L7F7F7L7L-JLJ|LJ|FJ||L7|L7LLJ|L-JL7F-7|||F7|F--J|LJF7L7F7F-J||LJL7||L-7|F7L7|F-J7LF.|.|7|J|L
|J77L-JL|L|7LJLLJFFJFJL--JL7F7L7FJF7||L7|F7L-7LJ-||||L7L---7JL7FJL7|L7||FJF--JF--7LJFJLJLJ||L--7L-7|L-J||L-7|L-7FJ|L7FJLJ|FJ|L-77JJF7JL7|-7|
7.FL7J|...J7.J-LL-L7|JLFF--J||FJL7|||L-J||L7FJ7F-J||L7L-7F-JF-JL7.||FJ|||FJF-7L-7|F7L-7-F-J|F--JF-J|F7FJ|F-J|F-JL7L7||F|||L7L-7|--FFJLF|7LL|
L-L7L-JJ7.LFJ|.LJFLLJJJFJF7FJ|L7FLJ|L7F-JL7|L-7L7FJL-JFFJL7FJF-7L7|||FJ||L7|-L7FJLJL-7L7|F7|L--7L-7|||L7LJF7LJJ|L|FJLJ-L-L7L7.LJJF.||F|F77FJ
7|||L|-||..||-.77LF-F--JFJ|L7L7|F--JFJL--7|L7FJFJL-7F--JF-JL7|7L-JLJ||LLJFJ|F-JL----7|FJLJ||F--JF7|||L7L--J|FJJ-LLJJJ|.L--L7|J.LJF-7FJJLL7||
.-JLFJF7L7.F|7|-7|LFJF-7|FJFJ-LJL7F7L7.F7LJFLJFJF7FJL7F7L--7LJ77LF--JL-7FJFJL-7F7F7FJ|L-7FJ||F7FJ|||L7L7F--JJ|.FLJ-JF--.LJFLJ|.LF-L|JLL|FJJ-
FJ7F7JL|JL-LJ-L7FF-L7|FJ|L7|J-|F-J|L7L-JL7L|7.|FJ||F-J|L7F7L-7JFFJF-7F7||FJJF-J||||L7|F-J|FJLJ|L7||L7|FJL7|J7L77.|LF|JF-7F|JL7JFL7||F|F.L-|.
F-|JJ7.JJ-|F77-LLJJ-LJL-JLLJJJFJF7|FJF---J-||7LJ-LJ|F7L7LJ|F7|F-JFJFJ|||||F-JF7|||L7||L7-||-F-JFJLJ-|||F-J-77|L--L-L|.|-F|.LLJL|.7FF7L7J--F7
LF-.|FL-F-F|7.LFJ-|.|7|L|7J77|L7|LJL7L---7-7|FJJJ.FLJ|FJ.LLJ||L7FJLL7|||||L-7|LJLJ.||L-J-LJ-L--J7|J-||LJJL7|LF7||.LLL7J-F|-J.7-F--FJL7|F7JLF
F-.F||..LFJLL7FJ.F|-7-77FL.JFFLLJ-F7|F---J.||7J|.F7.LLJ-7-L7LJ-|L7-LLJLJ|||F|L----7LJ7F7JLL.LJ.LFJ|.LJJL--.|-F7-77.F7J|FL|JF7JF|LJLJFJL-F.FF
F-F||-7-FLF7JFLJ7F|-JJ.LJJJ|-JJ|JF|LJ|F7LJ-JL77-F7JFJLL7FJ.F7.LL-J7LJJJL||F-JF7F-7L---J|LFJ-.J7JJ7L||..LL-JJ7J|F||FFF.LF.|.|L-LF-JFFLJ-FJ-J|
L7J||.L-JLLJ--7.FL-7||.F|-L7.|.|-FJF7LJ|..7-LFJ.|L7L-||L|7-|-L.|.|L|.FF7LJL7FJLJJ|F----J.|7L|--7.|.LJ-7..|JF7|L-L-7F--L|FJ7|FLL|FJ7|-7.|-|JL
FL7F||.||7L-F--|JF-.-F-JLF7J||L..L7||F-J7J.-.|.FL|J-FLF.|J7JFL-|-7.--F|L---JL7LF-JL--7|JF-7L7.L-FJ7|LJ7F77JJ.|JL|.-LL.|L-L-|-7.||.L7-F-7.|JL
L|7-FLJ--F77|-LJ.|--JJJL.|JLJFJF7-LJLJ-F|7L.FJ-77J..F-|-|J|F7.|LLL-7|LL--7F7FJ.L-7F--J7F7F7-JJ.LJ--FJL|FF-7LF|7.L7FFJ-J|.L.|.LFL7.LJFJFF-|..
.|..|.|7L.L|J.LL-L-7F7-LFJ|.FF.F7.J.|L--|7.|--7|F7FJJ.|L|-L7|--JF|.|-7F|LLJ|L77LFLJ-J.J-.JJ.|||FJF|J..|-LJF-L|7L|-7L|7L7J-JJ.L-J-||-|-LJ|LLF
LJ-F---J.F7|77JFL-||-F7||-J-LJ-FJLJF-7|F|F-JFFJ|.F--7-LJ|LFL|-7||JFF-|LF.JL|FJ7FFJL7J-|7L77F|FFJJ|7..LL-J.777F7F|JF-77J|LFFF77FL|LL-|-.LJJJ|
.|JF|-L|.J7LJJ77|F7|7F--|-|JL7-L7LFFJ-77-J|F-JFJ7JF|J|7|F-|7|-L|||F7.|L7-F|LJJ7-|7.|FLLF7LL-FFJ|.-L--7.LF||F-J.L|F7.L7F7.F7LLJ7J|F|-|J|L|L77
F-7|L77L..F-J7F---7J7||.|-F.LL7.|F7.JL|F7LF|-FF-LF7|-7-|.L--|...FL|L-JFF-J-.|.7F||JF||.FL7L.7||L7JJ-7FF-7|F|-|-LF--J7L7LL7JL||LF|F--LJ|-FJ|7
L|L--JJJ-LLJ-FF.JJLLJ7-L7-JLJJ|-.F7..-|LJ.FJ.|J..L7J.L-.--JL|.-FJ-L-LL.|.JJ-FJ.F|JLLJF-7J7JJJ|7JLJ..FL--JJ-77L7.|JLL-JL-L.LL-|7-L|J.LLL-L-|.
+118
View File
@@ -0,0 +1,118 @@
import math
INPUT_FILE = "input.text"
class Point:
x: int
y: int
def __init__(self, x: int , y: int):
self.x = x
self.y = y
def add(self, other):
return Point(self.x + other.x, self.y + other.y)
def __str__(self) -> str:
return f'P({self.x}, {self.y})'
def __eq__(self, other) -> bool:
return self.x == other.x and self.y == other.y
class PipeMap:
pipe_map: list[str]
start_position: Point
bounds: Point
def __init__(self, map_path: str):
with open(map_path, 'r') as file:
self.pipe_map = file.readlines()
for i in range(0, len(self.pipe_map)):
self.pipe_map[i] = self.pipe_map[i][:-1]
max_y = len(self.pipe_map)
for row in range(0, max_y):
max_x = len(self.pipe_map[row])
col = self.pipe_map[row].find('S')
if col != -1:
self.bounds = Point(max_x, max_y)
self.start_position = Point(row, col)
def in_bounds(self, p: Point) -> bool:
return (p.y < self.bounds.x and p.x < self.bounds.y and p.x >= 0 and p.y >= 0)
directions = {
8 : Point(-1, 0),
9 : Point(-1, 1),
6 : Point(0, 1),
3 : Point(1, 1),
2 : Point(1, 0),
1 : Point(1, -1),
4 : Point(0, -1),
7 : Point(-1, -1)
}
pipe_directions = {
'|' : [Point(-1, 0), Point(1, 0)],
'-' : [Point(0, -1), Point(0, 1)],
'L' : [Point(-1, 0), Point(0, 1)],
'J' : [Point(-1, 0), Point(0, -1)],
'7' : [Point(0, -1), Point(1, 0)],
'F' : [Point(0, 1), Point(1, 0)],
'.' : [],
'S' : True
}
def main():
pipe_map = PipeMap(INPUT_FILE)
# Check around start
next_directions = None
current_pos: Point = pipe_map.start_position
last_pos: Point = current_pos
for d in directions:
new_pos = pipe_map.start_position.add(directions[d])
if pipe_map.in_bounds(new_pos):
if char := pipe_directions[pipe_map.pipe_map[new_pos.x][new_pos.y]]:
# Check if this pipe connects to start somehow
good = False
for d2 in char:
if new_pos.add(d2) == current_pos:
good = True
break
if good:
current_pos = new_pos
next_directions = char
break
steps = 1 # Because current pos isn't at start rn
while current_pos != pipe_map.start_position:
for direction in next_directions:
potential_pos: Point = current_pos.add(direction)
potential_directions: list[Point] = pipe_directions[pipe_map.pipe_map[potential_pos.x][potential_pos.y]]
if pipe_map.in_bounds(potential_pos) and potential_pos != last_pos and potential_directions:
last_pos = current_pos
current_pos = potential_pos
next_directions = potential_directions
steps += 1
break
print(f'Loop finished, start found in {steps} steps')
print(f'Critter is at {math.ceil(steps/2)}')
if __name__ == '__main__':
main()
+5
View File
@@ -0,0 +1,5 @@
..F7.
.FJ|.
SJ.L7
|F--J
LJ...
+140
View File
@@ -0,0 +1,140 @@
F---7-FJ.7--FJ7.-.7-|7F.|7FJ77F7J-|--.FLF|.F-7-F7.F.J77|--|7--|7|-J-F--7-F7.F7-F7F7F-|-|-F777L7|-.FLF|-77F7-FJF|JF--F.77J-L7-FF--7.FFF7FF7.7
|J.F|7F|F7J.J-L-|-|.L7F7JF7-7-LJ|LJ.F7.L|.F|F7FJ7.F7.|F|L7.L7L|-F-|7|L|JFF.F||F777L|-77L-|JF7FJJJLF7LL7|.L77|L7LLLJ.|..LLL7|L7-.-JFFLL-7L-FF
F7L7JLLJL-7FL7|F7-J7.-J.7L7J|.|-JF|FLFF7L-JLL|-F7-F|77|.|L7FJ7JJFJL7JJJFF.FJ||||JFF|LL7F-JF|.LJ7F.|F7F|J7LLL-7||||LFFFF77|-L7LL7F7-JL7|FF7L|
JFL7FJ7.--JJ7L||.LF|7JJFLFLF7.|.LFF7-FJ|-J-77|-F.|J|LLFF-|-7JL7-J7L|JLF7-7F7|LJL-7|L7F7J-FJ|F|7|77|J-F..FJL.|F77-7F|-FJ|J7J.--7.7J.7-|-||LF|
.|LLFJLF--J.FL|-J.F77F-77.L|L7F77F7.F|FJ7.FJ7JF7F7|F-J..7JL|..FF---|J-F|JF|||F--7|-FL7.J-J.|LFFJ-7.L7J|.7-|LJJF7L77LL||.FL--JJ|-L-F|7F-JJ|.|
FL77J|LJFJFF7JJ|J7LJ.|.LF.LL7|||7||-FJL---7.LFJL7J7|FLF7J|F77-J|JJFJ-F-7FFJLJL-7LJ7LLLJ7JLL-7||J|||L-7|---L.FFLLFF---|F--J.|.|L.||FJ7.LLL|-J
|L-J-JJ-F-F-J7F--7.F7F7F7FF-JLJ|FJ|JL7F-7FJ7-L7FJF-7F7||7FFF7JL7.-JLF|FJFJF7F7FJFFL-|.L-7J|FJFJ-JJ7.L|7.|7J-|J.||||LFLJ-F|F7-7|FF-L7|7-.|L7|
7|LF|JLL|.F.F-FJF-7|||LJL7L-7F-JL7L7FJL7LJF77F|||L7||||L-7F||.7F7FLFFJL-JFJLJLJ-F|J.F-FL7.LJ||.|L.F7|.F7.7|FJ||-J|J-J7.7-7---|-LJF|7F|-77-L-
|J.7|LF7JF|F7|L.L7|||L7F-J-F||F7FJFJ|F-JF7||F7||-F|||||F-JFJ|7J|L|F-L-7F7L-7F777.|JF77J-F7FFF777LFFF-F-7-7--LJL|-L|.FF-F.JL|.LFJ-77-F|7F77FJ
JJ--JLJL-J|J.FLF-J|||L||F77FJ||||FJFJ|F7|||LJLJ|JFJ||||L77L7|F--7F7-F7LJ|F7|||F7F7.L|.F-JL7FJL7F---7JL7L7F7.L|F--7L-L7.J-.-7JJ|L-7L.|JFJLJF|
|JFLJF|-77F-7.FL-7LJL-J|||FJFJ|||L7|FJ|LJ|L---7L7|FJ|LJFJ7FJLJF-J||.||F-J|LJ|LJLJ|7-J7L-7FJL7FJ|F--J--L7|||7FFF-FJ|JLL|FLFLJ.-L7FLL-|L|.7.FF
L-77LJJ|FJ|7J.--LL----7|||L7|FJ||FJ||FJF-JF7|FJFJ|L7L7FJF7|F7FJ-FJL-J||F7L-7L7F--J.7|F-7||F7||FJL7L|-F-JLJL-7-|FJLJ77.|7.L7JF|L|7.|---|F--.F
7JFF7||FJJJJL7J7.F-7F-JLJL-JLJFJ||7|LJFJF7|L7L7L7L7|-|L7|LJ|LJJ.L---7|LJL7FJ|||F-77LLL7||LJLJLJF-J-|LL---7F-J|||..JJF-.F7.F-7|L|7F77JFJ-L|FJ
|-|LLJF-7LJ|LL|--L7|L7F--7F--7L-JL7L7FJFJ||FJF|FJFJ|FJFJL-7L-7F-7LF7|L7F7|L7FJ||FJF7FFJLJF-----JF-7F7F-7FJL--777-7L-|JF|77LLLL7JFJ|F-JJ.L|7|
77LJ7F--7J7L7L|.F-J|FJ|F-J|F-JF-7FJFJL7|FJ|L7FJL-JFJ|FJF7|L7FJL7|F|||FJ|LJFJL7||L7|L7L--7L7F-7F7|FJ||L7||F---JL|-L7J.-77J-F.||JF|.L--J.--L7|
L77--L-7J-|7LFF7L-7|L-JL-7||F7|FJL7|F-J|L-JFJL-7F7|FJL7||F-J|F-J|FJLJL7|F7L7-||L7LJFJJF7|FJL7LJLJL7||FJ||L--7F-7-|7.F.|7JL-L7J-7JFFL--JFFL.L
..FFJL7L7-LLF7|L--JL-7F--J|LJ||L7FJ|L7F|F--JF7-LJ|||F-J||L-7LJF-JL--7FJLJ|FJFJL7|F-JF7||||F7|F----J||L7LJF--JL7|F--7LFLJ--||||FLLF7-J.FF-.F|
F-J|7L|-77|-J7|F7F--7|L---JF-JL7|L-JFJFJL-7FJL7F7|||L7|||F7|F-JF7.F7||F7FJL7L7FJ||.FJ||LJ||LJL-7-F7||JL7FJF7F7||L-7|-FJ-7LL77-F7-F|J.F7||F-7
LL7L77L-7-7-LLLJLJF-JL-----JF--JL--7L-JF7FJL7FJ||||L7L7|LJLJ|F7|L7||||||L-7L7||FJL-JFJL-7||F---JFJLJ|F-J|FJLJLJ|F7|L7JF7.7JL7|LF-7.F-FF77JJ.
FF--.7.LJLL7|.|FF-JF--------JF7F7F7|F--J||F-JL-JLJ|FJFJL7F--J|LJFJ|||||L7|L7LJ||F---JF--JLJL--7JL7F-JL7FJ|F----J|||FJFJ|7JF-J-7|JL||LLLJL7-F
7|..L-FFJJFL7FFLL-7|F---77F7FJLJLJ||L7F7LJL--7F---JL7|F7||F--JF-JFJ||||FJF7L7FJ||F--7L---7F---JF-JL7F7|L-JL7F--7|||L-JFJF7L7F7JJ.FJF-7L7J|7|
F7.L7LJJ.FJL|F7L|7LJL7F7L-J|L----7|L7LJL7F7FFJL7F-7||||LJLJF--JF7L7||LJL7|L-JL7|LJF7|F7F-JL-7F7L7F-J|||F---J|F7||LJF--J||L7JLJ.LFLJ|LJ--7JL|
J7-FJ.|7.|J-F7L7LF7F-J||F-7|F7FF-JL7|F--J||FJF-J|FJFJ||F7F7L--7||FJLJF-7|L---7||F-JLJ||L--7FJ|L7|L7FJLJL7F-7LJ|LJF-JF7F7L7L7||--|..|F7|LJ|F|
|F7LF77J.LF-LJJ.FJLJF7|||FJLJL7L--7LJL7F7|||FJF7||FJFJLJ||L---J||L--7|FLJJF--J||L-7F7||FF-JL7|FJL7|L-7F-J|FJF7L-7L7FJLJL7|FJ7|F7|F.|--7-LL|7
|L||F---F.F7LJ-FL---J||||L--7FJF7L|F--J|||||L7||||L7L-7FJL-7F-7||F7FJL7F-7L--7LJF-J|||L7L7F-J|L7FJL-7|L-7|L7||F7|FJ|F---J||F---77-|J|7L-F.L7
-7F77JJF-|7JJ.F-F--77||LJF--JL-JL-J|F7J||||L7|||||FJF7|L7F-JL7|||||L7FJ|FJF-7L7FJF-J||FJFJL7FJFJL7F-J|F-J|FJ|||||L7|L7F7FJ||F--JJ7|.L7|F|.LJ
.L.|L|.F-L|7|FFLL-7L7LJF7L--------7LJL-JLJ|FJ||LJ|L7|LJFJ|F7FJLJ||L-J|.||FJFJFJL-JF-J||FJF-JL7|F-JL7FJ|F7||FJLJLJFJ|FJ||L7LJ|F-7JF777.LFFJL|
J..L.LL|J-J-|7J.LLL7L-7|L---------JF--7F7FJL7|L-7L-JL77L7LJLJF--JL7F-JFJ|L7|FJF---JF7|LJFJF7FJ|L-7FJL7||||||F----JFJL7|L-JF-J|FJ-LF77.|L||.F
.F-.L7.|7.F7.F-7.FLL7FJL----------7L-7LJLJF7|L7FJF-7FJF7|F--7L--7FJL77L7L7|LJFJ|F7FJ|L-7|FJ|L7L--J||FJLJ||LJ|F7F7FJF-JL7F-JF7||F77.JJ-L-|-LJ
FF|-.FFF-JJLLJL|FF--JL7F77F7F7F--7|F-JF7F7|||FJL-JFJL-JLJL-7L---JL7FJF7L7|L-7L7FJ||FJF-J||FJ7L---7L7|F--JL-7LJLJLJFJF-7||F-JLJLJ|-J7|-|F7-L7
|L-JLLJL-J7F||.J|L---7LJL-JLJLJF7LJL7-|||||LJL7-F7|F7F---7FJF7F-7FJL7||FJ|F7|FJL7||L7L-7|||F7F7F7|FJ||F7F7FJF----7L-JFJ|||F---7FJFL7.FFJJ|F7
..|.|F7L77LL77J|F-7F7L--------7|L--7L-JLJ|L--7|FJ||||L7F7LJ|||L7LJF-J||L7LJ||L--J||FJF-JLJ||LJLJ||L7|LJ|||L7L-7F7L--7L-JLJL7F7LJ-7F|-7.|7FLJ
F.L|-|J.F7.|L|-LL7LJL----7F-7FJ|F-7L7F---JF7FJLJFJLJ|FJ|L--7||FJF-JF7||JL-7LJF7F-J|L7L--7FJL7F--J|FJ|F-J||FJF-J|L--7L7F7F--J|L7L|F-J|F|JLJ|J
|F-L.|.-JL7|JF-L|L------7|L7LJFJL7|FJ|F--7||L--7|F7FJL7|F--J||L7|F-J|||F7-L-7|LJF7|FJF7FJ|F7||F7FJL-J|F7|||FJLFJF--J-|||L---JFJ.-JF|JLJ|J.JJ
7-LJFJ7|J.F-.J77FF------JL-JF-J..||L7||F-J||FF7||||L7FJ||F7L||F||L-7|||||F7F||F7|||||||L7|||||||L7F--J||||||F7|FJF77FJ||F-7F7|F7-|FL-F.7-7J|
F7-|7.FF-FJ-|JF7FL--7F7F7F--JF7-FJL-J|||F7||FJ|||||FJ|FJLJ|FJ|FJL7FJ||||||L7|LJLJ|||FJ|FJ||||||L7||F-7|LJLJLJLJL-JL7L7||L7||LJ|L--7J7|FL-|-F
LJ--F7L---JFLJL-JJ-LLJLJLJF--JL7L7F77||LJLJ||JLJ||LJL|L-7.||FJL-7|||LJ||LJFJL7F--J|LJFJL7LJ||||FJ|||L||F----------7L7||L7|||F-JF--JJ-F7LLJ-J
|.LF-JF-F|.|J7.L77|.F--7F7L---7L-J|L7|L7F--JL-7F||LF-JF7L7LJL7F-JLJF--J|F-JF-JL7F7L77L--JJFJ|||L7|LJFJ|L---------7L7||L7|||LJF7L7|7|F|L..L7J
|7F-J7.FFLLJ|F..F7F-JF7LJL---7L---JFJL-JL--7F-JFJL7L7FJL7L-7FJL---7|F-7||F7L7F7LJ|FJF7LF--JFJ||FJL77|FJF---------J|LJL-JLJL7FJL7L--7J-J-7...
.-J|||-|7L|7FJF7||L-7|L-7F--7|FF7F7L--7F7F-JL7FJF7|FJL-7L7FJL7F7F-J||FJ|||L7LJ|F-J|FJL7L7F7L7LJL-7|FJ|FJF--7F7F--7F-----7FFJ|JFJF--J-7.FF--F
J7|FLJF-L7|LF7|LJL7|LJF7LJF-JL-JLJL---J||L7F7|L7|||L7F7|FJL7-LJ|L77LJ|FJ||FJF-J|F7LJF7L7|||FJ|F--J|L7|L-JF7LJLJF7LJF7F-7|FJFJ|L7|JLJF7-FJ7||
||L7.FL|LL-L.LL7F7L7LFJ|F7L------------JL7||||-LJ|L7||||L-7L--7L7L7JFJL7LJL7L7FJ|L7FJL-J||||F7L---JJ||F--JL----SL--JLJJLJ|FJF--J|7FL-.F77.F|
J.||F--7.J7J|-LLJL7L7L7||L---------------JLJ|L--7L7|LJ|L-7L7F-JJL7L7L7FJF--JFJL7L7|L-7F7LJLJ|L-----7LJL7F----------7F7F7|LJ7L---J777.L7LJ--|
L-|-|..L7-|LF.LJ-LL7L7||L--------7F--7F7F77FJF-7L7||F-JF7L7|L-7.FJFJFJ|-L-7FJF-JFJ|F7LJL7F7FJF-7F-7L7F7LJF7F-7F----J|||L7.LJJFLL-7|F7JJ.||.|
L7F-JF-F|7.F77J|-F7L7LJL7-F---7F7LJF7LJLJL7L7|-L7|||L-7|L-J|F-JFJFJFJFJF--J|LL-7|J|||F--J|||FJFJL7L7LJL--JLJFJL-----JLJFJF|..|LL7JJ-LJ-F7FJ-
.F.|FFFF--7||F7LFJL7L7F7|FJF-7LJL7F|L-----JFJL7J||LJF-JL-7FJL7.|FJFL-JLL7F7L-7.|L7|||L---J||L7L7FJ7L7F7F-7F7L----------JJF7-.|L-.||LJ.FLJJ|.
FJF|--JL-7||||L7L-7L7LJ||L-JFL7F7L-JFF7F7F7L-7L7|L7.L-7F7||F7L7|L-7|F---J||F-JFJFJ||L7F---JL-JFJL7F7LJLJJLJL-----7LF7F7F7|||.F-J7LJ7.7|J.L|-
|7JL|..L||LJLJFJF7L7L7|||7F7F-J|L7F--JLJLJL-7L-J|FJF--J||||||FJ|F7|FJF7F7|||FFJFJFJ|FJL---7F--JF-J||F7-F7F------7|FJLJLJLJL-77LLF7L7-L77L.|7
-J7.F----|F7F7L-JL7L7L-JL-JLJF7L7LJF-------7L--7|L7L7F7|||||LJL|||||FJ||||LJFJFJ7L7|L--7F-J|F7FJF-JLJL-JLJF7F--7LJL7F-------J..|JF.77LJ-J-||
L-FFF77|-LJLJL---7|JL-7F7F7F7||FJF7L------7|F7FJ|FJ-LJ||||||7F-J||||L7LJ|L7FJFJ|F7LJLF-JL7-||LJ7L----7F---JLJF7|JF7|||F-----7.F7FF7FJ-|...||
|7|FJL-7-F-7F7F7FJL7F-J|||||LJLJFJL-------JLJ|L7LJLF7FJ|||||FJF7|LJ|FJF-JFJL7L-7|L--7L7F7L7LJF------7|L7F----J|L-JLJL-JF-7F-J-|L-J|JL-J7.F-7
---L7F-J7|FJ||||L-7|L--JLJ||F7F7L7F---------7L-J|F-JLJFJ||||L7|||F-J|FJF7|F-JF7|L--7L-J||FJF7|F----7|L-JL--7F7L--7F7F7FJ.|L-7-|F--J7J|LF-J-F
L7LFJ|F7-|L-JLJL--JL7F7|F7LJ|||L7LJF----7F-7L---7L7F7FJ|||||L||||L-7|L-J||L-7|||F--JF7FJ||FJ|||F---JL------J||LF7LJLJLJF7L7FJFJL-7LF-7LL7FF7
FL-L7|||F|F7F-7F7F-7LJL-J|7FJ||FJF7L---7|L7|F7F-J.|||L-7|||L7|||L7FJL-7FJ|F-J|||L7F7|LJFJLJFJLJL7F7F--7F----JL-JL----7L|L7LJFJF--J7|FJ.LLLLJ
LLF-JLJL-J|LJFJ|||FL-7F-7L7L7LJL-JL----JL7|LJLJF-7LJL7FJ|||FJ||L-J|F--J|FJL7FJ|L7||||F-JF7FJLFF7LJLJF7||F------------JFJFJF7L7|JFLFF|J.L|7L|
F-L---7F7FJF7L7|||F--JL7L7L-JF-7F7F--7F7FJL---7|FJF7FJ||LJ|L7LJJF7|L--7||7F|L7L7||||||F7|||F7FJL-7JFJLJ|L-----7F7LF7F7L7L7|L7|L77FF7|LF.F--|
L77LJLLJ||FJL-J||||F---J||F-7|FLJLJF-J||L7F--7LJL-J|L7|F-7|FJF--JLJF7FJ|L7FJFJFJ|LJ|||||||LJ||F-7L-JF-7|LF7F7FJ|L-JLJL7|FJ|FJ|FJFLF7F7|L.FL|
F-LJFLLFJ|L-7F7|||LJF----JL7||F----JF7|L7|L-7|F---7L7|LJFJ|L7|F7F--J||-L7|L7L7|FJF-J|||LJ|F-JLJ||F-7L7||FJLJLJJ|F--7F-J|L-JL-J|F7F|LJL7FFLJJ
||LFJ-LL7L7FJ|||LJFFJF7F7F7||||F-7F7|||FJL-7||L--7L-JL--J.L-J|||L--7|L-7|L7|FJLJJ|F7|||F-JL7F---J|FJFJLJL------JL7FJL--JF----7LJL-JF7FJJJJJ|
F7|JFF|.L-JL7|LJ7F7L-J||LJ||LJLJFLJLJLJ|FF7LJL---JF-----77L-FJ|L7F7||F7|L7|||JFF-J|||LJ|F--JL----JL7L7LF7F7F-7F7FJL-----J.F-7L-7F7FJLJJJ..|J
|L--|FFF---7||F--JL---J|F-J|F-7F7F-----JFJL7F--7F7|F---7L7|||FJFLJ||||LJ|LJLJ77L-7|LJF7LJF--7LF7F77L-JFJLJLJ.LJLJF7F-7F--7|FJF7LJLJJ|J-7-7..
J|LF-7.L--7LJ||F7F7F-7FJL--JL7|||L---7F7|F-J|F7LJLJ|F7LL7L7-||.J|LLJLJ7.-JJLFF---J|F-JL--JF7L-J|||F--7L----7F7F--JLJFJ|F-J|L-JL-7JJJ|JF7JFJ7
|F-JF-JL|FJF-J||LJLJFJL7.F7F-JLJL-7F7LJLJ|F7||L---7LJL7JL-J7LJ7.FF|-J--7LF-7-L-7F7|L--7F7FJL7F7LJ|L7FJJF---J|LJF7F7FJF|L--JF---7L77FF7JJFFJJ
LL7.LJ|FFJFJF-J|F---JF7|FJ|L-7F7F7LJL---7LJ||L---7L--7L---7-..F-F|.LJ7LL.7J||LLLJ|L--7||LJF7LJ|F7L-JL--JF---JF7||||L--JF--7L-7|L7L-7||J.J.77
J..F|.|LL7|JL-7|L----JLJ|FJF-J|||L-----7L7FJ|F---JF-7|F---J-F|..L|L.|L..F|-||F7F-JF7FJLJF-JL-7LJL--7F---JF---JLJLJL7F7FJF7L-7L-7|F7LJ|JL.7L-
.FF-J.|FJ||J.F||F-----7L||FJF-JLJF--7F7L7|L-JL----JFJ|L-77JL7J--J|FFF7|.L|-|-F-|F-J||F-7L---7|JF7F7LJF7F7L-----7F7-||LJ7|L-7|F-JLJ|F-J|.FL-J
FF|-7.-JFLJ.FLLJL----7L-JLJFJ|F-7L-7LJL-J|F-7F-7F7FJ-L-7L-7J|...F7F7|FL7-JJL7J|LJJ|LJL7L-7F7||FJLJL--JLJL-----7LJL7|L---JF-J|L--7||L7J7--JJ|
L-7--JLLJL|.J.F77F7F-JF7F--JF-JFJF7L----7|L7LJFJ|LJF7F7L--J-L.|.FJ|L77..7J.FF.FLJ.J7.|L-7LJLJ|L7F7F--7F------7|F--J|F-7F7L-7L---J-L-JJ|-7.F7
FL77L||.F--J-FJL-JLJF7|||F--JF7L-JL-----J|FJF7L-JF-J||L-7J.LL7L-JL..L-J7..JFLF-|FJ.|.F7FJF7F7L7LJ||F-J|F--7F-JLJF7LLJFJ||F7L7F7||7||.L--7.-7
JJL7-77.JJLJ.L7F---7|LJLJL---JL---------7|L-JL7-FJF-J|F-J.|.|L-|FL--77|7F7F7||.|7F-F-J|L-JLJL7|F7LJL-7||F7LJF7F7||F-7|FJ||L7LJL-7-7-7-L7J-L|
|.-7L||-J--JFFLJF--J|F--------------7F--JL7F-7L7|FJF7||F-7F-77FJ7J|7JF7JJFL-7J-7F77|F7L------JLJL7JF7LJLJL--JLJLJLJFJLJ-LJFJF7F-J.|||..L-..F
77|J.LF-J|.|LFF7L--7|L---7F7F-7F7F-7LJF7F7LJFL7LJL7|||LJFJ|FJF7|L777JFJ|FL7F|7..L|-LJL-7F------7FJFJL7F-7F-7F------JF7F--7L-J|L7J77F7-|.||FJ
LFL-77|.F7-FF7||JF7LJ7F77LJLJLLJLJ|L--JLJL7F-7L---J|||F-JFJL-J|J.JLJJ|||F|JLJF-JLJ7L7|FLJ7F----JL-JF-JL7LJJLJ|F7F---JLJF-JJF7L-J-7-7F7FL7.FL
FF|7|FL|--F-JLJ|FJL---J|F7F7.F------------J|FJ.F--7||||F7L7F--J7F7F7F-L-77FFJJJJFLL7|JFF-7L-7F7F7F7L-77L-7F7F7|LJF-----JF7FJL7F-77J|-F|7|FJJ
||L|--.JJ|L---7LJF7F--7LJLJL7L---------7FF7|L7FJF-J||||||.|L--77.|LL7-J-7--|||-F|||-.L|L7|F7LJLJ|||F7L-77LJLJLJF7|7F7-F7|||F-J|FJF7LF-|F7J7.
-LJ||.LL7F|JLLL--JLJ7FJF-7F7L7F--------JFJLJFJL7|JFJLJLJL-JF--JJ7L-7J-|-FJ..|7.-|F|77|F-J|||F7F-J||||F7L7F--7F7||L-JL-JLJLJL--JL-JL7|LJ-J.L7
|F-|-J.FF7L7F||F7F---JFJFLJ|FJL7F--7F7F7|F--JF7|L-JF--7F7F-JJJL-JF|--.7L|.7FL--.L|FF-7L-7LJLJ|L--JLJLJL7|L-7|||||F--------7F----7F-J-FLJ-7-|
F7||-F-F-JJF7-FJLJF--7L7F--JL7JLJF7LJLJ|||-F7|LJF-7L-7|||L-7.7JFLFJ-7FJ7|7L7--LF7F7L7L-7L---7|F7F--7F--JL--JLJLJLJF---7LF7LJF7F7||F77JF-7-F7
7JF|.L--7J7F7-L--7|F-JFJL--7FJF7F||F---J|L7|LJF-JFL--JLJL--JF7.|J|.|F7F7JFJL|.F||||-|F-J|F--JLJ||F7|L--7F---7F7F7FL-7FJFJL--JLJ|LJ||F7FL7JJ|
..F--77JJFFFJJ|.LLJL--JF---JL-JL-JLJF7F-JFJ|F7L--------7F7F7|L7JFLFLJL7L-F--LF-J|||FJL-7FJF7F-7|LJ||F7JLJF--J|LJL7F-JL-JF7F7F-7L--JLJL7FJJF-
L7|L|LJ.77F77LF7F---7F7L--7F7F-7F---J||F7|J||L-------7FJ|LJLJFJFF-L7JF7FL|.LLL-7LJ|L--7|L-JLJL||F7||||F--JF7FJF7FJ|F---7|||LJF|F-7F--7|-J.LJ
.F|7|L-F--|L7FJ|L--7||L--7LJLJ7LJF---J||LJFJL-------7LJFJF7F-J.L77LJ.-77-LJ..|7L7FJF--JL-7F7JFJLJLJ|||L---JLJFJLJ-||F-7|||L--7LJ-LJJLLJJF7-F
FF.JJ7|LJ-L7|L7|F7FJ||F-7L-------JF7|FJL--JF-7F--7F7L7FJFJLJJF7JJL|J77.F7JFFF-7FJL7L----7LJL7L----7||L-------J|F7FJLJFJLJL7F7|.F7F7|.||.---J
FJ-|7F-7F|L|L-J|||L7|LJFJF7F7F7F-7|L-JF7F-7|FJL-7LJL-JL7L7F--JL-7.77F7-|J|FJ|FJL7FJF---7L--7L-7F7FJLJF-7F7F-7F7|||F--JF--7LJ|L-JLJL7-777-|-7
|J-77|J|F7JL7F7LJL-JL7.L-JLJLJLJJLJF--JLJ|LJL7F7L7F7-F-JFJL7F---JF7FJL--7F7FJ|F7|L7L--7|F7FJF7LJLJF-7|FJ|||FJ||||||.F7L7FJF7L7F7F7FJ.J..F||F
|LFJFJ7LF--FJ||F7F-7FJF7F7F-7F-----JF7F7F-7F7||L7LJL7L7FJF7|L-7F7|LJF7F-J||L7LJLJFJF7J|LJLJFJ|F7F7|.LJL-JLJL-JLJLJL-JL7|L-JL7LJ||LJLF.FF7LL|
|-7F|JF.LL.L7|LJLJFJL-JLJ|L7|L------JLJ|L7LJ|LJLL---JFJL7|||F-J|||F-JLJF7||LL--7FJFJL7|F7F7L7||||LJF7F7F7F7F7F-7F7F7F7LJF7F7L7FJL7F--7-.|7|F
J||FF7..-7FLLJF---JF----7L-JL----------JFJF7L------7FL7FJ||||F7|LJL-7F7||||F7F-JL7L7FJLJLJ|FJLJLJ.FJLJLJLJLJ||F|||||||F7|LJ|FJL-7LJF-JFF7JF-
J-|L--|7LL7J|-L----JF--7L------------7F-JFJL7F-7F--JF7|L7|LJ||||F---J|||LJ|||L7F7L7|L-7F7|LJF-----JF-7F----7|L7LJ||LJ|||L-7||F-7|F7|7.LJJ7||
||JLJ7|F.|J.F-F-----JF7L-------------J|F-JF7LJJ||F-7|||FJ|F-J|||L7F-7||L7FJ||-||L7||F-J||F7JL-7F7F7|FJ|LF--JL7L-7|L-7LJ|F-J|LJFJ|||L-7.FJJ7L
FF7-7|F7FF77.FL--7F7FJL7F------7F--7F7|L--JL--7||L7|||||F|L7FJ||FJ|FJ|L-J|FJL7||FJ||L-7|LJL--7LJLJLJL7L7L-7F7L--JL--JF7LJF7L7FJL|||F-J-F|FFJ
F-J-7-7||-L7-F--7LJ|L-7||F-----J|F7LJLJF--7F--J||FJ||||L7|FJL7LJL7|L-JF--JL7FJLJL7LJF-JL---7FJLF-7F--JFJF-J|L--------JL--JL7|L-7LJLJJJJLL-7|
77F.|LFJJL-|JL-7|F7L--J||L------J||F7F7L-7LJF77||L7||LJFJ||F7|F--J|F--JF-7||L--77L-7L7F-7F7||F-JFJL--7L7L--JF--------------JL--J-|JJ|-FJJ.FJ
|L-.LF-J7JF7-F-JLJ|F--7LJF--7F7|FJLJ|||F7L7-|L7LJFJLJF7|FJ||LJL---JL--7L7|FJF--JF--JFJL7LJ||||F-J|F-7L-JF---JF7F----7|F7LF--7.F7F|J.|7L77-L7
J-J7.LJL--F--JF--7|L7FJF7L-7|||FJF-7LJLJL7L7|FJF7|F--J||L7||F---------JFJ|L7|LF7L--7|F7L-7LJ||L--7L7L-7|L----JLJF---JFJL-JF-JFJL7--F7|LJL77|
L-J777-F|LL---JF-J|FJL7||F-JLJLJFJ.L----7L-J|L7|LJL--7LJJ||||F--7F7.F7FL7|FJL7||F7FJLJ|F-JF7|L-7FJFJF7L----7F---JF7JFJF-7FJF7L7FJLFJ|7JLFFFL
FFJFFJ7-F.|FF--JF7|L7FJ||L---7F7|F7F----JJF7L7|L7F---JF-7||||L7FJ|L7||F7|||F-J|LJ|L-7FJL--J||F7||JL-JL----7|L----JL7|FJ|LJ7||FJL-7L7|--77FJ.
FJ-LL.L7F--7|F--J||FJ|.|L----J|LJ|LJ|F7-F7||FJ|FJL-7F7L7LJLJL7|L7L7LJ||||||L-7|F7|F7||F7F--J||||L7F-7F7F7FJL7F--7F7LJL77F-7|||F--J-||J-JF7L.
|F-F7FFLL7|F||F--J|L7L7L-----7L7FJF--JL7|||LJFJL7F-J|L7L7F-7FJL7|FJF-J|LJLJF-JLJ||||||||L7F7||||FJL7LJLJLJF-JL7.|||F-7L7L7LJLJ|F7F7||J|FL7J7
F7J.L7|-JLLLLJL7F7L-JFJF7F7F-JFJL-JF---J|||F7L--J|F7|FJ|LJFJ|7FJ||FJF-JF---JF-7FJ||||LJ|FLJ|||LJL7FJF7F--7L--7L7LJLJ.L7L7|F---J||||||F-7.7J|
LJ-F-FJJ--J-L|LLJL7F7L-J||||F7|F---JF7F7||LJL-7F7||||L7-F7L7L7L7|||J|F-J-F7FJFJL7|||L7FJF7FJ||F--JL-JLJF7L--7L7L-----7L7LJL-7F7|||||||FJ7L7.
LFFF7JF-7J|-FJ-F--J||F-7LJ|LJLJL----JLJLJ|F7F7||LJ|LJFJFJ|.L7L7||||FJL7F7|||FJF-J||L7|L7||L7LJ|.F-7-F--JL---JFJF-7F--J|L7F--J|||LJLJLJL-7L||
.|J.77|F7F-.|--L-7FJLJJL-7|F7F7F--------7||LJ|||F7L7FJ-|FJF7L7LJ|||L-7LJ|||||FL-7||FJ|FJ||-L-7L7L7L7L----7.F7L-J7LJLF7-FJL---JLJF7F-7F7FJ.L-
F.|7|-F|F--|.L|F-J|F7F-7FJLJLJLJF---7F-7LJL-7||LJ|FJ|F7||FJL7L-7|||F-JF-J|||L7F7|||L7|L7||F7FJFJFJFJLF--7L-JL-------JL7L-7F---7FJLJ.LJLJ|FF|
|7L-J.LJ7J||-FFJF-J||L7|L-7F7F7FJF--J|FJF7F7|||F-J|FJ||||L7FJF7||||L7FJF7||L7||||||FJL7|||||L7|LL7|F7L7FJF-------7F7F7L7-||F-7LJF-7F77LL|7-F
FFL7|FFJLF|.|L|FJF-JL-JL--J||||||L--7||FJ|||||||F-J|FJ||L7|L7|LJLJL7|L7|||L7|||||||L7FJ||||L7||F7||||FJ|FJF----7.LJ||L-JFJLJFJ|FJFJ||7LL|J.7
F|L|-|7J-J|FL7LJ7L--------7|LJLJF7F7|||L7||||||||F-J|-||FJL7|L-7F--J|FJ|LJFJ||||||L7||FJ|||FJ|LJ|||||L7|L-JF--7L--7|L7F7|F-7L--JFJL|L7F-LJ-F
F--..L7...F7L|J.FF---7F7F-J|F---JLJLJ||FJ||LJ|||||F7L7LJL7FJ|F7|L7F7|L7L7LL-J||||L7|LJ|FJ||L7L-7LJ|||FJ|F-7L-7L---JL7LJ|||FJF7F7L7||FJ-7|7.|
7J|F7JL77-FJJ|.-JL--7LJLJF7|L------7FJ|L7|L7FJ|LJ||L7L-7F|L7||||FJ|||FJFJF--7LJ|L7|L-7|L7||FJF7L7L|||L7|L7L-7L-----7|F7|||L7|LJL7L-J|J-L.F-F
7-J-7-FF-7LJ.F-F7JF-JF7F7|LJ-F-7F7FJL7L7||FJL7L77LJFJF7L7L7|LJ|||FJLJL7L-JF7L7FJFJL7FJ|FJ||L7||FJFJ|L7||FJF-JF7F---JLJLJ|L7|L--7L7F7L-7-FJFF
L|.|LFFJ|F|JF|LLF-JF7|||LJLF7L7LJLJF7L7LJLJF7|FJF--JFJ|FJFJL-7||||F---JF-7||FJL7L-7||FJL7||FJ|||-L7L7LJ||7|F-J||LF7F7F7J|FJL7F-JF||L--J7F7..
FL|F-J.FF-||-77JL-7|LJLJ7F-J|FJF7F7|L7L---7|||L7L7F7L7||FJF-7|||LJL7F7FJFJ|||F7|F-JLJ|F7|||L-JLJF-JFJF-JL7LJF-JL-JLJ||L7LJF7|L--7|L-77-7|.F7
7J.FLF--JLL|F7-F-7LJF7-F7L-7LJFJLJLJFJF7F7LJ|L7L7LJ|FJ||L7L7LJ||7F-J||L7|FJ|LJ||L---7||LJ|L-7F--JF7L7L-7FJF-JF--7F-7LJFJF7||L---JL7FJ7|||-||
|FLL7J||L|FJ7|.L7L--JL-JL-7|F7L7F--7L7||||F7L7|FJF-JL7LJ7L7L7FJL7|F7||FJ|L7|F7|L7F7FJLJF-JF-JL7F7||FJ7FJL7|F-JF-J|7|F-J7|LJL---7JLLJ..FLL--L
JJ|.|F|FFL|FLL-LL--------7|LJL7LJF-J-LJ||||L7||L7L7F7L-7F7|FJL7FJLJ|||||L7||||L7||LJF7LL--JF7-||LJ|L-7L7FJ|L-7|F7L7||F--JF-7F7FJJ|J-F7--J777
FLJ.LLJJ7L|7.LF7F7F------JL---JF7L-7|F-J|LJF|||FJFJ||F7||LJL7FJ|F--J||L-7LJLJ|FJ|L--JL7F---J|FJL-7|F7|-LJFJF7||||FJ|LJF7FJ||||L7FL-F|L|F7L-L
LJL|.FL.|LL.FF|LJLJF7F7F7F---7FJL-7|FJF7L--7|||L7|FJ||LJ|F7FJL7|L--7||F7L7F--JL7L7F-7FJL7F-7LJF--J|||L--7L7|LJ|||L7|F7||L-7LJL-J-||FJFJL-JLL
|J-|JJ|-F7|LFFJF7F7|||||||F7F|L--7|||FJ|F--J||L7||L7|L7FJ|||.FJ|F--J||||FJL--7FJFJL7LJ.FJL7|F7L--7||L7F-JL|L-7||L7||||||F7L----7|L|.F||F7||J
|.|F7JL7|FFJFJFJLJLJ||LJLJ|L-JF7FJLJ||F|L--7||FJ|L7||FJ|FJ|L7|FJL--7|LJ||F7F7||JL-7L-7FJF-J||L7F-J||F|L--7|F7|||FJ|||LJ|||F---7|J.-7.F7.F7|.
F7-LL.LJLJL7L-JF7F--J|F---JF7FJ||F7-LJFJF-7||||FJFLJ||-|L7L7|LJF---JL-7|||LJLJL7F7|F7||FJ.FJL7|L7FJ|FJF--JLJ||||L7||L-7LJ|L--7LJJ7LL7L7FFJ-J
.|JJL7.7|FFLF--JLJF7FJL-7F-J||L||||F--JFJJ||||||F---JL7L7L7||F7|F-7F7FJ||L-7F7FJ||LJLJ||F-JF-JL7||FJL7L----7||||FJ||F-JF-JF-7L-7.|7.|-|FJ.L.
|..FFLLJF7JJ|F-7F-J|L7F-J|F-JL7LJ|LJF7FJF-J|LJ||L7F7F7L7L-JLJ|LJ|FJ||L7|L7LLJ|L-JL7F-7|||F7|F--J|LJF7L7F7F-J||LJL7||L-7|F7L7|F-J7LF.|.|7|J|L
|J77L-JL|L|7LJLLJFFJFJL--JL7F7L7FJF7||L7|F7L-7LJ-||||L7L---7JL7FJL7|L7||FJF--JF--7LJFJLJLJ||L--7L-7|L-J||L-7|L-7FJ|L7FJLJ|FJ|L-77JJF7JL7|-7|
7.FL7J|...J7.J-LL-L7|JLFF--J||FJL7|||L-J||L7FJ7F-J||L7L-7F-JF-JL7.||FJ|||FJF-7L-7|F7L-7-F-J|F--JF-J|F7FJ|F-J|F-JL7L7||F|||L7L-7|--FFJLF|7LL|
L-L7L-JJ7.LFJ|.LJFLLJJJFJF7FJ|L7FLJ|L7F-JL7|L-7L7FJL-JFFJL7FJF-7L7|||FJ||L7|-L7FJLJL-7L7|F7|L--7L-7|||L7LJF7LJJ|L|FJLJ-L-L7L7.LJJF.||F|F77FJ
7|||L|-||..||-.77LF-F--JFJ|L7L7|F--JFJL--7|L7FJFJL-7F--JF-JL7|7L-JLJ||LLJFJ|F-JL----7|FJLJ||F--JF7|||L7L--J|FJJ-LLJJJ|.L--L7|J.LJF-7FJJLL7||
.-JLFJF7L7.F|7|-7|LFJF-7|FJFJ-LJL7F7L7.F7LJFLJFJF7FJL7F7L--7LJ77LF--JL-7FJFJL-7F7F7FJ|L-7FJ||F7FJ|||L7L7F--JJ|.FLJ-JF--.LJFLJ|.LF-L|JLL|FJJ-
FJ7F7JL|JL-LJ-L7FF-L7|FJ|L7|J-|F-J|L7L-JL7L|7.|FJ||F-J|L7F7L-7JFFJF-7F7||FJJF-J||||L7|F-J|FJLJ|L7||L7|FJL7|J7L77.|LF|JF-7F|JL7JFL7||F|F.L-|.
F-|JJ7.JJ-|F77-LLJJ-LJL-JLLJJJFJF7|FJF---J-||7LJ-LJ|F7L7LJ|F7|F-JFJFJ|||||F-JF7|||L7||L7-||-F-JFJLJ-|||F-J-77|L--L-L|.|-F|.LLJL|.7FF7L7J--F7
LF-.|FL-F-F|7.LFJ-|.|7|L|7J77|L7|LJL7L---7-7|FJJJ.FLJ|FJ.LLJ||L7FJLL7|||||L-7|LJLJ.||L-J-LJ-L--J7|J-||LJJL7|LF7||.LLL7J-F|-J.7-F--FJL7|F7JLF
F-.F||..LFJLL7FJ.F|-7-77FL.JFFLLJ-F7|F---J.||7J|.F7.LLJ-7-L7LJ-|L7-LLJLJ|||F|L----7LJ7F7JLL.LJ.LFJ|.LJJL--.|-F7-77.F7J|FL|JF7JF|LJLJFJL-F.FF
F-F||-7-FLF7JFLJ7F|-JJ.LJJJ|-JJ|JF|LJ|F7LJ-JL77-F7JFJLL7FJ.F7.LL-J7LJJJL||F-JF7F-7L---J|LFJ-.J7JJ7L||..LL-JJ7J|F||FFF.LF.|.|L-LF-JFFLJ-FJ-J|
L7J||.L-JLLJ--7.FL-7||.F|-L7.|.|-FJF7LJ|..7-LFJ.|L7L-||L|7-|-L.|.|L|.FF7LJL7FJLJJ|F----J.|7L|--7.|.LJ-7..|JF7|L-L-7F--L|FJ7|FLL|FJ7|-7.|-|JL
FL7F||.||7L-F--|JF-.-F-JLF7J||L..L7||F-J7J.-.|.FL|J-FLF.|J7JFL-|-7.--F|L---JL7LF-JL--7|JF-7L7.L-FJ7|LJ7F77JJ.|JL|.-LL.|L-L-|-7.||.L7-F-7.|JL
L|7-FLJ--F77|-LJ.|--JJJL.|JLJFJF7-LJLJ-F|7L.FJ-77J..F-|-|J|F7.|LLL-7|LL--7F7FJ.L-7F--J7F7F7-JJ.LJ--FJL|FF-7LF|7.L7FFJ-J|.L.|.LFL7.LJFJFF-|..
.|..|.|7L.L|J.LL-L-7F7-LFJ|.FF.F7.J.|L--|7.|--7|F7FJJ.|L|-L7|--JF|.|-7F|LLJ|L77LFLJ-J.J-.JJ.|||FJF|J..|-LJF-L|7L|-7L|7L7J-JJ.L-J-||-|-LJ|LLF
LJ-F---J.F7|77JFL-||-F7||-J-LJ-FJLJF-7|F|F-JFFJ|.F--7-LJ|LFL|-7||JFF-|LF.JL|FJ7FFJL7J-|7L77F|FFJJ|7..LL-J.777F7F|JF-77J|LFFF77FL|LL-|-.LJJJ|
.|JF|-L|.J7LJJ77|F7|7F--|-|JL7-L7LFFJ-77-J|F-JFJ7JF|J|7|F-|7|-L|||F7.|L7-F|LJJ7-|7.|FLLF7LL-FFJ|.-L--7.LF||F-J.L|F7.L7F7.F7LLJ7J|F|-|J|L|L77
F-7|L77L..F-J7F---7J7||.|-F.LL7.|F7.JL|F7LF|-FF-LF7|-7-|.L--|...FL|L-JFF-J-.|.7F||JF||.FL7L.7||L7JJ-7FF-7|F|-|-LF--J7L7LL7JL||LF|F--LJ|-FJ|7
L|L--JJJ-LLJ-FF.JJLLJ7-L7-JLJJ|-.F7..-|LJ.FJ.|J..L7J.L-.--JL|.-FJ-L-LL.|.JJ-FJ.F|JLLJF-7J7JJJ|7JLJ..FL--JJ-77L7.|JLL-JL-L.LL-|7-L|J.LLL-L-|.
+160
View File
@@ -0,0 +1,160 @@
import math
INPUT_FILE = "input.text"
class Point:
x: int
y: int
def __init__(self, x: int , y: int):
self.x = x
self.y = y
def add(self, other):
return Point(self.x + other.x, self.y + other.y)
def to_tuple(self) -> tuple:
return (self.x, self.y)
def __str__(self) -> str:
return f'P({self.x}, {self.y})'
def __eq__(self, other) -> bool:
return self.x == other.x and self.y == other.y
class PipeMap:
pipe_map: list[str]
start_position: Point
bounds: Point
def __init__(self, map_path: str):
with open(map_path, 'r') as file:
self.pipe_map = file.readlines()
for i in range(0, len(self.pipe_map)):
self.pipe_map[i] = self.pipe_map[i][:-1]
max_y = len(self.pipe_map)
for row in range(0, max_y):
max_x = len(self.pipe_map[row])
col = self.pipe_map[row].find('S')
if col != -1:
self.bounds = Point(max_x, max_y)
self.start_position = Point(row, col)
def in_bounds(self, p: Point) -> bool:
return (p.y < self.bounds.x and p.x < self.bounds.y and p.x >= 0 and p.y >= 0)
directions = {
8 : Point(-1, 0),
9 : Point(-1, 1),
6 : Point(0, 1),
3 : Point(1, 1),
2 : Point(1, 0),
1 : Point(1, -1),
4 : Point(0, -1),
7 : Point(-1, -1)
}
pipe_directions = {
'|' : [Point(-1, 0), Point(1, 0)],
'-' : [Point(0, -1), Point(0, 1)],
'L' : [Point(-1, 0), Point(0, 1)],
'J' : [Point(-1, 0), Point(0, -1)],
'7' : [Point(0, -1), Point(1, 0)],
'F' : [Point(0, 1), Point(1, 0)],
'.' : [],
'S' : True
}
def shoelace(points: list[Point]) -> int:
A = 0
n = len(points)
for i in range(0, n):
x1, y1 = points[i].to_tuple()
if not i + 1 >= n:
x2, y2 = points[i + 1].to_tuple()
else:
x2, y2 = points[0].to_tuple()
A += (x1 * y2) - (x2 * y1)
A *= 0.5
return abs(A)
def main():
pipe_map = PipeMap(INPUT_FILE)
# Check around start
next_directions = None
current_pos: Point = pipe_map.start_position
last_pos: Point = current_pos
boundaries: list[Point] = [current_pos]
for d in directions:
new_pos = pipe_map.start_position.add(directions[d])
if pipe_map.in_bounds(new_pos):
if char := pipe_directions[pipe_map.pipe_map[new_pos.x][new_pos.y]]:
# Check if this pipe connects to start somehow
good = False
for d2 in char:
if new_pos.add(d2) == current_pos:
good = True
break
if good:
current_pos = new_pos
next_directions = char
break
steps = 1 # Because current pos isn't at start rn
while current_pos != pipe_map.start_position:
for direction in next_directions:
potential_pos: Point = current_pos.add(direction)
potential_directions: list[Point] = pipe_directions[pipe_map.pipe_map[potential_pos.x][potential_pos.y]]
if pipe_map.in_bounds(potential_pos) and potential_pos != last_pos and potential_directions:
boundaries.append(current_pos)
last_pos = current_pos
current_pos = potential_pos
next_directions = potential_directions
steps += 1
break
"""
I did actually look at the internet for this one. I found 'how to find area of polygon'
and came up with Pick's theorem & the Shoelace formula
So basically I find the area with the Shoelace formula (A) and then using Pick's theorem find the number
of interior points (i) with
i = A - b/2 - 1
where b is boundary points
"""
A = shoelace(boundaries)
print(f'Area: {A}')
interior = A - (len(boundaries) / 2) + 1
print(f'Interior Points: {interior}')
print(f'Loop finished, start found in {steps} steps')
print(f'Critter is at {math.ceil(steps/2)}')
if __name__ == '__main__':
main()
+10
View File
@@ -0,0 +1,10 @@
FF7FSF7F7F7F7F7F---7
L|LJ||||||||||||F--J
FL-7LJLJ||||||LJL-77
F--JF--7||LJLJ7F7FJ-
L---JF-JLJ.||-FJLJJ7
|F|F-JF---7F7-L7L|7|
|FFJF7L7F-JF7|JL---7
7-L-JL7||F7|L7F-7F7|
L.L7LFJ|||||FJL7||LJ
L7JLJL-JLJLJL--JLJ.L
+140
View File
@@ -0,0 +1,140 @@
.......#.....#.....................#.............#.................#.........................#..............................................
#.....................#.......#.................................................................................#.......#...................
.......................................................................#.........................#..................................#.......
................................................................#..............#..............................................#.............
.........................................#............................................................#....................................#
.................#..................................................#.......................................................................
...........................#...............................................................................#................................
....#.......#...........................................#..........................#.............................#..........................
....................#.............#........#................................................................................................
...................................................#...................................................#...................#................
.........................#........................................#..................................................#......................
......#..........#...........................................#...........#............#.....................................................
......................................#..........................................#.........................#.....................#..........
.#...................#..................................#.......................................#...........................................
............#.................................#.....................#.......................................................................
............................................................................................................................................
..............................#.....................................................................................#..................#....
....................................................................................#........#......#.......................................
.........................#.........................#............#...........................................#...............................
.#......#.....#.......................#.................#........................................................#.....#....................
...........................................................................#.................................................#..............
...............................................#.......................................#...............#..........................#.........
......................#..................#..................................................................................................
..........................................................................................................................#.................
......#...........................#.........................................................#........................#......................
..............................................................................................................................#.............
..#.......................#.................#............................................................................................#..
..................#....................................................#................#...................................................
....................................................#.....#....................#............................................................
...............................#............................................................................................................
..............................................#...............#..........................................................#...........#......
.#.........#........................#..................................................................#....................................
..........................................................................#.......................#........................................#
...................#......................................................................#.................................................
.............................................................................................................................#..............
.....#......................................................................................................................................
........................................................#........................#..........................................................
.............................#...............#.....................#.....#............#..................#..............................#...
............................................................................................#......#...........#............................
.........................#........#...................................................................................#.....................
...........................................................................................................................................#
.....................................................#.....#.................................................................#..............
#.........................................................................................................#.......................#.........
................#...........................................................#.....................#.........................................
..............................#..............#...................................#.......#...........................#......................
........#................#.........#............................#............................................#.............#.........#......
............................................................................................................................................
.......................................................#...............#.............................#...........................#..........
.............#.................................#............................................................................................
............................................................................................................................................
..#.............................................................................#...........................................#...........#...
............................................................................................................................................
......................................#..........................................................#................#.........................
............................#................#......#......................#...........#....................................................
............................................................................................................................................
....................................................................................................#................#..........#...........
.#............#...................#...............................#........................................#.............................#..
.........#...............................................................#..................................................................
.......................#....................#........#...........................................#..........................................
............................................................#.....................................................#.........................
..............................#.......................................................................#...................#.......#.........
............#.......................#...................#............................#......................................................
...................................................#......................................#..............................................#..
.#................#...................................................#........................#............................................
......#....................................................................#................................#...............................
...............................#....................................................................................#.......................
.........................#.....................#......#.............................................#.................................#.....
............................................................................................................................................
...............#.....................#....................................................#.................................................
..................................................................................................................#.........................
....#......#.....................................#..............................#............................#............#.....#...........
....................#.............................................#....................#.........#.......................................#..
.........................................................#..............#.............................#.....................................
............................#...........#...........................................................................#.......................
............................................................................................................................................
#..................................#...............................................................#..........#.............................
.......#......................................................................................#.................................#.......#...
.....................#....................#...............................#.....#......................................#....................
................................#..........................#......#....................#..........................#.........................
..............#...................................#........................................................................#...............#
....#....................................................................................................#..................................
.......................#....................................................................................................................
......................................#................................#..................#.................................................
.....................................................#............................................#...............................#.........
............................................................................................................................................
............................................................................................................................................
....#.................#..................................#.........................#..........................#.............................
.............#........................................................................................#..................#..................
......................................#............................................................................#........................
.........#....................................................#.........#............................................................#......
.............................................................................................#..............................................
.............................#...........#............................................................................#.....................
#..................#................................................#....................#.......................................#.........#
...................................................................................................#......#.................................
...........#.............................................#...........................#......................................................
....................................#.......................................................................................................
..................................................#..........#.........#......................#.....................#.......................
.#......#....................................#..............................................................#...............................
.............................#.............................................#................................................................
.......................#...............................................................................#....................#...............
....................................................#.....................................#...........................................#.....
................#.....................#..................#.................................................................................#
...#.....#..........................................................#................#......................................................
.............................................#...............#................................#......#......................................
...............................#...............................................#............................................................
.............................................................................................................................#.........#....
.....................#................................................#.................................................#...................
...............#.........................#.......................#..................#.......................................................
.....#......................................................................................................#.......................#.......
....................................#.................#.........................#..................#........................................
........................................................................................................................................#...
.........#..............#.....................................#........................................#.....................#..............
...............................................#...................#........................................................................
......................................#.............#..................................#.....#.......................#......................
............#.....#...............................................................................#.........................................
...#...................................................................................................................................#....
.......................#.........................#..........................................................................................
.........................................................#...........#.........................#........#..........#.............#..........
............................#..............#....................#........................................................#..................
.......#.................................................................#................#.................................................
.................#..................................................................................#........................#...........#..
...................................................#.......#................................................................................
.........................................#......................................#......................................#....................
....................................#...........................................................................#...........................
..............................#.............................................................#...........#.......................#......#....
.........#...............................................#..............#...................................................................
........................#....................#.....................................#........................................................
#...........................................................................................................................................
............................#......................................................................#.......#................................
......................................#.....................................................................................................
.....#............#.........................................#..........................#..........................................#.........
...........................................#......................#..............................................#..........................
..............#..............................................................................#............................#.............#...
..#......#...........................................#..............................#..................#.....#..............................
....................#..........#.....#...............................#......................................................................
............................................................................................................................................
.................................................#..........................................................................................
.............#..........#...............................#...............#.............#..........#.........#........#.......................
............................................#................#.................#............................................................
....................................#....................................................................................#.............#....
+147
View File
@@ -0,0 +1,147 @@
import math
import copy
INPUT_FILE = "test.text"
class Point:
x: int
y: int
def __init__(self, x: int , y: int):
self.x = x
self.y = y
def add(self, other):
return Point(self.x + other.x, self.y + other.y)
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Point(self.x - other.x, self.y - other.x)
def __str__(self) -> str:
return f'P({self.x}, {self.y})'
def __eq__(self, other) -> bool:
return self.x == other.x and self.y == other.y
def _length(self) -> float:
return math.sqrt(self.x ** 2 + self.y ** 2)
def normalise(self) -> None:
self.x /= self._length()
self.y /= self._length()
def distance(p1: Point, p2: Point) -> int:
return math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2)
def main():
with open(INPUT_FILE, 'r') as file:
universe = file.readlines()
# Shave off the newlines
for i in range(0, len(universe)):
# print(universe[i])
universe[i] = universe[i][:-1]
# print(universe[i])
expanded_universe: list[str] = universe.copy()
added_rows = 0
# Expand it!
for y in range(0, len(universe)):
row: str = universe[y]
# If no galaxies found in row
if row.find('#') == -1:
expanded_universe.insert(y + added_rows, row)
added_rows += 1
# for r in expanded_universe:
# print(r)
# print()
row_n = len(expanded_universe)
added_cols = 0
for column_i in range(0, len(expanded_universe[0])):
no_galaxy = True
for y in range(0, row_n):
if expanded_universe[y][column_i + added_cols] == '#':
no_galaxy = False
break
if no_galaxy:
for y in range(0, row_n):
l = list(expanded_universe[y])
l.insert(column_i + added_cols, '.')
expanded_universe[y] = ''.join(l)
added_cols += 1
# for r in expanded_universe:
# print(r)
# now find lengths or something
# oh but first find galaxies
galaxies: list[Point] = []
universe = expanded_universe
n_y = len(universe)
for y in range(0, n_y):
row = universe[y]
for x in range(0, len(row)):
if row[x] == '#':
galaxies.append(Point(x, y))
for p in galaxies:
print(p)
# ok now find lengths or something
total = 0
g1_i = 0
for g1 in galaxies:
# print(g1)
g2_i = 0
for g2 in galaxies:
steps = 0
t = copy.copy(g1)
# Get steps
while t != g2:
if t.x < g2.x:
t.x += 1
steps += 1
elif t.x > g2.x:
t.x -= 1
steps += 1
if t.y < g2.y:
t.y += 1
steps += 1
elif t.y > g2.y:
t.y -= 1
steps += 1
# if g1 == Point(5, 11):
# print(f't {t} g2 {g2}')
total += steps
# print(f'{steps} from g{g1} to g{g2}')
g2_i += 1
g1_i += 1
print(f'Sum is {total/2}')
if __name__ == '__main__':
main()
+10
View File
@@ -0,0 +1,10 @@
...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....
+140
View File
@@ -0,0 +1,140 @@
.......#.....#.....................#.............#.................#.........................#..............................................
#.....................#.......#.................................................................................#.......#...................
.......................................................................#.........................#..................................#.......
................................................................#..............#..............................................#.............
.........................................#............................................................#....................................#
.................#..................................................#.......................................................................
...........................#...............................................................................#................................
....#.......#...........................................#..........................#.............................#..........................
....................#.............#........#................................................................................................
...................................................#...................................................#...................#................
.........................#........................................#..................................................#......................
......#..........#...........................................#...........#............#.....................................................
......................................#..........................................#.........................#.....................#..........
.#...................#..................................#.......................................#...........................................
............#.................................#.....................#.......................................................................
............................................................................................................................................
..............................#.....................................................................................#..................#....
....................................................................................#........#......#.......................................
.........................#.........................#............#...........................................#...............................
.#......#.....#.......................#.................#........................................................#.....#....................
...........................................................................#.................................................#..............
...............................................#.......................................#...............#..........................#.........
......................#..................#..................................................................................................
..........................................................................................................................#.................
......#...........................#.........................................................#........................#......................
..............................................................................................................................#.............
..#.......................#.................#............................................................................................#..
..................#....................................................#................#...................................................
....................................................#.....#....................#............................................................
...............................#............................................................................................................
..............................................#...............#..........................................................#...........#......
.#.........#........................#..................................................................#....................................
..........................................................................#.......................#........................................#
...................#......................................................................#.................................................
.............................................................................................................................#..............
.....#......................................................................................................................................
........................................................#........................#..........................................................
.............................#...............#.....................#.....#............#..................#..............................#...
............................................................................................#......#...........#............................
.........................#........#...................................................................................#.....................
...........................................................................................................................................#
.....................................................#.....#.................................................................#..............
#.........................................................................................................#.......................#.........
................#...........................................................#.....................#.........................................
..............................#..............#...................................#.......#...........................#......................
........#................#.........#............................#............................................#.............#.........#......
............................................................................................................................................
.......................................................#...............#.............................#...........................#..........
.............#.................................#............................................................................................
............................................................................................................................................
..#.............................................................................#...........................................#...........#...
............................................................................................................................................
......................................#..........................................................#................#.........................
............................#................#......#......................#...........#....................................................
............................................................................................................................................
....................................................................................................#................#..........#...........
.#............#...................#...............................#........................................#.............................#..
.........#...............................................................#..................................................................
.......................#....................#........#...........................................#..........................................
............................................................#.....................................................#.........................
..............................#.......................................................................#...................#.......#.........
............#.......................#...................#............................#......................................................
...................................................#......................................#..............................................#..
.#................#...................................................#........................#............................................
......#....................................................................#................................#...............................
...............................#....................................................................................#.......................
.........................#.....................#......#.............................................#.................................#.....
............................................................................................................................................
...............#.....................#....................................................#.................................................
..................................................................................................................#.........................
....#......#.....................................#..............................#............................#............#.....#...........
....................#.............................................#....................#.........#.......................................#..
.........................................................#..............#.............................#.....................................
............................#...........#...........................................................................#.......................
............................................................................................................................................
#..................................#...............................................................#..........#.............................
.......#......................................................................................#.................................#.......#...
.....................#....................#...............................#.....#......................................#....................
................................#..........................#......#....................#..........................#.........................
..............#...................................#........................................................................#...............#
....#....................................................................................................#..................................
.......................#....................................................................................................................
......................................#................................#..................#.................................................
.....................................................#............................................#...............................#.........
............................................................................................................................................
............................................................................................................................................
....#.................#..................................#.........................#..........................#.............................
.............#........................................................................................#..................#..................
......................................#............................................................................#........................
.........#....................................................#.........#............................................................#......
.............................................................................................#..............................................
.............................#...........#............................................................................#.....................
#..................#................................................#....................#.......................................#.........#
...................................................................................................#......#.................................
...........#.............................................#...........................#......................................................
....................................#.......................................................................................................
..................................................#..........#.........#......................#.....................#.......................
.#......#....................................#..............................................................#...............................
.............................#.............................................#................................................................
.......................#...............................................................................#....................#...............
....................................................#.....................................#...........................................#.....
................#.....................#..................#.................................................................................#
...#.....#..........................................................#................#......................................................
.............................................#...............#................................#......#......................................
...............................#...............................................#............................................................
.............................................................................................................................#.........#....
.....................#................................................#.................................................#...................
...............#.........................#.......................#..................#.......................................................
.....#......................................................................................................#.......................#.......
....................................#.................#.........................#..................#........................................
........................................................................................................................................#...
.........#..............#.....................................#........................................#.....................#..............
...............................................#...................#........................................................................
......................................#.............#..................................#.....#.......................#......................
............#.....#...............................................................................#.........................................
...#...................................................................................................................................#....
.......................#.........................#..........................................................................................
.........................................................#...........#.........................#........#..........#.............#..........
............................#..............#....................#........................................................#..................
.......#.................................................................#................#.................................................
.................#..................................................................................#........................#...........#..
...................................................#.......#................................................................................
.........................................#......................................#......................................#....................
....................................#...........................................................................#...........................
..............................#.............................................................#...........#.......................#......#....
.........#...............................................#..............#...................................................................
........................#....................#.....................................#........................................................
#...........................................................................................................................................
............................#......................................................................#.......#................................
......................................#.....................................................................................................
.....#............#.........................................#..........................#..........................................#.........
...........................................#......................#..............................................#..........................
..............#..............................................................................#............................#.............#...
..#......#...........................................#..............................#..................#.....#..............................
....................#..........#.....#...............................#......................................................................
............................................................................................................................................
.................................................#..........................................................................................
.............#..........#...............................#...............#.............#..........#.........#........#.......................
............................................#................#.................#............................................................
....................................#....................................................................................#.............#....
+116
View File
@@ -0,0 +1,116 @@
import math
INPUT_FILE = "input.text"
I = 1000000
if I != 1:
I -= 1
class Point:
x: int
y: int
def __init__(self, x: int , y: int):
self.x = x
self.y = y
def add(self, other):
return Point(self.x + other.x, self.y + other.y)
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Point(self.x - other.x, self.y - other.x)
def __str__(self) -> str:
return f'P({self.x}, {self.y})'
def __eq__(self, other) -> bool:
return self.x == other.x and self.y == other.y
def _length(self) -> float:
return math.sqrt(self.x ** 2 + self.y ** 2)
def normalise(self) -> None:
self.x /= self._length()
self.y /= self._length()
def _abs(self) -> None:
self.x = abs(self.x)
self.y = abs(self.y)
def main():
with open(INPUT_FILE, 'r') as file:
universe = file.readlines()
# Shave off the newlines
for i in range(0, len(universe)):
universe[i] = universe[i][:-1]
# oh but first find galaxies
galaxies: list[Point] = []
n_y = len(universe)
for y in range(0, n_y):
row = universe[y]
for x in range(0, len(row)):
if row[x] == '#':
galaxies.append(Point(x, y))
# Check for expansion (y direction)
expansions = 0
for y in range(0, len(universe)):
row: str = universe[y]
if row.find('#') == -1:
for g in galaxies:
if g.y > y + (expansions * I):
g.y += I
expansions += 1
# Check for expansions (x direction)
expansions = 0
for x in range(0, len(universe[0])):
no_galaxy = True
for y in range(0, len(universe)):
if universe[y][x] == '#':
no_galaxy = False
break
if no_galaxy:
for g in galaxies:
if g.x > x + (expansions * I):
g.x += I
expansions += 1
# ok now find lengths or something
total = 0
for g1 in galaxies:
for g2 in galaxies:
if g2.y > g1.y:
dy = g2.y - g1.y
else:
dy = g1.y - g2.y
if g2.x > g1.x:
dx = g2.x - g1.x
else:
dx = g1.x - g2.x
total += dx + dy
print(f'Sum is {int(total/2)}')
if __name__ == '__main__':
main()
+10
View File
@@ -0,0 +1,10 @@
...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....
+25
View File
@@ -0,0 +1,25 @@
INPUT_FILE = "test.text"
def main():
with open(INPUT_FILE, 'r') as file:
data: list[str] = file.readlines()
for line in data:
record, groups = line.split()
groups: list[int] = [int(g) for g in groups.split(',')]
# for group in groups:
# # if '#' * group in record:
# # groups.remove(group)
# # record = record.replace('#' * group, '')
print(f'{record} {groups}')
if __name__ == '__main__':
main()
+6
View File
@@ -0,0 +1,6 @@
???.### 1,1,3
.??..??...?##. 1,1,3
?#?#?#?#?#?#?#? 1,3,1,6
????.#...#... 4,1,1
????.######..#####. 1,6,5
?###???????? 3,2,1
+100
View File
@@ -0,0 +1,100 @@
Game 1: 7 green, 14 red, 5 blue; 8 red, 4 green; 6 green, 18 red, 9 blue
Game 2: 3 blue, 15 red, 5 green; 1 blue, 14 red, 5 green; 11 red; 4 green, 1 blue, 3 red; 4 green, 1 blue; 10 red, 1 green
Game 3: 11 green, 3 red; 4 green, 15 blue; 14 blue, 2 red, 10 green; 1 red, 3 green, 10 blue
Game 4: 1 green, 6 red, 11 blue; 3 blue, 12 red; 1 green, 14 red, 8 blue; 3 blue, 7 red; 8 blue, 5 red; 7 red, 1 green
Game 5: 14 green, 3 red, 3 blue; 2 red, 1 green, 1 blue; 8 green, 3 blue, 1 red; 15 green, 8 blue, 1 red
Game 6: 4 blue, 8 green, 5 red; 9 green, 10 blue, 7 red; 11 blue, 10 red, 7 green; 8 red, 6 blue, 9 green
Game 7: 5 green, 11 blue, 9 red; 2 green, 6 red, 12 blue; 8 red, 4 blue, 3 green; 7 green, 8 red, 9 blue; 8 green, 5 red
Game 8: 7 red, 12 green; 9 blue, 15 red, 8 green; 3 blue, 11 green, 6 red; 8 blue, 12 red, 5 green
Game 9: 8 blue, 6 red, 7 green; 2 blue, 3 red, 10 green; 10 blue, 6 red, 7 green; 11 red, 7 blue, 5 green; 10 red, 11 green
Game 10: 5 red, 14 green; 2 red, 6 blue, 15 green; 3 red, 4 blue, 7 green; 6 red, 1 green, 4 blue
Game 11: 4 blue, 11 green, 6 red; 12 red, 1 blue, 5 green; 7 red, 1 blue; 11 red, 2 green, 3 blue; 2 blue, 6 red, 7 green
Game 12: 1 green, 8 red, 3 blue; 3 green, 2 red; 2 blue, 5 red, 1 green
Game 13: 2 green; 8 green, 1 blue, 12 red; 1 blue, 14 green, 2 red; 1 blue, 6 red, 6 green; 7 green, 10 red
Game 14: 9 green, 4 red, 1 blue; 5 red, 2 green; 17 green, 1 red; 6 red, 10 green; 4 green, 3 red, 1 blue
Game 15: 7 green, 13 blue, 4 red; 1 blue, 7 green, 9 red; 13 blue, 13 red, 7 green; 8 red, 9 blue; 9 red, 14 blue; 2 green, 7 red, 9 blue
Game 16: 6 green, 18 blue, 6 red; 5 green, 2 blue, 2 red; 6 green, 2 red, 17 blue; 2 red, 2 green, 8 blue; 2 red, 10 blue
Game 17: 17 red, 8 green; 4 blue, 10 green, 3 red; 8 red, 5 green, 3 blue; 12 green, 3 red
Game 18: 6 red, 1 green, 14 blue; 1 red, 10 blue, 1 green; 1 red, 17 blue, 1 green; 5 red, 1 blue; 5 red, 18 blue; 2 red, 3 blue
Game 19: 5 blue, 12 red; 6 blue, 3 red, 6 green; 8 blue, 6 red, 6 green; 8 green, 8 blue, 2 red; 4 green, 6 red, 6 blue; 1 green, 3 red, 13 blue
Game 20: 7 green, 2 blue; 4 blue, 12 red, 2 green; 7 red, 2 green, 6 blue
Game 21: 8 green, 1 red; 1 red, 9 green; 1 red, 6 green, 4 blue; 1 red, 3 green, 5 blue; 2 red, 6 green
Game 22: 11 green, 12 red, 5 blue; 5 blue, 9 red, 11 green; 8 green, 4 red, 5 blue; 7 green, 1 blue, 1 red
Game 23: 11 blue, 9 red, 5 green; 3 green, 3 blue; 11 blue, 9 red, 1 green; 2 red, 7 green; 4 green, 3 blue, 1 red; 5 green, 4 blue
Game 24: 1 green, 4 blue, 9 red; 1 green, 2 blue, 11 red; 1 green, 13 red; 1 green, 2 blue, 3 red
Game 25: 1 red, 7 green, 4 blue; 2 red, 1 green, 3 blue; 10 blue, 1 red; 7 blue, 2 red, 6 green; 7 green, 15 blue, 2 red; 14 green, 13 blue
Game 26: 5 red, 2 blue; 9 red, 2 green, 12 blue; 15 red, 1 green, 5 blue; 1 green, 16 blue, 17 red
Game 27: 2 green, 4 red; 4 red, 1 green; 1 blue, 3 red; 2 red
Game 28: 3 green; 8 green, 9 red; 9 red, 3 blue, 10 green; 16 green, 4 blue, 4 red
Game 29: 3 green, 1 red, 7 blue; 5 blue, 5 green, 2 red; 5 blue, 6 green, 2 red; 2 green, 2 red, 4 blue; 1 green, 3 red, 8 blue
Game 30: 7 red, 3 green, 7 blue; 3 green, 10 red; 5 red, 5 blue, 1 green; 9 blue, 2 green, 7 red; 1 red, 10 blue; 10 blue, 2 red, 4 green
Game 31: 9 green, 1 red; 9 blue, 6 red, 9 green; 17 blue, 4 green, 10 red; 19 blue, 11 green
Game 32: 1 red, 1 blue, 6 green; 10 blue, 4 green; 1 red, 5 blue; 9 blue, 3 green
Game 33: 4 red; 3 red; 2 red, 1 green, 1 blue; 1 green; 1 blue, 1 red
Game 34: 2 green, 9 blue, 1 red; 5 blue, 7 green, 1 red; 2 green, 1 red, 16 blue; 1 blue, 5 green, 6 red
Game 35: 11 red, 10 blue; 2 blue, 12 green, 12 red; 3 green, 6 red, 6 blue; 14 blue, 10 green, 1 red
Game 36: 2 blue, 3 red, 15 green; 2 blue, 6 green, 2 red; 14 blue, 4 red, 7 green; 13 blue, 12 green, 2 red
Game 37: 6 green, 14 blue, 7 red; 7 blue, 2 red, 6 green; 1 blue, 2 green, 6 red
Game 38: 2 green, 15 red, 2 blue; 14 red, 1 blue; 14 red, 2 green, 12 blue
Game 39: 5 green, 1 blue, 10 red; 4 red, 3 blue, 7 green; 2 red, 2 green, 4 blue; 10 blue, 5 green
Game 40: 7 red, 10 green, 2 blue; 7 green, 3 red, 2 blue; 10 red, 9 blue, 7 green; 3 green, 5 blue, 10 red
Game 41: 5 blue, 2 green, 11 red; 2 green, 18 red, 3 blue; 8 green, 10 red, 1 blue; 16 red, 13 green; 17 green, 2 blue, 17 red; 1 green, 1 blue, 9 red
Game 42: 5 red, 2 green, 1 blue; 6 red, 2 blue; 3 red, 1 blue; 9 red, 5 blue; 1 green, 8 red, 1 blue
Game 43: 1 red, 2 green; 12 red, 4 green, 5 blue; 4 blue, 9 red; 4 green, 10 red, 2 blue
Game 44: 2 blue, 9 green, 3 red; 6 red, 4 blue, 4 green; 3 red, 4 blue; 5 red, 2 green, 1 blue; 4 blue, 1 green; 8 green, 1 red, 4 blue
Game 45: 7 blue, 1 red; 2 red, 4 green, 9 blue; 3 red, 15 blue; 4 red, 4 green, 12 blue; 1 red, 18 blue
Game 46: 4 red, 14 blue, 11 green; 5 blue, 6 red, 17 green; 10 red, 8 green, 17 blue; 7 red, 10 blue, 19 green
Game 47: 7 blue, 3 red; 7 blue, 1 green, 2 red; 2 red, 6 blue; 1 green, 9 blue, 2 red; 3 red; 2 green, 1 blue
Game 48: 12 red, 6 blue, 6 green; 9 green, 19 red, 1 blue; 2 blue, 12 green, 8 red
Game 49: 1 green, 11 red, 11 blue; 10 red, 10 blue, 11 green; 4 red, 19 green, 6 blue; 11 blue, 19 green, 13 red; 9 green, 9 blue
Game 50: 1 blue, 12 green, 4 red; 1 blue, 18 green, 1 red; 1 blue, 12 green, 3 red; 1 blue, 4 green
Game 51: 10 red, 5 blue, 1 green; 10 red, 4 blue; 6 red, 8 blue
Game 52: 1 blue; 5 green, 9 red; 2 blue, 1 green, 11 red; 2 blue, 13 red, 5 green; 6 green, 1 blue, 9 red
Game 53: 8 blue, 15 red; 2 green, 4 red, 12 blue; 6 blue, 1 green, 15 red; 20 red, 12 blue; 6 red, 1 green, 2 blue
Game 54: 5 red, 16 blue; 5 green, 3 red, 17 blue; 5 red, 3 blue, 5 green; 4 green, 6 blue, 9 red; 2 blue, 6 green, 2 red
Game 55: 1 blue, 1 red; 1 green, 1 red, 3 blue; 4 blue, 1 green, 1 red; 5 blue; 2 blue
Game 56: 4 red, 4 blue; 7 blue, 11 red; 1 red, 2 green, 9 blue; 4 blue, 16 red, 2 green; 1 red; 2 green, 5 blue, 1 red
Game 57: 1 green, 8 blue; 1 red; 10 blue, 5 green; 3 blue, 4 green; 11 blue, 1 red; 4 blue, 3 green, 1 red
Game 58: 8 green, 5 blue; 9 blue, 8 red, 5 green; 6 red, 6 blue, 9 green; 1 green, 5 blue, 2 red; 3 red, 3 green, 2 blue; 2 green, 1 red, 1 blue
Game 59: 15 red, 4 blue, 8 green; 12 red, 6 green; 3 red
Game 60: 14 blue, 11 red; 12 blue, 6 red; 11 blue, 6 red; 5 red, 13 blue; 15 blue; 1 green, 1 blue, 16 red
Game 61: 5 red, 1 green; 4 red, 9 green; 1 blue, 6 green, 14 red
Game 62: 19 red, 1 green; 1 blue, 3 red; 15 red, 1 blue; 1 blue, 3 red; 5 red, 1 green, 1 blue
Game 63: 1 red, 3 green, 10 blue; 2 green, 1 red, 14 blue; 1 green, 5 blue, 1 red; 6 blue, 4 green, 1 red
Game 64: 5 red, 2 green; 5 green, 2 red, 2 blue; 3 red, 3 blue, 1 green; 3 blue, 3 green, 3 red; 1 green, 3 red
Game 65: 13 red, 2 green, 3 blue; 1 red, 2 blue, 1 green; 1 blue; 2 green, 1 red
Game 66: 7 red, 12 blue, 6 green; 2 red, 5 green, 11 blue; 3 green, 2 blue, 2 red; 9 blue, 1 red, 2 green
Game 67: 4 red, 3 green, 7 blue; 8 blue, 3 red; 2 red; 9 blue, 5 red, 2 green
Game 68: 12 blue; 10 green, 5 blue; 8 blue; 9 blue, 7 red, 18 green; 5 red, 12 blue, 8 green; 8 green, 13 red, 10 blue
Game 69: 1 green, 1 red; 2 red, 1 green, 3 blue; 1 red, 1 green, 4 blue; 1 green, 8 red
Game 70: 12 green, 1 blue, 4 red; 8 green, 1 red; 1 blue, 8 green; 2 green, 3 red; 5 green, 4 red; 2 blue, 12 green, 1 red
Game 71: 10 blue, 4 red, 14 green; 6 green, 7 red, 8 blue; 1 red, 1 blue, 13 green; 10 red, 6 blue, 3 green; 8 blue, 7 green, 4 red
Game 72: 1 green; 1 blue, 12 green, 14 red; 3 blue, 7 green, 8 red; 12 red, 18 green; 13 green, 11 red, 1 blue; 2 blue, 6 green, 6 red
Game 73: 17 red, 3 green, 15 blue; 15 blue, 2 red; 15 red, 7 blue, 4 green; 9 blue, 1 green, 18 red
Game 74: 10 red, 2 blue; 1 blue, 7 red; 5 blue, 2 green, 2 red; 3 blue, 15 red, 3 green; 4 blue, 3 green, 13 red
Game 75: 6 blue, 10 red; 2 green, 2 blue, 10 red; 10 green, 1 blue, 10 red; 4 blue, 6 red, 11 green
Game 76: 10 blue, 1 red, 2 green; 6 blue, 2 green, 10 red; 3 red, 15 green, 1 blue
Game 77: 5 green, 1 red; 2 blue, 1 green; 13 green, 2 red, 5 blue; 12 green, 1 blue, 2 red; 3 blue, 2 green, 2 red
Game 78: 1 green, 16 red; 6 red, 1 blue, 1 green; 13 red; 12 red, 3 green; 1 blue, 7 red
Game 79: 3 green, 7 blue; 1 red, 8 blue, 5 green; 1 red, 6 green, 7 blue; 11 green, 1 red, 7 blue; 1 blue
Game 80: 3 green, 13 red, 8 blue; 17 red, 9 blue; 7 blue, 1 green, 2 red; 8 red, 6 blue, 3 green; 1 red, 2 blue; 2 green, 4 blue, 10 red
Game 81: 3 red, 1 green, 7 blue; 2 green, 2 blue, 3 red; 3 red, 1 blue, 7 green; 6 green, 12 blue
Game 82: 11 red, 3 green, 2 blue; 3 red, 1 green, 1 blue; 16 red, 1 green
Game 83: 8 green, 3 blue, 2 red; 1 blue, 13 green, 6 red; 4 blue, 5 red, 1 green; 12 green, 4 red, 12 blue; 17 green, 7 blue, 3 red
Game 84: 2 blue, 13 red, 5 green; 3 green, 3 blue, 19 red; 2 red, 11 green, 5 blue; 3 green, 3 blue, 15 red; 7 green, 4 blue, 11 red; 1 red, 10 green
Game 85: 1 red, 3 blue, 4 green; 2 red, 11 green, 2 blue; 2 blue, 7 green, 1 red
Game 86: 3 blue, 4 green, 8 red; 4 green, 2 red; 9 red, 4 blue, 1 green; 18 red, 1 blue
Game 87: 3 red, 14 blue, 1 green; 10 blue, 1 green; 1 green, 4 red, 14 blue; 8 blue, 7 green, 4 red; 2 green, 7 red, 7 blue; 2 green, 10 blue
Game 88: 12 green, 6 red; 6 red, 3 blue, 2 green; 4 red, 4 blue, 9 green; 3 red, 4 green, 8 blue; 1 blue, 3 red
Game 89: 3 green, 3 red, 2 blue; 3 red, 2 green, 1 blue; 6 green, 4 blue, 12 red; 13 red, 14 blue, 1 green; 5 red; 10 red, 8 blue, 7 green
Game 90: 7 green, 10 blue; 6 green, 1 red, 2 blue; 6 blue; 5 green, 9 blue, 1 red; 10 blue, 1 red, 6 green
Game 91: 6 red, 2 blue; 3 blue, 3 red, 1 green; 19 blue, 7 red
Game 92: 9 green, 3 blue; 1 red, 5 green; 13 green, 3 blue, 2 red; 1 red, 3 blue, 7 green
Game 93: 11 red, 3 green, 11 blue; 7 green, 3 red, 10 blue; 11 green, 4 blue, 8 red; 14 green, 8 blue
Game 94: 7 blue; 1 green, 11 blue, 2 red; 1 green, 1 red, 19 blue; 7 green, 2 red, 10 blue
Game 95: 15 blue, 1 red, 9 green; 5 green, 1 red, 4 blue; 6 green, 17 blue; 9 blue, 11 green; 10 blue, 9 green; 9 blue, 7 green
Game 96: 7 red, 13 blue; 6 blue, 15 red, 3 green; 1 green, 1 red, 1 blue; 9 red, 2 green, 8 blue; 5 green, 8 red, 1 blue; 6 blue, 3 green, 13 red
Game 97: 19 blue, 10 red, 4 green; 8 red, 17 blue; 8 blue
Game 98: 2 blue, 2 red, 4 green; 5 green, 3 blue, 2 red; 5 green, 15 blue; 15 blue, 5 green, 1 red
Game 99: 1 blue, 2 green, 8 red; 1 blue, 7 red, 1 green; 11 red, 2 green; 1 red, 1 blue
Game 100: 8 green; 2 red, 20 green; 12 green, 1 red, 1 blue; 4 red, 1 blue; 1 blue, 6 red
+54
View File
@@ -0,0 +1,54 @@
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
file, _ := os.Open("./input.text")
defer file.Close()
scanner := bufio.NewScanner(file)
sum := 0
for scanner.Scan() {
line := strings.Split(scanner.Text(), ":")
game_num, _ := strconv.Atoi(strings.Split(line[0], " ")[1])
draws := strings.Split(line[1], ";")
add := true
for _, draw := range draws {
cubes := strings.Split(draw, ",")
for _, cube := range cubes {
v := strings.Fields(cube)
value, _ := strconv.Atoi(v[0])
color := v[1]
if color == "red" && value > 12 {
add = false
}
if color == "green" && value > 13 {
add = false
}
if color == "blue" && value > 14 {
add = false
}
}
}
if add {
sum += game_num
}
}
fmt.Println("Sum of games with possible # of cubes:", sum)
}
+5
View File
@@ -0,0 +1,5 @@
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
+100
View File
@@ -0,0 +1,100 @@
Game 1: 7 green, 14 red, 5 blue; 8 red, 4 green; 6 green, 18 red, 9 blue
Game 2: 3 blue, 15 red, 5 green; 1 blue, 14 red, 5 green; 11 red; 4 green, 1 blue, 3 red; 4 green, 1 blue; 10 red, 1 green
Game 3: 11 green, 3 red; 4 green, 15 blue; 14 blue, 2 red, 10 green; 1 red, 3 green, 10 blue
Game 4: 1 green, 6 red, 11 blue; 3 blue, 12 red; 1 green, 14 red, 8 blue; 3 blue, 7 red; 8 blue, 5 red; 7 red, 1 green
Game 5: 14 green, 3 red, 3 blue; 2 red, 1 green, 1 blue; 8 green, 3 blue, 1 red; 15 green, 8 blue, 1 red
Game 6: 4 blue, 8 green, 5 red; 9 green, 10 blue, 7 red; 11 blue, 10 red, 7 green; 8 red, 6 blue, 9 green
Game 7: 5 green, 11 blue, 9 red; 2 green, 6 red, 12 blue; 8 red, 4 blue, 3 green; 7 green, 8 red, 9 blue; 8 green, 5 red
Game 8: 7 red, 12 green; 9 blue, 15 red, 8 green; 3 blue, 11 green, 6 red; 8 blue, 12 red, 5 green
Game 9: 8 blue, 6 red, 7 green; 2 blue, 3 red, 10 green; 10 blue, 6 red, 7 green; 11 red, 7 blue, 5 green; 10 red, 11 green
Game 10: 5 red, 14 green; 2 red, 6 blue, 15 green; 3 red, 4 blue, 7 green; 6 red, 1 green, 4 blue
Game 11: 4 blue, 11 green, 6 red; 12 red, 1 blue, 5 green; 7 red, 1 blue; 11 red, 2 green, 3 blue; 2 blue, 6 red, 7 green
Game 12: 1 green, 8 red, 3 blue; 3 green, 2 red; 2 blue, 5 red, 1 green
Game 13: 2 green; 8 green, 1 blue, 12 red; 1 blue, 14 green, 2 red; 1 blue, 6 red, 6 green; 7 green, 10 red
Game 14: 9 green, 4 red, 1 blue; 5 red, 2 green; 17 green, 1 red; 6 red, 10 green; 4 green, 3 red, 1 blue
Game 15: 7 green, 13 blue, 4 red; 1 blue, 7 green, 9 red; 13 blue, 13 red, 7 green; 8 red, 9 blue; 9 red, 14 blue; 2 green, 7 red, 9 blue
Game 16: 6 green, 18 blue, 6 red; 5 green, 2 blue, 2 red; 6 green, 2 red, 17 blue; 2 red, 2 green, 8 blue; 2 red, 10 blue
Game 17: 17 red, 8 green; 4 blue, 10 green, 3 red; 8 red, 5 green, 3 blue; 12 green, 3 red
Game 18: 6 red, 1 green, 14 blue; 1 red, 10 blue, 1 green; 1 red, 17 blue, 1 green; 5 red, 1 blue; 5 red, 18 blue; 2 red, 3 blue
Game 19: 5 blue, 12 red; 6 blue, 3 red, 6 green; 8 blue, 6 red, 6 green; 8 green, 8 blue, 2 red; 4 green, 6 red, 6 blue; 1 green, 3 red, 13 blue
Game 20: 7 green, 2 blue; 4 blue, 12 red, 2 green; 7 red, 2 green, 6 blue
Game 21: 8 green, 1 red; 1 red, 9 green; 1 red, 6 green, 4 blue; 1 red, 3 green, 5 blue; 2 red, 6 green
Game 22: 11 green, 12 red, 5 blue; 5 blue, 9 red, 11 green; 8 green, 4 red, 5 blue; 7 green, 1 blue, 1 red
Game 23: 11 blue, 9 red, 5 green; 3 green, 3 blue; 11 blue, 9 red, 1 green; 2 red, 7 green; 4 green, 3 blue, 1 red; 5 green, 4 blue
Game 24: 1 green, 4 blue, 9 red; 1 green, 2 blue, 11 red; 1 green, 13 red; 1 green, 2 blue, 3 red
Game 25: 1 red, 7 green, 4 blue; 2 red, 1 green, 3 blue; 10 blue, 1 red; 7 blue, 2 red, 6 green; 7 green, 15 blue, 2 red; 14 green, 13 blue
Game 26: 5 red, 2 blue; 9 red, 2 green, 12 blue; 15 red, 1 green, 5 blue; 1 green, 16 blue, 17 red
Game 27: 2 green, 4 red; 4 red, 1 green; 1 blue, 3 red; 2 red
Game 28: 3 green; 8 green, 9 red; 9 red, 3 blue, 10 green; 16 green, 4 blue, 4 red
Game 29: 3 green, 1 red, 7 blue; 5 blue, 5 green, 2 red; 5 blue, 6 green, 2 red; 2 green, 2 red, 4 blue; 1 green, 3 red, 8 blue
Game 30: 7 red, 3 green, 7 blue; 3 green, 10 red; 5 red, 5 blue, 1 green; 9 blue, 2 green, 7 red; 1 red, 10 blue; 10 blue, 2 red, 4 green
Game 31: 9 green, 1 red; 9 blue, 6 red, 9 green; 17 blue, 4 green, 10 red; 19 blue, 11 green
Game 32: 1 red, 1 blue, 6 green; 10 blue, 4 green; 1 red, 5 blue; 9 blue, 3 green
Game 33: 4 red; 3 red; 2 red, 1 green, 1 blue; 1 green; 1 blue, 1 red
Game 34: 2 green, 9 blue, 1 red; 5 blue, 7 green, 1 red; 2 green, 1 red, 16 blue; 1 blue, 5 green, 6 red
Game 35: 11 red, 10 blue; 2 blue, 12 green, 12 red; 3 green, 6 red, 6 blue; 14 blue, 10 green, 1 red
Game 36: 2 blue, 3 red, 15 green; 2 blue, 6 green, 2 red; 14 blue, 4 red, 7 green; 13 blue, 12 green, 2 red
Game 37: 6 green, 14 blue, 7 red; 7 blue, 2 red, 6 green; 1 blue, 2 green, 6 red
Game 38: 2 green, 15 red, 2 blue; 14 red, 1 blue; 14 red, 2 green, 12 blue
Game 39: 5 green, 1 blue, 10 red; 4 red, 3 blue, 7 green; 2 red, 2 green, 4 blue; 10 blue, 5 green
Game 40: 7 red, 10 green, 2 blue; 7 green, 3 red, 2 blue; 10 red, 9 blue, 7 green; 3 green, 5 blue, 10 red
Game 41: 5 blue, 2 green, 11 red; 2 green, 18 red, 3 blue; 8 green, 10 red, 1 blue; 16 red, 13 green; 17 green, 2 blue, 17 red; 1 green, 1 blue, 9 red
Game 42: 5 red, 2 green, 1 blue; 6 red, 2 blue; 3 red, 1 blue; 9 red, 5 blue; 1 green, 8 red, 1 blue
Game 43: 1 red, 2 green; 12 red, 4 green, 5 blue; 4 blue, 9 red; 4 green, 10 red, 2 blue
Game 44: 2 blue, 9 green, 3 red; 6 red, 4 blue, 4 green; 3 red, 4 blue; 5 red, 2 green, 1 blue; 4 blue, 1 green; 8 green, 1 red, 4 blue
Game 45: 7 blue, 1 red; 2 red, 4 green, 9 blue; 3 red, 15 blue; 4 red, 4 green, 12 blue; 1 red, 18 blue
Game 46: 4 red, 14 blue, 11 green; 5 blue, 6 red, 17 green; 10 red, 8 green, 17 blue; 7 red, 10 blue, 19 green
Game 47: 7 blue, 3 red; 7 blue, 1 green, 2 red; 2 red, 6 blue; 1 green, 9 blue, 2 red; 3 red; 2 green, 1 blue
Game 48: 12 red, 6 blue, 6 green; 9 green, 19 red, 1 blue; 2 blue, 12 green, 8 red
Game 49: 1 green, 11 red, 11 blue; 10 red, 10 blue, 11 green; 4 red, 19 green, 6 blue; 11 blue, 19 green, 13 red; 9 green, 9 blue
Game 50: 1 blue, 12 green, 4 red; 1 blue, 18 green, 1 red; 1 blue, 12 green, 3 red; 1 blue, 4 green
Game 51: 10 red, 5 blue, 1 green; 10 red, 4 blue; 6 red, 8 blue
Game 52: 1 blue; 5 green, 9 red; 2 blue, 1 green, 11 red; 2 blue, 13 red, 5 green; 6 green, 1 blue, 9 red
Game 53: 8 blue, 15 red; 2 green, 4 red, 12 blue; 6 blue, 1 green, 15 red; 20 red, 12 blue; 6 red, 1 green, 2 blue
Game 54: 5 red, 16 blue; 5 green, 3 red, 17 blue; 5 red, 3 blue, 5 green; 4 green, 6 blue, 9 red; 2 blue, 6 green, 2 red
Game 55: 1 blue, 1 red; 1 green, 1 red, 3 blue; 4 blue, 1 green, 1 red; 5 blue; 2 blue
Game 56: 4 red, 4 blue; 7 blue, 11 red; 1 red, 2 green, 9 blue; 4 blue, 16 red, 2 green; 1 red; 2 green, 5 blue, 1 red
Game 57: 1 green, 8 blue; 1 red; 10 blue, 5 green; 3 blue, 4 green; 11 blue, 1 red; 4 blue, 3 green, 1 red
Game 58: 8 green, 5 blue; 9 blue, 8 red, 5 green; 6 red, 6 blue, 9 green; 1 green, 5 blue, 2 red; 3 red, 3 green, 2 blue; 2 green, 1 red, 1 blue
Game 59: 15 red, 4 blue, 8 green; 12 red, 6 green; 3 red
Game 60: 14 blue, 11 red; 12 blue, 6 red; 11 blue, 6 red; 5 red, 13 blue; 15 blue; 1 green, 1 blue, 16 red
Game 61: 5 red, 1 green; 4 red, 9 green; 1 blue, 6 green, 14 red
Game 62: 19 red, 1 green; 1 blue, 3 red; 15 red, 1 blue; 1 blue, 3 red; 5 red, 1 green, 1 blue
Game 63: 1 red, 3 green, 10 blue; 2 green, 1 red, 14 blue; 1 green, 5 blue, 1 red; 6 blue, 4 green, 1 red
Game 64: 5 red, 2 green; 5 green, 2 red, 2 blue; 3 red, 3 blue, 1 green; 3 blue, 3 green, 3 red; 1 green, 3 red
Game 65: 13 red, 2 green, 3 blue; 1 red, 2 blue, 1 green; 1 blue; 2 green, 1 red
Game 66: 7 red, 12 blue, 6 green; 2 red, 5 green, 11 blue; 3 green, 2 blue, 2 red; 9 blue, 1 red, 2 green
Game 67: 4 red, 3 green, 7 blue; 8 blue, 3 red; 2 red; 9 blue, 5 red, 2 green
Game 68: 12 blue; 10 green, 5 blue; 8 blue; 9 blue, 7 red, 18 green; 5 red, 12 blue, 8 green; 8 green, 13 red, 10 blue
Game 69: 1 green, 1 red; 2 red, 1 green, 3 blue; 1 red, 1 green, 4 blue; 1 green, 8 red
Game 70: 12 green, 1 blue, 4 red; 8 green, 1 red; 1 blue, 8 green; 2 green, 3 red; 5 green, 4 red; 2 blue, 12 green, 1 red
Game 71: 10 blue, 4 red, 14 green; 6 green, 7 red, 8 blue; 1 red, 1 blue, 13 green; 10 red, 6 blue, 3 green; 8 blue, 7 green, 4 red
Game 72: 1 green; 1 blue, 12 green, 14 red; 3 blue, 7 green, 8 red; 12 red, 18 green; 13 green, 11 red, 1 blue; 2 blue, 6 green, 6 red
Game 73: 17 red, 3 green, 15 blue; 15 blue, 2 red; 15 red, 7 blue, 4 green; 9 blue, 1 green, 18 red
Game 74: 10 red, 2 blue; 1 blue, 7 red; 5 blue, 2 green, 2 red; 3 blue, 15 red, 3 green; 4 blue, 3 green, 13 red
Game 75: 6 blue, 10 red; 2 green, 2 blue, 10 red; 10 green, 1 blue, 10 red; 4 blue, 6 red, 11 green
Game 76: 10 blue, 1 red, 2 green; 6 blue, 2 green, 10 red; 3 red, 15 green, 1 blue
Game 77: 5 green, 1 red; 2 blue, 1 green; 13 green, 2 red, 5 blue; 12 green, 1 blue, 2 red; 3 blue, 2 green, 2 red
Game 78: 1 green, 16 red; 6 red, 1 blue, 1 green; 13 red; 12 red, 3 green; 1 blue, 7 red
Game 79: 3 green, 7 blue; 1 red, 8 blue, 5 green; 1 red, 6 green, 7 blue; 11 green, 1 red, 7 blue; 1 blue
Game 80: 3 green, 13 red, 8 blue; 17 red, 9 blue; 7 blue, 1 green, 2 red; 8 red, 6 blue, 3 green; 1 red, 2 blue; 2 green, 4 blue, 10 red
Game 81: 3 red, 1 green, 7 blue; 2 green, 2 blue, 3 red; 3 red, 1 blue, 7 green; 6 green, 12 blue
Game 82: 11 red, 3 green, 2 blue; 3 red, 1 green, 1 blue; 16 red, 1 green
Game 83: 8 green, 3 blue, 2 red; 1 blue, 13 green, 6 red; 4 blue, 5 red, 1 green; 12 green, 4 red, 12 blue; 17 green, 7 blue, 3 red
Game 84: 2 blue, 13 red, 5 green; 3 green, 3 blue, 19 red; 2 red, 11 green, 5 blue; 3 green, 3 blue, 15 red; 7 green, 4 blue, 11 red; 1 red, 10 green
Game 85: 1 red, 3 blue, 4 green; 2 red, 11 green, 2 blue; 2 blue, 7 green, 1 red
Game 86: 3 blue, 4 green, 8 red; 4 green, 2 red; 9 red, 4 blue, 1 green; 18 red, 1 blue
Game 87: 3 red, 14 blue, 1 green; 10 blue, 1 green; 1 green, 4 red, 14 blue; 8 blue, 7 green, 4 red; 2 green, 7 red, 7 blue; 2 green, 10 blue
Game 88: 12 green, 6 red; 6 red, 3 blue, 2 green; 4 red, 4 blue, 9 green; 3 red, 4 green, 8 blue; 1 blue, 3 red
Game 89: 3 green, 3 red, 2 blue; 3 red, 2 green, 1 blue; 6 green, 4 blue, 12 red; 13 red, 14 blue, 1 green; 5 red; 10 red, 8 blue, 7 green
Game 90: 7 green, 10 blue; 6 green, 1 red, 2 blue; 6 blue; 5 green, 9 blue, 1 red; 10 blue, 1 red, 6 green
Game 91: 6 red, 2 blue; 3 blue, 3 red, 1 green; 19 blue, 7 red
Game 92: 9 green, 3 blue; 1 red, 5 green; 13 green, 3 blue, 2 red; 1 red, 3 blue, 7 green
Game 93: 11 red, 3 green, 11 blue; 7 green, 3 red, 10 blue; 11 green, 4 blue, 8 red; 14 green, 8 blue
Game 94: 7 blue; 1 green, 11 blue, 2 red; 1 green, 1 red, 19 blue; 7 green, 2 red, 10 blue
Game 95: 15 blue, 1 red, 9 green; 5 green, 1 red, 4 blue; 6 green, 17 blue; 9 blue, 11 green; 10 blue, 9 green; 9 blue, 7 green
Game 96: 7 red, 13 blue; 6 blue, 15 red, 3 green; 1 green, 1 red, 1 blue; 9 red, 2 green, 8 blue; 5 green, 8 red, 1 blue; 6 blue, 3 green, 13 red
Game 97: 19 blue, 10 red, 4 green; 8 red, 17 blue; 8 blue
Game 98: 2 blue, 2 red, 4 green; 5 green, 3 blue, 2 red; 5 green, 15 blue; 15 blue, 5 green, 1 red
Game 99: 1 blue, 2 green, 8 red; 1 blue, 7 red, 1 green; 11 red, 2 green; 1 red, 1 blue
Game 100: 8 green; 2 red, 20 green; 12 green, 1 red, 1 blue; 4 red, 1 blue; 1 blue, 6 red
+52
View File
@@ -0,0 +1,52 @@
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
file, _ := os.Open("./input.text")
defer file.Close()
scanner := bufio.NewScanner(file)
sum := 0
for scanner.Scan() {
line := strings.Split(scanner.Text(), ":")
draws := strings.Split(line[1], ";")
max_red := 0
max_green := 0
max_blue := 0
for _, draw := range draws {
cubes := strings.Split(draw, ",")
for _, cube := range cubes {
v := strings.Fields(cube)
value, _ := strconv.Atoi(v[0])
color := v[1]
if color == "red" && value > max_red {
max_red = value
}
if color == "green" && value > max_green {
max_green = value
}
if color == "blue" && value > max_blue {
max_blue = value
}
}
}
sum += max_red * max_green * max_blue
}
fmt.Println("Sum of the minimum power of all games:", sum)
}
+5
View File
@@ -0,0 +1,5 @@
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
+140
View File
@@ -0,0 +1,140 @@
...................15....904...........850.................329...................13....................................871....816....697....
...........53.497........................%....906...610.......*.............735#..&...*......558...68...............68..*......&....*.......
..........*....$....................132.........*..........844....875................350............*...............*..336.364...649........
.......726.......341..................*...186...358..................*244........57.......@.........738......*.....663.................584..
.............952.*......33......660..704............949......................518*....234.967....551........971..&.......................*...
.......738...*....222......................706.......*..825.............474%...........*...........*.405.........779..............542...405.
.74.........366....................192..........542.737....*760...................623/..730.....718.../.....................$17......%......
...*126.....................%........*.504...=..*.........................................................974...............................
........331/..901.........337..........*...461.698...............*461.....814............................*............975...............165.
..../.........*.....................262.......................313........*........530.56.....567.......897.....*.........*.9................
....953....355...@703..................................609..............462.......%........./...............108.557...501.../...724.........
..............................................=.........%.......46......................533....670...............................*..%630....
.........................91...382*204.........154..%.............+.524.995..............=.....*...........7..........692.92*56...73.........
.685....*....70.189.......*.........................773...830/....../....*........=.........565.............464................$....738..130
.........938..*........993..............*.................................243...340...753...........*...882...............108.647....*......
..............762..........348.......280...............364*526...........................*........552.....=....25..682....*.........164.....
.....948..............813../....644......62........................................#.....657......................*.........................
......*...........................*.................$745.......739.....*...399...30............&..@...........924.117..........309..........
...883....544.....33.........585=.428.146................288.....*..853....*...........*891.409....429..460...*..........997....*........187
.............*818........829..........*....846..............................248.....574..................*....789.......*.....965....-..*...
......=.....................*..........370.......850+.............313...........................573....621...............268.......58..800..
....67....287.............481..709...............................*.......#74...................*.................965........................
............@.291.............*.........607*....950.475..309...66..932........395..374..........155.891....472..*......774.............&....
....207..........%..262......543..887/......711....*.......+......*............*...*........823............*...93...........377.....764.....
.....*...968.951.......#................................$.........453...366..736.972........*.............697........*618...&...............
....984..*...............-.......................884..23......492.....*..*................70..523.....25........$.....................370...
..................870...187.......548#.522..458.....*..........*....956......535....../.........*.525*........197....@..*266...123.....*....
.........501.....*..........................&.....323........257........956..*........80..946.592.................211.........*.........311.
.....380*.....867...653..347....................*........93=...........*......515..........-...................................678..........
..........876......&....*.......&631.950.647...631...@...........=...705..914................739..............319......713.........*97.#918.
.....805...*..........118................-.........790....559..51........../........*.........*......550......*........./.......647.........
......-..428.....599......813................413..................280............840.654.......91.....*...........236.......$...............
.............=...%.......*.....77...................#.492............................................96..........@.......175....%...........
......*427..569..........47......................999......314.....636*253.................764.................27......-..........415..386...
...142................$................@..320........969...................882*311...............#..751...........=....649...........*......
.........*723..993.976....638........475................=..800.......................*764.710...574....*964....831..........473......531....
...%..486...................*....#..................................831...........375........*........................=824......21..........
559.........................441...316................................./....................618.407.......83.......972...............91......
......*.....25..741...................%...............*63.546$..905......27........861.756........*.......*..........*...28...57............
.......794....*./........782...236....47...........937...........*..755....*505..............23.948.......560.532...421....*..#.........405.
............566.................*........-850..872.......90....229...+..........978..684............225..................675.....591...*....
.............................296..243...........+....691...................311.........$......321......@......827....$13.......$....&..530..
.....664..422$....613.....@.........%.401/.$974.....-.........%.145....729......*........./.......106............%.......=.....611..........
.......$.........*.......857...147*.............591........+.46..*.....=........306.67*...818.............................261....../........
............823...785..............340.........-....564..777......456.......%....................891.................560...........642..181.
.....394.....*................226..........423..............................539.................*............640&.............535...........
.......@.....626..317..329....*...92........+..................374....827............*.683+....771....529.........303..........*............
.........172.....-........*......*.....332...........288..229..+.........*.786=....468.............*....*...........*....461...249..=.......
....974...*............901..@....130..*..............$...*..........4.573................163......429....808.464*47..231....@......964......
........183.................582........11...............310.....774.*.....567.............*....36...........................................
.......................939.....................*826............@.....892..........481......266.*...-253.........106.830....235......*..841..
727.........177#.........&.......507........301..........................550..242*.....+./.....686.......@.446.*.....*.......*....894..*....
....67...............468.....&......&..596......................817.600...............85.5.............973...$.805...513......378.......388.
...........*247.........*.....974.........*263....329....476....*............721............723.....................................358.....
........784.....434.....667.......................*............615.195.612...............................540#........347...........*........
...............*.................76......121...659........@555..........-.............201......................866............628.505.509...
.............515........../.................#....................281..%...656............*670.419.......799.......*...510.786...*.......&...
....993.................540.373....709.............705............*...132..#........298$......*...232....*..@..878.......*....528...#.......
....$.........615.............*..........948..........*........565................%..........465..#.....497.67....................631.......
.........138....#....417......123...........*.......546...821...................114..=............................258.859=.380-.............
.....734*.............../.............833..399..........................+............780...288..............117..@...................925....
................*860..........228........*...............................956....390*........=..........%...*..........839...373......*......
..802........369........641.............763.....154.24...............302............620..............150.403.......*.........*....647.......
...................................&........466*.....@..................*827....530.............................129.628.....923.........=866
..........&......&.............824.573.................669.........................$.....374..627...........698.....................759.....
.......499....%.812.857*653...................668..........879.......974................../......*926...852.........................-....832
...646......284..............708...369...........*808................-.......705.......@...............%.............492.462............*...
....................959......#.......*....872..........................102....*.........80..839....996..............*.....%........83...49..
.785............363..*.............49.......*.......667.....797....224.......586..............&....*...34..673.......650....................
....*..*132....*.....225...................631..350..*.........*....*.............941....=.......52....*.................406...546..........
.543............760.........305..325...330.......+.................621...........*.......63..#.......268..239...................#...........
........658..................*............*...........735......820.....145....419...........91..489.........*......404.......*....#.........
..........=....415+.....38$....844...+..366.............*.......*......*..............................43....945.....#.....563.205..211..183.
......267.......................*...519.....730........836..........277...........808...........504...&................................#....
.....*..................705/....575..........*....../..........$866.........=.......*...975......#.......183.931........%.......611.........
.......135.......284........................246.653.972..............365..191.....376...*.....&.........*......*.........994...@.....11.....
...440../.........*.............................*..............415.....................985..838......677.......109...................*......
...@............224....399.727$......68#..........................$......432.....214$.....................#.................591....686......
..........&.......................................658........143....779.+....942......$.............885....567..........$...................
.461.......33....277.407......108..............47.*.............*...........*.......$.811............................390....................
..........................907*.....#397..307...*....197.12.....3...738....254.85..393...............713..700..741...........176.....883.....
..316........180...........................*.758...................-...........................................*............*...............
....*..../........871...338..165.........683............455...701*......................540....255.......$....858........277....28....+.....
...660.469..912...#..........%......743.........439.....-.........206......363..........*.......*.......640............................144..
..............*.........443...............610.............803.............*.............879...658............$................189...........
...........172......794........98..............646......................662..............................*....49.-210.523.257....*..........
...87..662.....#.......*667....%..408..........*............220...524............=.....742..39..160....64.636..........*..*....974..378.....
...*.....*.....42..&.............=....371*.....804.................*..#....../.240.....*........................395%..461..818.....*........
....706.398........452....500.............406..........57*380....365.42...635.......131...........18.....538.....................403........
..............143........*.........80............740..........................*245......784........-...........708...................&.297..
.230...........*.......373..341...........................$438.......*.................=.............874&..959*...........192......829.#....
...#..........476..647.....*......................................431.728..........................................50.....$.................
........334...........*731.930......=........966........*323...................301.....%....404...............879....*372.....208.134.......
...........*.....................163..........*......509......................%.....&..785.......................*...............*..........
...768..329....199........................................797......*368..........873..........26.565....651.....664......111..........217...
................*.....26.......705*76....415.............*................................749..........*..................#......545-..%....
....-....473..517......*...............5*....449..........68........................751.......*399......401.................................
.730......#.........240...&..65.718.87......*.....532..............-....567............*....................675.......67..463...............
.....289#....509........200......*...*....852....................885...+....663..72..507......998.&954..213....$.....*.........672..........
..............................403.....129........377-....................../....&.................................473...........*...........
.........855=.........250...................961........860*916.......981..........326.........633..404................676.%566..120.........
892...........532.............754.......866*....790..................#........819*..............*.........%.44..=......*............29......
....@527.......*..................600............../...$568.....800.....................179..528........613.....358...949...................
................302...807............*..895.................+.....@.....-...........................980...........................736.......
........217...=......*............879.....+.-..........%.....793.......442.......422............209*.......&.......969....240.378...*.......
....340*.....145...%.596....................23....703...217................372..........610.................129.......*........../.....=....
.................790.....&............904............=............795......*.......385=...+.....88*143...............891....406.......79....
............*749.........31..............*....318.................+.......317.................................%419.............*392.........
....854..797......*..500...............614.1...*..............803.....451............330.159.143.598.......+......./827...............717...
...@............924.*........................245............-.&..........*...606................*...........461............604....#....*....
....................73....160..406.150...............933.957...................%.......419.........665..*.........-.......*.....721..573....
....*915.........40................*...%.............*........584.......929......377....*..404.935....&..870.....93........395..............
.781.............@...........632.......710....769.323............$.........*.........904.....*...*.....................859..................
.....=.......................*...646............-.........................52................149...414....................*........%.........
...51....524.625..........328...*.................................295.734......@..........................856.291.695....367..218..787..8...
.........../.*................339........................576/.417*...........445...@........................%....................-..........
....869.85...316.....308...............345.......749.............................264.............775..777...............................89..
.......*...............#.........$....*..........*....../.....786.713*52.................357.......&./.........#......971....74.305....-....
............................325..770..167..@.....265..+..883................................+...57..........312.......*........*............
......+.....266.....788.111....*..........342........588.......939..393*717.............488....*....................401....249...255........
.......308..*............#.....816....465..........*.....492..@.............581.........-.......397..709*.................$.....*...........
.............511.....881...+.........+..........178..524*..............150..../..720.......843...........964....129.../......908............
.......749.............*.526.$............800............................*.........*...500....*.../.................487..........200........
..668......*639......932......139.726................#...51..436$..................775...*...834..874.......%..............859+......439....
........810........................*.......805.......100..*...........999.....743......169............477...961......973............$.......
.574...........6*262........398....204......*.....%.......525...........*.........................412..*.........376...*.@43....=......=....
....*836....................................25...619............658.....172.......................*...408...........*........%...776..802...
.............307.......&........537..988..............128..-.....*..........................118...327......296.......967..991...............
.....899...$...*....788.....829......=....................559.722.......519.........385$...+..................*.323*..............*123......
........*.930...674...........*..........447.......801..............957....................................111......767..34....556..........
..565.644..............18.....472.........*...8........................*........258........901.................296.......*..........*.......
....*............995=....*................649.*...151.........437%...445.747......-.........&......#......%.....*.........800....357.240....
....476.491/.931.......121..732*940..682......975..$.....*..................+.358.............../.363....152.264........$...................
.............=....730*..................*584...........234.........996.................*.....701........................499............649..
......................672......@.............................958.....&.+...........983.673........233.@981........760.......................
..942.993@......293...........939..&....@.........867..92.....*........679.........................*.............*.......27...998...........
....#.......230.$...................36.24....809..#....*...660.....$.......748..199.-.............717...@......................../..........
......*95..............647...$..............-.........461..........757...........*...68...............728..210*680..708......$.....246......
...355.........*..........*.538...%..............................-...............977....209*.......................*.........141.....*......
...............680.....670.........784........171..799.........317..........................844........166........289.................463...
+83
View File
@@ -0,0 +1,83 @@
with open("input.text", 'r') as f:
contents = f.read().split("\n")
sum_of_parts = 0
for index, line in enumerate(contents):
# Find numbers
part_numbers = []
num: bool = False
num_index = None
length = 0
for char_index, char in enumerate(line):
if char.isnumeric():
if not num:
num_index = char_index
num = True
length += 1
else:
if num:
part_numbers.append((num_index, length, line[num_index:num_index + length]))
num = False
length = 0
if num:
part_numbers.append((num_index, length, line[num_index:num_index + length]))
if part_numbers:
print(f"index {index}, {part_numbers}")
# Check for symbols
for part_index, part_length, part_number in part_numbers:
symbol = False
minus = 1 if part_index != 0 else 0
add = 1 if part_index + length != len(line) else 0
start_index = part_index - minus
end_index = part_index + part_length + add
# Check line above
if index != 0:
for check_index in range(start_index, end_index):
check_char = contents[index - 1][check_index]
if check_char != "." and not check_char.isnumeric():
sum_of_parts += int(part_number)
print(f"Added {part_number}, symbol at ({index - 1}, {check_index}), symbol = \"{check_char}\"")
symbol = True
break
if symbol:
continue
# Check current line
if start_index != part_index:
if line[start_index] != "." and not line[start_index].isnumeric():
sum_of_parts += int(part_number)
print(f"Added {part_number}, symbol at ({index}, {start_index}), symbol = \"{line[start_index]}\"")
continue
if end_index != part_index + length - 1:
if line[end_index - 1] != "." and not line[end_index - 1].isnumeric():
sum_of_parts += int(part_number)
print(f"Added {part_number}, symbol at ({index}, {end_index - 1}), symbol = \"{line[end_index - 1]}\"")
continue
# Check line bellow
if index != (len(contents) - 1):
for check_index in range(start_index, end_index):
check_char = contents[index + 1][check_index]
if check_char != "." and not check_char.isnumeric():
sum_of_parts += int(part_number)
print(f"Added {part_number}, symbol at ({index + 1}, {check_index}), symbol = \"{check_char}\"")
symbol = True
break
if symbol:
continue
print(f"Sum of engine parts: {sum_of_parts}")
+10
View File
@@ -0,0 +1,10 @@
467..114..
...*......
..35..633.
......#...
617*......
.....+.58.
..592.....
......755.
...$.*....
.664.598..
+140
View File
@@ -0,0 +1,140 @@
...................15....904...........850.................329...................13....................................871....816....697....
...........53.497........................%....906...610.......*.............735#..&...*......558...68...............68..*......&....*.......
..........*....$....................132.........*..........844....875................350............*...............*..336.364...649........
.......726.......341..................*...186...358..................*244........57.......@.........738......*.....663.................584..
.............952.*......33......660..704............949......................518*....234.967....551........971..&.......................*...
.......738...*....222......................706.......*..825.............474%...........*...........*.405.........779..............542...405.
.74.........366....................192..........542.737....*760...................623/..730.....718.../.....................$17......%......
...*126.....................%........*.504...=..*.........................................................974...............................
........331/..901.........337..........*...461.698...............*461.....814............................*............975...............165.
..../.........*.....................262.......................313........*........530.56.....567.......897.....*.........*.9................
....953....355...@703..................................609..............462.......%........./...............108.557...501.../...724.........
..............................................=.........%.......46......................533....670...............................*..%630....
.........................91...382*204.........154..%.............+.524.995..............=.....*...........7..........692.92*56...73.........
.685....*....70.189.......*.........................773...830/....../....*........=.........565.............464................$....738..130
.........938..*........993..............*.................................243...340...753...........*...882...............108.647....*......
..............762..........348.......280...............364*526...........................*........552.....=....25..682....*.........164.....
.....948..............813../....644......62........................................#.....657......................*.........................
......*...........................*.................$745.......739.....*...399...30............&..@...........924.117..........309..........
...883....544.....33.........585=.428.146................288.....*..853....*...........*891.409....429..460...*..........997....*........187
.............*818........829..........*....846..............................248.....574..................*....789.......*.....965....-..*...
......=.....................*..........370.......850+.............313...........................573....621...............268.......58..800..
....67....287.............481..709...............................*.......#74...................*.................965........................
............@.291.............*.........607*....950.475..309...66..932........395..374..........155.891....472..*......774.............&....
....207..........%..262......543..887/......711....*.......+......*............*...*........823............*...93...........377.....764.....
.....*...968.951.......#................................$.........453...366..736.972........*.............697........*618...&...............
....984..*...............-.......................884..23......492.....*..*................70..523.....25........$.....................370...
..................870...187.......548#.522..458.....*..........*....956......535....../.........*.525*........197....@..*266...123.....*....
.........501.....*..........................&.....323........257........956..*........80..946.592.................211.........*.........311.
.....380*.....867...653..347....................*........93=...........*......515..........-...................................678..........
..........876......&....*.......&631.950.647...631...@...........=...705..914................739..............319......713.........*97.#918.
.....805...*..........118................-.........790....559..51........../........*.........*......550......*........./.......647.........
......-..428.....599......813................413..................280............840.654.......91.....*...........236.......$...............
.............=...%.......*.....77...................#.492............................................96..........@.......175....%...........
......*427..569..........47......................999......314.....636*253.................764.................27......-..........415..386...
...142................$................@..320........969...................882*311...............#..751...........=....649...........*......
.........*723..993.976....638........475................=..800.......................*764.710...574....*964....831..........473......531....
...%..486...................*....#..................................831...........375........*........................=824......21..........
559.........................441...316................................./....................618.407.......83.......972...............91......
......*.....25..741...................%...............*63.546$..905......27........861.756........*.......*..........*...28...57............
.......794....*./........782...236....47...........937...........*..755....*505..............23.948.......560.532...421....*..#.........405.
............566.................*........-850..872.......90....229...+..........978..684............225..................675.....591...*....
.............................296..243...........+....691...................311.........$......321......@......827....$13.......$....&..530..
.....664..422$....613.....@.........%.401/.$974.....-.........%.145....729......*........./.......106............%.......=.....611..........
.......$.........*.......857...147*.............591........+.46..*.....=........306.67*...818.............................261....../........
............823...785..............340.........-....564..777......456.......%....................891.................560...........642..181.
.....394.....*................226..........423..............................539.................*............640&.............535...........
.......@.....626..317..329....*...92........+..................374....827............*.683+....771....529.........303..........*............
.........172.....-........*......*.....332...........288..229..+.........*.786=....468.............*....*...........*....461...249..=.......
....974...*............901..@....130..*..............$...*..........4.573................163......429....808.464*47..231....@......964......
........183.................582........11...............310.....774.*.....567.............*....36...........................................
.......................939.....................*826............@.....892..........481......266.*...-253.........106.830....235......*..841..
727.........177#.........&.......507........301..........................550..242*.....+./.....686.......@.446.*.....*.......*....894..*....
....67...............468.....&......&..596......................817.600...............85.5.............973...$.805...513......378.......388.
...........*247.........*.....974.........*263....329....476....*............721............723.....................................358.....
........784.....434.....667.......................*............615.195.612...............................540#........347...........*........
...............*.................76......121...659........@555..........-.............201......................866............628.505.509...
.............515........../.................#....................281..%...656............*670.419.......799.......*...510.786...*.......&...
....993.................540.373....709.............705............*...132..#........298$......*...232....*..@..878.......*....528...#.......
....$.........615.............*..........948..........*........565................%..........465..#.....497.67....................631.......
.........138....#....417......123...........*.......546...821...................114..=............................258.859=.380-.............
.....734*.............../.............833..399..........................+............780...288..............117..@...................925....
................*860..........228........*...............................956....390*........=..........%...*..........839...373......*......
..802........369........641.............763.....154.24...............302............620..............150.403.......*.........*....647.......
...................................&........466*.....@..................*827....530.............................129.628.....923.........=866
..........&......&.............824.573.................669.........................$.....374..627...........698.....................759.....
.......499....%.812.857*653...................668..........879.......974................../......*926...852.........................-....832
...646......284..............708...369...........*808................-.......705.......@...............%.............492.462............*...
....................959......#.......*....872..........................102....*.........80..839....996..............*.....%........83...49..
.785............363..*.............49.......*.......667.....797....224.......586..............&....*...34..673.......650....................
....*..*132....*.....225...................631..350..*.........*....*.............941....=.......52....*.................406...546..........
.543............760.........305..325...330.......+.................621...........*.......63..#.......268..239...................#...........
........658..................*............*...........735......820.....145....419...........91..489.........*......404.......*....#.........
..........=....415+.....38$....844...+..366.............*.......*......*..............................43....945.....#.....563.205..211..183.
......267.......................*...519.....730........836..........277...........808...........504...&................................#....
.....*..................705/....575..........*....../..........$866.........=.......*...975......#.......183.931........%.......611.........
.......135.......284........................246.653.972..............365..191.....376...*.....&.........*......*.........994...@.....11.....
...440../.........*.............................*..............415.....................985..838......677.......109...................*......
...@............224....399.727$......68#..........................$......432.....214$.....................#.................591....686......
..........&.......................................658........143....779.+....942......$.............885....567..........$...................
.461.......33....277.407......108..............47.*.............*...........*.......$.811............................390....................
..........................907*.....#397..307...*....197.12.....3...738....254.85..393...............713..700..741...........176.....883.....
..316........180...........................*.758...................-...........................................*............*...............
....*..../........871...338..165.........683............455...701*......................540....255.......$....858........277....28....+.....
...660.469..912...#..........%......743.........439.....-.........206......363..........*.......*.......640............................144..
..............*.........443...............610.............803.............*.............879...658............$................189...........
...........172......794........98..............646......................662..............................*....49.-210.523.257....*..........
...87..662.....#.......*667....%..408..........*............220...524............=.....742..39..160....64.636..........*..*....974..378.....
...*.....*.....42..&.............=....371*.....804.................*..#....../.240.....*........................395%..461..818.....*........
....706.398........452....500.............406..........57*380....365.42...635.......131...........18.....538.....................403........
..............143........*.........80............740..........................*245......784........-...........708...................&.297..
.230...........*.......373..341...........................$438.......*.................=.............874&..959*...........192......829.#....
...#..........476..647.....*......................................431.728..........................................50.....$.................
........334...........*731.930......=........966........*323...................301.....%....404...............879....*372.....208.134.......
...........*.....................163..........*......509......................%.....&..785.......................*...............*..........
...768..329....199........................................797......*368..........873..........26.565....651.....664......111..........217...
................*.....26.......705*76....415.............*................................749..........*..................#......545-..%....
....-....473..517......*...............5*....449..........68........................751.......*399......401.................................
.730......#.........240...&..65.718.87......*.....532..............-....567............*....................675.......67..463...............
.....289#....509........200......*...*....852....................885...+....663..72..507......998.&954..213....$.....*.........672..........
..............................403.....129........377-....................../....&.................................473...........*...........
.........855=.........250...................961........860*916.......981..........326.........633..404................676.%566..120.........
892...........532.............754.......866*....790..................#........819*..............*.........%.44..=......*............29......
....@527.......*..................600............../...$568.....800.....................179..528........613.....358...949...................
................302...807............*..895.................+.....@.....-...........................980...........................736.......
........217...=......*............879.....+.-..........%.....793.......442.......422............209*.......&.......969....240.378...*.......
....340*.....145...%.596....................23....703...217................372..........610.................129.......*........../.....=....
.................790.....&............904............=............795......*.......385=...+.....88*143...............891....406.......79....
............*749.........31..............*....318.................+.......317.................................%419.............*392.........
....854..797......*..500...............614.1...*..............803.....451............330.159.143.598.......+......./827...............717...
...@............924.*........................245............-.&..........*...606................*...........461............604....#....*....
....................73....160..406.150...............933.957...................%.......419.........665..*.........-.......*.....721..573....
....*915.........40................*...%.............*........584.......929......377....*..404.935....&..870.....93........395..............
.781.............@...........632.......710....769.323............$.........*.........904.....*...*.....................859..................
.....=.......................*...646............-.........................52................149...414....................*........%.........
...51....524.625..........328...*.................................295.734......@..........................856.291.695....367..218..787..8...
.........../.*................339........................576/.417*...........445...@........................%....................-..........
....869.85...316.....308...............345.......749.............................264.............775..777...............................89..
.......*...............#.........$....*..........*....../.....786.713*52.................357.......&./.........#......971....74.305....-....
............................325..770..167..@.....265..+..883................................+...57..........312.......*........*............
......+.....266.....788.111....*..........342........588.......939..393*717.............488....*....................401....249...255........
.......308..*............#.....816....465..........*.....492..@.............581.........-.......397..709*.................$.....*...........
.............511.....881...+.........+..........178..524*..............150..../..720.......843...........964....129.../......908............
.......749.............*.526.$............800............................*.........*...500....*.../.................487..........200........
..668......*639......932......139.726................#...51..436$..................775...*...834..874.......%..............859+......439....
........810........................*.......805.......100..*...........999.....743......169............477...961......973............$.......
.574...........6*262........398....204......*.....%.......525...........*.........................412..*.........376...*.@43....=......=....
....*836....................................25...619............658.....172.......................*...408...........*........%...776..802...
.............307.......&........537..988..............128..-.....*..........................118...327......296.......967..991...............
.....899...$...*....788.....829......=....................559.722.......519.........385$...+..................*.323*..............*123......
........*.930...674...........*..........447.......801..............957....................................111......767..34....556..........
..565.644..............18.....472.........*...8........................*........258........901.................296.......*..........*.......
....*............995=....*................649.*...151.........437%...445.747......-.........&......#......%.....*.........800....357.240....
....476.491/.931.......121..732*940..682......975..$.....*..................+.358.............../.363....152.264........$...................
.............=....730*..................*584...........234.........996.................*.....701........................499............649..
......................672......@.............................958.....&.+...........983.673........233.@981........760.......................
..942.993@......293...........939..&....@.........867..92.....*........679.........................*.............*.......27...998...........
....#.......230.$...................36.24....809..#....*...660.....$.......748..199.-.............717...@......................../..........
......*95..............647...$..............-.........461..........757...........*...68...............728..210*680..708......$.....246......
...355.........*..........*.538...%..............................-...............977....209*.......................*.........141.....*......
...............680.....670.........784........171..799.........317..........................844........166........289.................463...
+125
View File
@@ -0,0 +1,125 @@
with open("input.text", 'r') as f:
contents = f.read().split("\n")
sum_of_parts = 0
"""
{
(1, 3) : [467, 35]
}
"""
gears = {}
for index, line in enumerate(contents):
# Find numbers
part_numbers = []
num: bool = False
num_index = None
length = 0
for char_index, char in enumerate(line):
if char.isnumeric():
if not num:
num_index = char_index
num = True
length += 1
else:
if num:
part_numbers.append((num_index, length, line[num_index:num_index + length]))
num = False
length = 0
if num:
part_numbers.append((num_index, length, line[num_index:num_index + length]))
if part_numbers:
print(f"index {index}, {part_numbers}")
# Check for symbols
for part_index, part_length, part_number in part_numbers:
symbol = False
minus = 1 if part_index != 0 else 0
add = 1 if part_index + length != len(line) else 0
start_index = part_index - minus
end_index = part_index + part_length + add
# Check line above
if index != 0:
for check_index in range(start_index, end_index):
coords = (index - 1, check_index)
x, y = coords
check_char = contents[x][y]
if check_char == "*":
if coords in gears:
gears[coords].append(part_number)
else:
gears[coords] = [part_number]
symbol = True
break
if symbol:
continue
# Check current line
if start_index != part_index:
if line[start_index] == "*":
coords = (index, start_index)
check_char = line[start_index]
if check_char == "*":
if coords in gears:
gears[coords].append(part_number)
else:
gears[coords] = [part_number]
continue
if end_index != part_index + length - 1:
if line[end_index - 1] == "*":
coords = (index, end_index - 1)
check_char = line[end_index - 1]
if check_char == "*":
if coords in gears:
gears[coords].append(part_number)
else:
gears[coords] = [part_number]
continue
# Check line bellow
if index != (len(contents) - 1):
for check_index in range(start_index, end_index):
coords = (index + 1, check_index)
x, y = coords
check_char = contents[x][y]
if check_char == "*":
if coords in gears:
gears[coords].append(part_number)
else:
gears[coords] = [part_number]
symbol = True
break
if symbol:
continue
sum_of_gear_ratios = 0
for gear in gears:
if len(gears[gear]) == 2:
gear_ratio = int(gears[gear][0]) * int(gears[gear][1])
print(gear_ratio)
sum_of_gear_ratios += gear_ratio
print(f"Sum of gear ratios: {sum_of_gear_ratios}")
+10
View File
@@ -0,0 +1,10 @@
467..114..
...*......
..35..633.
......#...
617*......
.....+.58.
..592.....
......755.
...$.*....
.664.598..
+213
View File
@@ -0,0 +1,213 @@
Card 1: 69 61 27 58 89 52 81 94 40 51 | 43 40 52 90 37 97 89 80 69 42 51 70 94 58 10 73 21 29 61 63 57 79 81 27 35
Card 2: 5 75 37 76 98 32 24 83 44 50 | 80 75 91 5 33 52 31 96 83 92 46 98 55 65 48 24 44 4 32 60 88 37 76 50 77
Card 3: 37 39 43 53 47 20 50 56 78 65 | 80 56 32 78 72 97 40 77 17 50 87 99 36 93 63 19 39 59 44 52 23 75 9 51 43
Card 4: 6 25 31 60 2 50 89 67 82 16 | 65 89 5 67 68 53 50 6 51 25 96 32 2 16 41 60 63 90 82 30 98 31 75 14 7
Card 5: 43 39 98 45 33 87 36 23 61 66 | 93 61 4 21 47 32 94 99 45 23 87 64 92 43 33 5 83 16 98 44 39 77 66 18 36
Card 6: 59 6 65 20 62 3 92 79 98 24 | 80 15 28 70 24 32 93 99 91 86 95 16 90 83 11 75 19 4 48 6 78 61 20 27 7
Card 7: 49 54 25 44 79 68 13 60 1 43 | 16 18 4 82 99 23 80 46 79 55 14 1 32 13 54 84 37 44 20 68 25 60 27 49 43
Card 8: 52 50 19 69 28 93 32 98 97 47 | 2 40 28 47 20 60 66 98 12 19 31 14 16 75 97 49 93 69 11 52 50 87 24 32 27
Card 9: 47 44 94 43 75 49 77 24 93 45 | 94 47 30 43 24 77 44 31 66 75 45 54 92 49 84 53 20 11 17 16 86 93 50 85 76
Card 10: 23 39 92 16 68 30 49 59 34 90 | 85 15 25 31 92 90 47 59 11 36 68 10 96 65 16 49 18 97 9 83 28 61 4 94 46
Card 11: 21 37 14 89 46 31 64 90 43 45 | 63 29 14 23 7 28 13 86 83 16 19 24 78 54 47 51 58 77 71 40 56 62 20 89 39
Card 12: 69 98 97 19 70 5 62 25 55 90 | 1 35 45 25 75 61 50 99 82 96 71 74 72 76 3 70 14 57 88 27 5 94 58 32 85
Card 13: 24 51 65 64 29 37 86 60 41 94 | 40 13 88 85 46 59 90 55 8 72 56 93 6 71 52 87 31 91 20 5 83 36 86 43 96
Card 14: 43 76 64 80 49 48 83 14 51 54 | 1 99 54 36 80 48 49 15 43 17 51 96 83 40 76 14 41 75 84 55 63 91 64 58 9
Card 15: 9 33 75 53 48 76 25 83 28 24 | 1 10 69 28 76 87 71 52 26 44 66 92 75 55 7 40 93 20 12 91 30 33 46 39 31
Card 16: 55 92 85 21 81 90 47 63 34 70 | 26 2 1 87 59 69 40 58 46 43 70 17 35 71 6 63 49 13 81 11 85 94 44 96 5
Card 17: 21 42 95 24 35 53 39 14 18 4 | 76 23 5 79 22 20 36 69 38 77 40 37 32 89 49 15 59 44 51 25 74 34 54 16 28
Card 18: 63 21 61 65 82 69 27 74 98 58 | 51 58 86 21 90 54 45 41 71 74 83 6 42 1 35 78 31 9 55 46 11 15 63 84 82
Card 19: 44 41 24 51 74 20 97 31 83 39 | 17 24 2 54 73 28 13 55 49 79 42 62 58 8 95 23 86 70 76 41 26 4 80 25 11
Card 20: 83 61 55 56 96 16 95 49 65 90 | 67 75 63 37 87 54 39 19 99 81 47 49 24 84 41 13 78 40 38 64 26 34 15 72 48
Card 21: 23 89 57 54 90 82 2 8 65 80 | 78 14 21 39 45 42 1 80 99 20 52 11 31 50 68 82 59 4 96 55 6 46 88 38 34
Card 22: 85 6 4 41 5 35 31 19 64 17 | 83 56 96 41 16 39 70 81 67 51 74 99 1 18 43 48 5 85 29 88 30 52 69 11 61
Card 23: 72 88 38 82 33 10 75 44 70 53 | 7 71 56 96 19 89 30 67 21 22 48 45 80 86 39 61 4 44 74 28 23 40 46 72 78
Card 24: 75 67 13 39 63 58 43 35 49 99 | 28 46 17 95 55 2 83 18 42 91 20 78 97 51 60 81 47 69 64 57 37 77 12 61 67
Card 25: 87 44 62 66 82 20 7 21 51 32 | 54 97 46 1 95 14 26 47 94 25 49 30 84 12 5 73 48 89 45 53 28 74 93 88 13
Card 26: 65 6 10 66 15 26 47 62 63 68 | 5 60 71 41 68 66 53 26 6 56 38 47 90 62 63 33 81 10 15 3 16 96 83 65 20
Card 27: 7 95 47 35 58 87 21 68 80 37 | 94 24 39 74 43 78 69 54 10 32 84 99 41 75 6 86 11 66 56 62 16 44 5 59 65
Card 28: 95 19 21 14 59 74 27 68 32 99 | 83 35 5 41 92 59 26 57 18 55 52 32 6 23 36 54 56 50 15 48 27 89 45 53 12
Card 29: 1 8 93 94 72 89 13 37 58 49 | 35 62 88 26 94 50 31 87 72 78 85 1 44 49 22 5 20 91 98 13 77 93 60 48 52
Card 30: 47 94 67 27 56 25 38 52 28 32 | 22 61 56 82 58 27 32 18 33 94 79 23 62 60 76 98 67 49 77 64 11 47 40 16 42
Card 31: 61 68 80 67 41 6 52 33 22 91 | 54 10 72 91 31 33 95 43 39 68 81 22 63 67 32 61 27 73 66 75 36 79 6 59 80
Card 32: 62 5 57 36 87 33 53 86 82 8 | 76 32 30 5 53 57 86 56 97 77 18 33 8 82 15 71 83 17 48 90 9 43 54 88 4
Card 33: 79 25 27 11 17 23 76 38 15 26 | 83 80 37 36 77 24 20 55 16 59 81 7 19 1 18 91 42 29 22 2 41 27 6 50 92
Card 34: 3 8 29 57 87 88 97 12 41 95 | 29 94 44 20 34 28 76 12 95 74 22 85 31 64 91 50 1 97 35 49 98 41 92 67 25
Card 35: 43 79 50 20 6 76 25 14 66 89 | 93 72 50 67 38 89 13 87 46 54 36 52 20 57 56 17 3 22 43 63 14 84 15 29 16
Card 36: 68 15 59 47 30 98 89 27 5 25 | 11 8 32 72 18 74 73 48 39 53 51 88 22 90 55 40 14 44 66 12 94 71 9 13 31
Card 37: 11 48 72 90 12 86 34 32 51 7 | 52 80 36 46 74 64 44 27 11 47 61 84 55 28 77 26 58 54 3 5 17 60 89 16 72
Card 38: 13 97 42 79 96 69 8 57 90 48 | 84 67 52 8 20 54 21 45 69 23 28 85 92 95 40 59 87 2 50 83 14 6 16 70 39
Card 39: 87 67 8 38 15 20 96 30 45 97 | 36 28 43 35 9 27 14 70 29 1 40 56 60 81 63 48 53 44 31 75 49 85 64 39 69
Card 40: 63 35 33 6 58 97 91 34 67 18 | 68 61 98 66 84 20 37 41 17 50 81 14 60 78 36 9 65 21 83 2 71 79 85 7 47
Card 41: 75 97 62 6 92 69 53 20 45 5 | 5 53 56 69 84 97 75 62 39 18 22 64 6 92 70 41 45 20 17 63 7 9 54 29 21
Card 42: 64 21 72 62 90 50 84 28 71 37 | 71 38 64 50 42 4 65 85 91 21 55 58 10 92 90 7 17 60 84 70 37 72 28 98 62
Card 43: 58 28 84 32 92 18 48 73 86 5 | 43 32 33 35 84 50 64 6 21 52 92 58 29 95 11 18 28 79 48 77 5 86 60 73 10
Card 44: 30 69 44 40 5 58 22 63 65 90 | 65 68 69 43 58 5 72 90 22 63 52 78 66 15 60 88 30 12 74 44 67 40 41 38 29
Card 45: 69 53 87 59 27 10 16 90 52 35 | 83 4 87 89 11 30 45 70 52 13 35 92 90 79 6 68 71 86 16 97 26 72 39 96 53
Card 46: 78 8 1 64 87 6 3 7 75 82 | 48 84 56 8 89 73 31 68 64 46 40 6 41 14 78 97 91 27 95 28 47 30 37 58 75
Card 47: 58 24 13 97 18 50 89 9 14 81 | 97 24 54 16 14 32 78 62 50 5 18 42 20 99 15 58 13 89 96 72 81 75 29 9 86
Card 48: 87 83 32 53 5 72 86 84 65 9 | 30 89 54 53 58 13 85 81 83 39 71 5 91 65 68 82 94 42 87 24 86 29 47 32 28
Card 49: 38 4 66 35 19 56 78 90 81 65 | 60 16 82 68 7 49 15 32 3 22 48 11 38 53 83 45 54 23 5 81 78 34 63 27 65
Card 50: 9 48 47 87 99 6 65 2 44 75 | 75 79 55 82 44 27 42 48 51 65 16 68 3 52 30 62 84 66 87 69 8 10 86 35 72
Card 51: 28 24 85 63 96 30 88 29 5 50 | 71 61 30 90 65 96 41 50 82 68 39 10 81 29 48 26 80 97 28 24 27 88 38 5 63
Card 52: 86 80 90 33 19 78 13 69 89 27 | 62 54 85 88 97 64 37 31 29 6 94 69 67 51 57 58 89 13 76 55 22 96 63 66 38
Card 53: 75 5 78 44 10 77 3 89 39 4 | 41 61 76 56 75 85 7 22 19 51 5 87 53 10 79 24 39 94 26 57 1 35 83 32 34
Card 54: 70 80 59 16 6 99 83 37 26 8 | 62 58 16 74 35 53 94 1 80 89 61 11 86 36 83 14 8 39 43 6 92 99 18 64 79
Card 55: 41 39 43 58 60 65 74 76 11 46 | 58 42 60 59 13 16 83 55 37 25 32 96 22 79 69 2 89 3 21 71 35 67 95 19 45
Card 56: 10 18 89 9 63 51 81 4 49 75 | 3 32 45 68 87 65 71 55 79 89 37 64 21 53 30 62 26 6 90 51 70 74 22 10 54
Card 57: 27 58 75 7 80 71 45 46 26 55 | 67 76 91 16 69 82 24 48 46 87 28 20 75 36 86 8 51 42 9 84 3 43 27 34 70
Card 58: 64 55 76 63 58 66 34 27 46 62 | 79 22 69 33 1 81 4 76 36 40 88 39 2 47 89 48 29 77 93 67 41 10 95 19 63
Card 59: 62 1 42 32 48 12 94 36 33 86 | 71 41 46 96 12 55 10 38 15 43 1 60 67 2 30 89 37 98 19 18 69 25 50 20 77
Card 60: 11 14 6 57 55 62 88 19 24 26 | 45 58 88 83 51 36 46 32 85 17 61 33 31 2 91 9 78 39 81 20 87 86 64 66 49
Card 61: 9 28 27 33 53 71 38 63 55 60 | 26 77 83 57 75 50 3 68 31 52 24 94 40 18 8 80 70 5 25 72 47 44 45 89 19
Card 62: 47 64 33 74 26 82 21 30 69 39 | 29 68 65 37 60 58 17 48 75 91 2 9 16 31 46 49 97 57 94 40 34 13 11 43 39
Card 63: 1 16 10 67 73 48 66 78 55 32 | 31 54 78 79 42 34 81 55 37 63 29 73 90 48 11 77 67 14 46 19 16 66 89 53 32
Card 64: 59 33 71 69 84 2 53 95 28 52 | 85 82 66 79 45 71 33 10 30 84 52 19 94 54 28 41 61 59 6 69 53 97 38 2 49
Card 65: 17 46 40 23 93 76 45 2 43 32 | 17 32 23 2 52 7 15 77 20 39 46 64 99 59 98 89 43 40 93 4 45 11 72 76 13
Card 66: 58 9 28 19 90 80 77 11 81 20 | 44 51 39 20 63 6 11 88 61 27 90 53 62 70 34 42 28 24 78 16 81 65 9 31 15
Card 67: 88 42 78 9 26 43 54 95 8 40 | 58 54 10 43 60 36 40 42 95 63 4 88 82 50 38 26 8 99 31 74 13 46 91 61 44
Card 68: 32 95 6 83 30 14 38 15 87 70 | 79 15 64 45 99 70 17 38 87 93 83 53 14 77 85 32 19 95 29 6 7 61 90 30 67
Card 69: 76 15 92 22 48 46 42 39 84 32 | 51 26 1 9 2 73 17 94 6 62 92 77 32 90 43 48 81 22 88 58 78 46 79 98 15
Card 70: 62 90 81 15 8 3 72 93 65 32 | 57 62 3 80 26 67 10 72 54 36 98 29 17 90 93 32 49 48 76 8 12 31 65 81 15
Card 71: 74 46 75 14 56 20 83 28 35 61 | 57 61 75 59 54 55 56 32 71 4 18 60 72 94 39 86 30 50 48 41 7 14 77 73 85
Card 72: 47 63 42 84 87 78 21 56 97 26 | 87 40 78 1 48 7 26 63 42 37 30 97 65 84 14 93 85 39 47 11 50 71 21 28 56
Card 73: 20 56 88 38 50 74 76 69 63 17 | 73 47 87 89 98 18 33 14 3 78 72 39 77 97 74 80 81 51 88 59 46 2 70 69 20
Card 74: 44 74 4 59 77 99 66 81 8 6 | 75 88 25 73 74 86 16 8 99 17 50 22 83 35 67 3 77 5 46 34 68 80 6 23 54
Card 75: 58 25 36 26 80 12 88 51 98 71 | 71 66 77 83 51 61 23 98 33 53 18 75 43 20 26 92 70 90 25 94 86 12 34 36 22
Card 76: 14 79 44 82 59 75 43 88 12 52 | 11 30 26 74 82 91 72 79 35 69 52 24 13 23 3 22 78 38 43 10 14 53 76 66 90
Card 77: 65 79 38 39 3 18 89 51 9 41 | 5 87 13 45 86 85 72 7 92 22 36 69 67 82 40 73 83 15 34 59 68 57 31 84 71
Card 78: 67 89 71 15 39 66 29 97 11 38 | 4 95 21 74 29 43 51 65 31 91 98 39 71 13 93 88 64 47 40 76 58 6 92 80 81
Card 79: 8 60 27 44 15 52 91 99 35 47 | 97 1 35 81 53 79 16 23 52 77 11 56 2 85 21 96 46 83 5 37 49 93 13 76 69
Card 80: 1 37 16 40 6 48 66 26 90 12 | 87 23 24 5 67 80 20 53 95 66 93 85 7 34 32 52 92 61 9 27 41 35 36 57 38
Card 81: 72 39 83 5 69 43 73 92 88 78 | 77 74 68 78 9 75 50 65 8 14 35 96 64 80 58 6 4 46 57 61 66 85 48 40 34
Card 82: 38 2 71 61 46 97 8 84 43 24 | 91 50 76 58 17 11 66 60 65 16 44 70 96 20 37 94 30 99 6 69 32 29 81 49 48
Card 83: 50 89 48 66 96 97 28 5 12 76 | 89 93 79 68 16 48 44 42 28 41 83 50 97 96 76 82 15 57 10 66 5 12 74 38 4
Card 84: 9 71 98 81 59 30 99 45 80 48 | 6 17 31 35 88 57 10 81 77 70 58 21 34 63 51 84 74 37 64 80 29 16 3 11 76
Card 85: 36 86 69 83 56 51 19 67 65 10 | 35 3 55 38 90 59 82 2 32 10 17 36 52 69 83 65 13 92 97 99 48 30 87 68 70
Card 86: 6 96 82 83 89 31 91 20 28 5 | 20 11 84 45 50 81 23 56 24 28 1 53 2 57 54 64 3 94 96 43 6 26 91 77 66
Card 87: 84 22 38 2 94 23 76 64 29 42 | 13 99 48 23 62 82 38 91 31 88 14 43 66 94 36 64 49 85 26 97 71 39 22 68 60
Card 88: 69 25 81 63 86 79 1 64 76 38 | 85 81 63 6 69 50 16 65 54 25 27 38 84 76 7 64 79 12 86 88 70 94 39 1 20
Card 89: 7 43 74 93 60 24 33 53 97 35 | 62 51 93 86 81 71 63 2 13 99 66 83 97 37 10 77 55 27 73 92 67 19 33 88 96
Card 90: 2 78 5 23 69 72 93 86 55 24 | 92 38 66 85 34 52 83 24 31 6 25 13 33 30 17 7 81 15 16 9 21 53 94 2 77
Card 91: 34 21 58 13 99 32 61 65 49 30 | 50 73 18 84 99 53 21 61 94 22 26 93 30 68 34 65 58 72 77 32 49 11 13 39 9
Card 92: 15 67 55 79 9 88 33 7 94 49 | 20 94 87 58 9 35 93 7 67 21 15 57 30 56 88 85 5 13 60 83 2 55 38 28 6
Card 93: 16 11 80 5 33 23 96 21 56 94 | 1 37 85 94 72 42 66 16 10 70 86 77 33 21 55 11 6 45 96 29 90 14 80 48 64
Card 94: 2 57 51 10 3 70 63 60 1 40 | 67 80 96 98 52 74 97 33 92 88 19 62 43 73 55 3 1 20 95 99 12 90 17 24 56
Card 95: 80 18 73 50 2 3 83 65 33 26 | 7 78 28 4 2 19 14 29 61 81 17 38 57 89 11 20 5 12 13 10 24 96 75 25 55
Card 96: 98 53 54 50 20 34 28 96 59 88 | 52 41 53 29 40 15 88 93 30 76 97 81 73 17 12 70 6 63 27 32 64 48 69 96 44
Card 97: 66 82 79 74 75 71 29 32 96 50 | 62 46 76 30 21 50 98 17 32 75 87 96 41 42 79 73 45 92 51 91 78 35 27 72 74
Card 98: 93 39 91 70 97 33 57 69 53 73 | 38 71 33 25 52 26 75 94 93 42 17 82 7 27 47 89 18 11 20 91 40 31 55 19 4
Card 99: 93 31 61 29 77 60 66 92 3 10 | 55 63 56 4 61 33 60 85 45 48 78 27 25 36 42 93 20 67 49 21 7 83 65 13 71
Card 100: 21 86 19 62 53 34 88 42 71 47 | 74 7 79 85 22 60 76 10 40 62 50 92 20 24 12 42 15 31 56 90 44 72 34 11 95
Card 101: 8 68 64 72 98 60 56 69 57 25 | 24 5 95 77 89 58 39 63 80 48 53 66 38 61 31 3 43 1 16 71 52 82 19 14 51
Card 102: 47 39 45 40 54 93 87 26 33 67 | 95 80 98 3 24 53 96 9 90 13 35 21 86 88 63 55 1 42 25 56 32 60 34 40 77
Card 103: 64 18 52 28 82 54 31 49 66 44 | 4 78 40 73 32 99 33 6 29 46 11 25 47 36 14 97 79 61 63 50 55 26 30 58 77
Card 104: 95 84 89 87 57 53 12 43 58 1 | 59 45 57 58 39 61 52 81 43 40 23 86 1 97 95 55 89 84 87 6 17 85 53 12 28
Card 105: 98 81 56 52 37 26 46 39 88 36 | 4 34 88 32 5 73 98 26 39 77 93 42 62 82 41 81 56 1 12 33 46 36 14 52 37
Card 106: 97 98 42 95 14 87 41 46 44 27 | 5 82 46 66 87 41 51 55 13 27 7 44 31 97 77 10 14 90 98 94 95 12 79 42 35
Card 107: 15 30 60 32 25 73 77 63 85 81 | 16 86 56 41 20 51 25 52 73 40 74 32 15 61 99 34 60 85 77 30 5 27 63 35 81
Card 108: 65 59 24 72 54 66 14 81 67 31 | 94 92 83 67 50 19 61 6 42 55 60 97 22 18 24 40 86 43 72 56 5 75 63 45 90
Card 109: 90 87 3 17 80 96 36 93 34 79 | 51 11 29 96 13 66 70 99 72 67 64 42 37 30 55 98 35 12 15 84 5 10 57 19 49
Card 110: 57 82 85 42 23 76 70 64 88 21 | 65 32 76 81 7 43 23 52 55 14 70 58 27 82 48 64 85 47 57 16 46 97 68 21 45
Card 111: 50 62 66 33 93 43 56 70 77 35 | 94 79 19 16 35 41 78 32 91 4 14 3 13 48 63 36 75 98 64 69 27 96 77 51 74
Card 112: 6 36 83 73 59 48 65 12 29 92 | 12 36 82 52 8 35 88 69 9 28 89 39 87 20 22 67 27 63 75 73 70 58 31 78 79
Card 113: 25 10 29 67 87 32 54 92 62 43 | 65 19 67 75 79 29 8 73 62 97 82 87 25 18 32 93 49 5 66 27 68 42 43 11 46
Card 114: 29 44 96 86 64 37 4 71 94 98 | 5 27 55 76 33 59 68 77 3 96 15 1 46 20 35 61 53 83 78 69 99 97 34 30 25
Card 115: 32 90 91 88 39 66 37 35 12 21 | 85 82 71 37 87 22 72 17 35 9 58 95 64 12 33 90 68 66 15 43 4 7 91 8 84
Card 116: 75 50 66 77 51 36 98 23 97 28 | 4 66 44 20 35 76 51 83 58 89 91 87 75 27 10 47 1 60 97 90 77 45 63 59 36
Card 117: 85 44 56 82 39 64 30 88 79 20 | 71 88 53 27 36 85 13 11 38 91 77 19 3 99 23 73 39 44 24 45 32 15 58 79 56
Card 118: 80 41 82 32 1 52 91 40 66 11 | 72 3 4 29 77 87 36 40 16 46 66 30 92 76 98 49 85 7 32 28 60 86 52 95 83
Card 119: 50 66 77 26 2 49 9 25 58 81 | 80 49 50 55 16 56 20 42 31 99 69 26 28 85 66 65 70 90 84 53 40 19 60 12 38
Card 120: 48 9 95 85 16 70 81 61 57 92 | 2 58 66 10 34 54 7 94 16 14 25 74 92 49 88 13 57 26 99 97 70 75 65 19 17
Card 121: 50 76 20 25 53 17 2 78 85 86 | 14 40 78 89 93 48 1 28 11 4 54 71 5 69 85 61 38 94 66 64 98 95 30 67 23
Card 122: 62 92 40 16 25 82 64 87 52 53 | 5 19 25 48 38 42 1 99 51 79 2 78 75 57 81 56 70 47 59 91 90 6 9 24 15
Card 123: 50 91 29 69 41 73 44 51 13 26 | 66 55 22 6 17 71 1 3 67 24 88 79 65 64 60 34 7 90 78 72 28 83 82 74 10
Card 124: 61 77 51 39 73 4 6 25 53 91 | 54 88 26 11 3 79 10 86 23 49 66 21 47 85 5 2 98 7 1 60 55 13 94 34 62
Card 125: 31 67 93 63 21 28 12 85 39 57 | 69 46 22 59 55 75 11 97 70 1 94 14 81 96 79 44 18 36 85 34 56 48 30 72 15
Card 126: 31 89 5 98 63 36 40 48 91 12 | 91 42 6 47 51 94 48 83 5 77 98 8 11 50 29 9 36 54 89 40 12 63 31 34 73
Card 127: 41 88 97 87 13 80 74 49 24 6 | 43 66 62 47 36 87 6 88 24 49 96 56 25 79 8 76 23 97 41 42 80 89 13 73 74
Card 128: 7 6 3 99 56 40 80 27 23 43 | 34 64 97 67 3 78 69 43 57 98 96 4 6 94 62 48 23 68 8 1 58 73 75 65 16
Card 129: 46 80 39 32 35 41 61 93 57 47 | 40 63 93 89 61 4 45 46 25 96 80 39 35 14 62 95 49 32 47 2 41 99 57 82 44
Card 130: 90 10 79 84 88 76 59 18 62 11 | 79 11 53 97 92 5 88 52 23 60 62 64 86 84 14 20 98 91 10 28 24 29 87 65 3
Card 131: 95 50 11 76 61 4 2 8 42 47 | 40 15 46 61 8 2 29 97 65 50 19 83 76 95 59 82 48 57 43 72 42 25 31 47 53
Card 132: 49 86 99 81 13 98 69 32 89 18 | 89 84 65 58 32 15 96 49 1 18 22 13 98 99 6 81 46 50 88 78 3 11 69 74 86
Card 133: 18 56 75 7 48 40 38 22 10 90 | 10 42 61 18 91 38 12 67 72 54 51 22 86 77 81 87 75 34 89 97 35 6 96 7 62
Card 134: 67 66 99 61 98 32 6 82 86 9 | 12 8 33 87 82 66 98 78 68 24 59 80 6 44 32 49 9 2 97 65 86 71 99 61 67
Card 135: 24 59 92 68 44 20 30 8 40 77 | 28 72 51 38 58 40 30 24 21 77 92 82 59 18 50 7 19 44 20 68 91 8 32 88 94
Card 136: 27 10 70 96 29 69 37 63 86 65 | 28 27 8 34 29 82 78 56 22 30 3 19 63 88 67 74 75 4 91 41 35 65 7 14 66
Card 137: 74 70 86 34 89 37 73 23 29 85 | 16 65 58 88 8 5 11 26 39 91 51 31 19 78 92 87 36 34 80 94 42 81 38 40 93
Card 138: 71 35 5 13 69 8 88 11 76 31 | 69 42 5 59 76 54 37 11 39 9 12 73 66 13 71 89 56 26 28 77 2 31 1 4 57
Card 139: 10 50 78 91 55 61 81 19 44 59 | 97 98 39 52 56 28 94 24 3 54 45 82 14 17 5 16 27 99 37 38 26 31 53 9 35
Card 140: 17 93 15 73 45 20 43 50 2 52 | 64 21 15 57 77 90 2 61 22 8 91 39 93 82 62 5 47 30 41 80 58 1 17 25 48
Card 141: 52 66 4 8 87 11 14 76 23 24 | 3 55 29 16 26 61 12 43 89 15 56 24 5 36 85 62 90 75 65 71 53 45 38 50 54
Card 142: 57 35 91 73 66 67 64 63 92 18 | 96 58 44 37 19 41 72 54 52 31 88 20 45 68 42 21 2 59 62 53 70 63 77 57 69
Card 143: 88 70 69 13 18 97 64 89 40 29 | 74 98 30 5 85 12 38 62 66 33 36 17 71 9 97 22 47 79 39 60 89 13 83 77 8
Card 144: 14 35 52 8 75 43 62 33 36 70 | 13 95 71 64 6 48 74 84 61 24 89 77 17 58 87 75 76 43 28 54 3 83 99 67 12
Card 145: 53 88 65 42 72 92 43 14 3 90 | 21 19 33 59 84 61 96 41 20 31 88 71 38 72 79 48 58 55 62 36 23 11 30 18 70
Card 146: 68 28 58 96 42 32 22 90 19 47 | 84 25 39 96 67 26 29 24 9 62 1 14 46 11 77 81 61 82 60 80 78 52 31 98 49
Card 147: 81 85 76 67 4 63 25 97 57 27 | 2 26 43 9 56 59 29 10 13 45 35 60 86 65 15 46 19 5 79 8 44 1 6 20 21
Card 148: 90 41 37 66 94 87 84 14 9 29 | 94 47 5 10 23 38 61 87 55 22 75 97 37 29 30 9 18 84 69 41 11 73 43 45 14
Card 149: 84 30 17 21 47 26 81 68 57 40 | 86 78 70 5 54 40 34 38 47 72 62 56 53 7 10 37 73 92 46 61 41 74 68 23 63
Card 150: 83 21 33 53 37 57 66 29 41 6 | 20 61 75 89 59 60 41 83 21 29 30 57 66 58 37 76 90 96 53 69 33 17 12 95 6
Card 151: 12 5 52 36 3 29 69 6 82 27 | 82 12 27 44 50 15 76 28 29 52 57 36 73 3 34 5 94 37 6 92 84 9 10 98 69
Card 152: 82 62 80 30 37 68 41 89 12 5 | 60 32 64 57 41 74 89 16 72 20 26 6 91 18 52 68 62 55 5 30 82 1 37 80 12
Card 153: 97 28 55 92 70 83 58 44 67 40 | 24 58 55 88 92 40 6 83 12 70 10 22 44 76 82 97 4 98 65 28 5 32 7 67 74
Card 154: 31 50 70 87 43 26 55 30 14 54 | 43 72 90 20 10 13 91 54 75 39 26 70 17 87 22 60 29 1 27 69 14 31 50 67 55
Card 155: 21 4 25 52 3 16 98 43 72 81 | 87 4 21 43 90 67 39 36 13 64 6 25 29 16 83 84 5 98 9 81 78 1 74 12 96
Card 156: 77 46 21 67 59 78 63 30 45 48 | 48 35 17 62 44 25 34 67 23 13 63 81 99 29 93 84 73 96 86 90 88 30 60 85 21
Card 157: 43 32 99 39 58 3 38 81 79 41 | 79 41 34 8 99 80 70 43 51 38 29 68 32 83 58 2 6 36 63 95 81 67 3 28 10
Card 158: 43 68 57 98 30 58 47 40 12 93 | 91 62 48 6 52 16 72 34 28 85 81 94 26 4 99 30 71 44 80 65 40 60 58 18 49
Card 159: 62 30 18 57 61 68 65 98 10 56 | 98 32 29 1 15 77 55 10 13 30 80 93 38 86 70 99 97 19 85 33 17 21 48 47 89
Card 160: 30 47 79 28 57 77 73 75 35 40 | 98 25 96 11 15 34 19 35 6 38 1 91 29 57 61 22 69 12 40 21 41 17 27 39 56
Card 161: 62 58 10 14 73 95 77 97 47 70 | 15 46 1 36 3 66 27 77 49 45 94 65 23 61 76 8 91 42 82 13 85 67 92 68 53
Card 162: 47 24 44 73 3 10 30 98 5 29 | 75 99 37 41 60 43 13 67 74 23 82 40 35 64 77 25 4 9 58 56 8 7 85 70 66
Card 163: 10 17 99 41 6 14 81 23 5 84 | 95 11 99 62 53 23 8 73 48 42 96 47 39 94 56 30 58 63 22 66 33 26 35 5 43
Card 164: 71 32 31 15 73 3 70 91 61 18 | 3 16 77 70 33 94 62 40 88 32 90 98 66 49 86 68 95 7 53 97 96 28 4 75 35
Card 165: 61 74 1 76 17 22 19 83 5 96 | 83 5 47 29 52 40 94 32 70 95 67 84 56 31 18 62 42 9 53 36 57 48 64 15 85
Card 166: 84 96 57 6 48 13 42 12 19 99 | 67 29 25 81 77 69 63 56 8 27 80 62 94 30 78 10 45 49 20 95 50 66 61 6 24
Card 167: 21 41 29 39 24 98 68 40 7 78 | 44 19 53 13 17 4 2 64 87 60 1 51 10 35 94 52 25 75 92 95 80 67 82 42 86
Card 168: 18 72 92 63 3 38 82 65 85 61 | 53 14 92 63 74 75 97 56 85 82 30 4 42 34 18 61 72 65 20 47 43 3 38 39 40
Card 169: 98 91 13 27 52 51 36 82 80 78 | 78 42 51 62 36 38 4 95 82 17 91 27 12 98 76 13 84 52 80 32 39 50 48 19 2
Card 170: 94 67 3 32 73 84 11 47 23 90 | 94 84 66 73 32 31 23 18 93 29 58 81 95 16 46 53 89 4 11 44 49 67 90 82 40
Card 171: 2 55 5 19 59 73 29 65 12 23 | 33 75 5 53 90 95 68 73 29 71 11 45 72 54 59 12 55 85 56 19 17 24 8 92 2
Card 172: 74 43 65 15 59 37 11 83 20 85 | 59 30 36 97 78 65 88 20 96 11 51 22 93 63 94 28 3 90 68 95 73 43 13 74 85
Card 173: 53 46 64 33 65 55 8 81 1 36 | 12 22 78 35 57 96 36 3 27 29 52 80 2 79 8 76 93 54 1 24 48 32 94 14 64
Card 174: 20 38 12 24 28 39 18 59 75 94 | 95 48 91 36 56 63 62 46 67 4 32 97 39 66 93 55 50 34 5 85 29 76 45 54 7
Card 175: 26 96 12 74 65 57 51 18 83 75 | 26 89 74 83 65 12 58 88 92 22 8 39 18 51 34 96 75 44 94 35 30 90 69 57 23
Card 176: 48 64 15 96 42 33 88 27 50 86 | 36 85 60 68 93 63 33 17 28 70 24 50 96 38 54 53 72 90 41 86 74 88 75 64 48
Card 177: 66 27 35 76 89 90 31 26 20 95 | 51 94 62 77 31 5 16 20 30 86 75 42 23 11 69 24 87 76 27 60 80 46 43 57 90
Card 178: 83 38 10 89 18 80 1 67 63 7 | 37 28 46 84 94 89 38 21 24 68 25 92 60 34 58 54 76 55 11 19 85 33 93 15 8
Card 179: 59 82 88 8 21 16 55 2 56 45 | 2 26 73 81 90 5 13 55 21 82 69 8 22 99 36 68 53 88 86 56 16 7 45 87 28
Card 180: 95 5 4 34 30 73 98 89 6 37 | 7 28 72 6 95 37 68 4 34 98 82 73 84 8 65 5 89 57 15 42 56 45 69 11 74
Card 181: 85 69 79 50 37 34 11 84 5 89 | 4 35 99 48 21 97 93 25 8 37 47 79 34 16 76 26 55 67 50 75 63 15 58 84 5
Card 182: 70 10 57 74 60 93 9 41 79 32 | 19 18 96 8 49 2 50 94 93 4 23 89 11 39 38 97 58 56 82 21 13 28 65 47 29
Card 183: 53 70 11 25 1 37 32 4 78 45 | 23 54 83 35 11 41 1 47 18 60 36 71 10 64 95 49 69 32 45 46 61 9 4 52 25
Card 184: 71 31 19 43 12 93 30 56 17 27 | 61 20 92 50 33 17 51 89 45 24 39 64 23 18 52 2 41 46 63 84 88 7 99 27 78
Card 185: 44 55 78 43 18 33 69 81 82 9 | 39 57 42 79 76 67 58 1 26 63 54 82 70 22 66 55 15 38 74 96 46 53 51 28 99
Card 186: 25 76 9 33 59 42 82 6 79 4 | 10 50 20 18 93 95 62 40 22 70 48 16 75 15 49 81 64 94 6 21 73 80 78 77 83
Card 187: 43 33 83 89 36 31 86 22 13 14 | 3 78 63 34 8 38 23 16 81 80 54 1 95 92 60 24 82 49 44 68 62 46 66 97 28
Card 188: 81 6 49 46 11 77 99 82 84 51 | 36 45 18 87 48 35 86 7 83 31 38 61 92 98 70 78 74 59 63 66 15 85 47 96 1
Card 189: 50 43 3 38 20 80 40 70 82 74 | 29 55 1 2 45 97 59 49 60 79 88 90 94 57 12 24 47 61 5 52 95 75 63 48 32
Card 190: 22 66 97 81 70 24 53 76 17 35 | 92 59 1 36 97 70 34 77 69 55 17 81 62 67 71 91 58 24 76 87 45 30 33 35 22
Card 191: 20 65 9 10 98 71 60 83 51 34 | 68 51 10 26 20 4 56 24 34 9 65 83 60 55 5 27 8 43 71 98 14 21 32 48 64
Card 192: 92 77 16 8 1 87 51 14 89 76 | 13 10 60 19 93 97 16 11 51 47 76 30 91 24 14 89 77 35 8 28 87 21 92 1 22
Card 193: 53 24 36 45 60 18 35 25 12 28 | 98 29 92 35 52 99 12 45 74 18 28 30 70 68 55 24 25 77 81 36 72 20 53 50 60
Card 194: 50 83 40 8 87 28 79 27 44 91 | 37 80 88 17 90 40 67 87 20 76 77 52 68 1 55 35 14 61 4 96 75 83 10 71 8
Card 195: 6 41 29 40 96 49 9 55 51 18 | 69 30 77 83 47 52 59 55 70 10 92 19 85 11 86 42 53 38 35 90 51 46 80 91 84
Card 196: 92 29 86 97 9 30 87 6 15 4 | 18 46 50 63 30 14 6 82 3 53 55 26 29 86 85 70 4 89 90 24 10 35 27 9 20
Card 197: 80 1 81 94 98 75 58 9 19 10 | 26 37 57 58 22 1 19 94 10 87 70 5 95 40 53 81 89 93 8 80 86 9 36 75 98
Card 198: 29 41 51 44 7 84 65 62 20 74 | 74 5 72 62 41 88 23 49 66 97 31 84 18 51 20 10 29 19 44 7 1 60 40 78 30
Card 199: 20 2 3 95 63 60 10 81 87 90 | 60 54 3 61 38 77 42 32 62 82 90 35 9 81 2 20 87 63 8 65 95 19 30 10 85
Card 200: 80 76 17 57 36 9 70 65 1 13 | 88 50 96 87 77 36 14 70 86 29 68 90 93 3 25 65 74 83 78 62 9 69 47 22 8
Card 201: 19 43 79 93 31 72 66 7 18 55 | 72 20 71 43 57 19 53 83 47 35 37 67 13 31 74 81 76 18 44 55 93 97 26 84 11
Card 202: 26 65 71 57 14 86 49 66 1 23 | 27 41 16 51 82 72 13 55 14 21 69 62 15 46 63 78 22 31 30 57 76 45 3 71 86
Card 203: 53 43 69 4 76 74 73 11 34 88 | 46 68 63 19 55 64 88 51 33 15 17 57 53 42 76 66 80 34 11 69 73 96 59 74 16
Card 204: 9 6 64 82 79 1 73 68 39 57 | 92 82 49 53 84 4 69 20 30 13 16 1 26 76 60 57 91 65 24 12 34 56 33 38 59
Card 205: 45 6 76 94 78 35 95 20 85 90 | 89 94 28 15 48 87 56 32 40 88 21 33 51 53 54 67 64 9 17 78 6 57 12 98 95
Card 206: 32 94 53 98 84 82 48 45 8 25 | 84 4 25 97 12 93 35 60 42 80 61 62 18 8 32 17 94 23 63 53 31 3 48 43 20
Card 207: 40 18 52 70 55 29 49 43 15 20 | 38 39 78 70 35 81 34 29 51 55 17 43 52 64 16 21 69 27 47 88 2 99 18 54 3
Card 208: 9 67 74 14 59 41 84 60 73 86 | 87 16 27 86 50 7 30 77 64 76 73 71 99 92 23 82 2 5 55 57 40 47 45 72 21
Card 209: 45 50 11 39 28 93 77 92 41 18 | 32 6 56 34 15 87 48 64 41 30 3 46 42 21 44 72 59 29 25 77 83 66 5 12 11
Card 210: 34 74 60 33 14 25 27 98 54 75 | 90 79 69 27 70 4 40 93 66 62 65 3 8 42 34 92 53 98 56 89 57 13 52 38 30
Card 211: 20 21 98 93 33 65 13 48 81 53 | 19 82 78 95 77 54 89 61 58 74 39 43 1 64 73 11 72 7 32 9 17 46 8 84 86
Card 212: 46 82 24 14 63 38 94 70 79 91 | 23 83 87 4 48 81 40 13 84 68 22 65 45 11 88 75 98 1 15 56 64 44 35 7 3
Card 213: 79 84 12 86 58 10 11 24 32 26 | 52 94 65 29 89 7 76 80 31 21 78 37 66 69 13 41 93 73 96 16 92 44 62 3 95
+41
View File
@@ -0,0 +1,41 @@
use std::fs;
fn main() {
let file_path = "./input.text";
let contents = fs::read_to_string(file_path)
.unwrap();
let mut sum_of_points = 0;
for line in contents.lines()
{
let line_halves: Vec<&str> = line.split(" | ").collect();
let first_half: Vec<&str> = line_halves[0].split(": ").collect();
let winning_numbers: Vec<&str> = first_half[1].split(" ").filter(|num| !num.is_empty()).collect();
let my_numbers = line_halves[1].split(" ").filter(|num| !num.is_empty());
let mut points = 0;
for number in my_numbers
{
if winning_numbers.contains(&number)
{
if points == 0
{
points = 1;
}
else
{
points *= 2;
}
}
}
sum_of_points += points;
}
println!("Sum of points on cards: {sum_of_points}");
}
+6
View File
@@ -0,0 +1,6 @@
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
+213
View File
@@ -0,0 +1,213 @@
Card 1: 69 61 27 58 89 52 81 94 40 51 | 43 40 52 90 37 97 89 80 69 42 51 70 94 58 10 73 21 29 61 63 57 79 81 27 35
Card 2: 5 75 37 76 98 32 24 83 44 50 | 80 75 91 5 33 52 31 96 83 92 46 98 55 65 48 24 44 4 32 60 88 37 76 50 77
Card 3: 37 39 43 53 47 20 50 56 78 65 | 80 56 32 78 72 97 40 77 17 50 87 99 36 93 63 19 39 59 44 52 23 75 9 51 43
Card 4: 6 25 31 60 2 50 89 67 82 16 | 65 89 5 67 68 53 50 6 51 25 96 32 2 16 41 60 63 90 82 30 98 31 75 14 7
Card 5: 43 39 98 45 33 87 36 23 61 66 | 93 61 4 21 47 32 94 99 45 23 87 64 92 43 33 5 83 16 98 44 39 77 66 18 36
Card 6: 59 6 65 20 62 3 92 79 98 24 | 80 15 28 70 24 32 93 99 91 86 95 16 90 83 11 75 19 4 48 6 78 61 20 27 7
Card 7: 49 54 25 44 79 68 13 60 1 43 | 16 18 4 82 99 23 80 46 79 55 14 1 32 13 54 84 37 44 20 68 25 60 27 49 43
Card 8: 52 50 19 69 28 93 32 98 97 47 | 2 40 28 47 20 60 66 98 12 19 31 14 16 75 97 49 93 69 11 52 50 87 24 32 27
Card 9: 47 44 94 43 75 49 77 24 93 45 | 94 47 30 43 24 77 44 31 66 75 45 54 92 49 84 53 20 11 17 16 86 93 50 85 76
Card 10: 23 39 92 16 68 30 49 59 34 90 | 85 15 25 31 92 90 47 59 11 36 68 10 96 65 16 49 18 97 9 83 28 61 4 94 46
Card 11: 21 37 14 89 46 31 64 90 43 45 | 63 29 14 23 7 28 13 86 83 16 19 24 78 54 47 51 58 77 71 40 56 62 20 89 39
Card 12: 69 98 97 19 70 5 62 25 55 90 | 1 35 45 25 75 61 50 99 82 96 71 74 72 76 3 70 14 57 88 27 5 94 58 32 85
Card 13: 24 51 65 64 29 37 86 60 41 94 | 40 13 88 85 46 59 90 55 8 72 56 93 6 71 52 87 31 91 20 5 83 36 86 43 96
Card 14: 43 76 64 80 49 48 83 14 51 54 | 1 99 54 36 80 48 49 15 43 17 51 96 83 40 76 14 41 75 84 55 63 91 64 58 9
Card 15: 9 33 75 53 48 76 25 83 28 24 | 1 10 69 28 76 87 71 52 26 44 66 92 75 55 7 40 93 20 12 91 30 33 46 39 31
Card 16: 55 92 85 21 81 90 47 63 34 70 | 26 2 1 87 59 69 40 58 46 43 70 17 35 71 6 63 49 13 81 11 85 94 44 96 5
Card 17: 21 42 95 24 35 53 39 14 18 4 | 76 23 5 79 22 20 36 69 38 77 40 37 32 89 49 15 59 44 51 25 74 34 54 16 28
Card 18: 63 21 61 65 82 69 27 74 98 58 | 51 58 86 21 90 54 45 41 71 74 83 6 42 1 35 78 31 9 55 46 11 15 63 84 82
Card 19: 44 41 24 51 74 20 97 31 83 39 | 17 24 2 54 73 28 13 55 49 79 42 62 58 8 95 23 86 70 76 41 26 4 80 25 11
Card 20: 83 61 55 56 96 16 95 49 65 90 | 67 75 63 37 87 54 39 19 99 81 47 49 24 84 41 13 78 40 38 64 26 34 15 72 48
Card 21: 23 89 57 54 90 82 2 8 65 80 | 78 14 21 39 45 42 1 80 99 20 52 11 31 50 68 82 59 4 96 55 6 46 88 38 34
Card 22: 85 6 4 41 5 35 31 19 64 17 | 83 56 96 41 16 39 70 81 67 51 74 99 1 18 43 48 5 85 29 88 30 52 69 11 61
Card 23: 72 88 38 82 33 10 75 44 70 53 | 7 71 56 96 19 89 30 67 21 22 48 45 80 86 39 61 4 44 74 28 23 40 46 72 78
Card 24: 75 67 13 39 63 58 43 35 49 99 | 28 46 17 95 55 2 83 18 42 91 20 78 97 51 60 81 47 69 64 57 37 77 12 61 67
Card 25: 87 44 62 66 82 20 7 21 51 32 | 54 97 46 1 95 14 26 47 94 25 49 30 84 12 5 73 48 89 45 53 28 74 93 88 13
Card 26: 65 6 10 66 15 26 47 62 63 68 | 5 60 71 41 68 66 53 26 6 56 38 47 90 62 63 33 81 10 15 3 16 96 83 65 20
Card 27: 7 95 47 35 58 87 21 68 80 37 | 94 24 39 74 43 78 69 54 10 32 84 99 41 75 6 86 11 66 56 62 16 44 5 59 65
Card 28: 95 19 21 14 59 74 27 68 32 99 | 83 35 5 41 92 59 26 57 18 55 52 32 6 23 36 54 56 50 15 48 27 89 45 53 12
Card 29: 1 8 93 94 72 89 13 37 58 49 | 35 62 88 26 94 50 31 87 72 78 85 1 44 49 22 5 20 91 98 13 77 93 60 48 52
Card 30: 47 94 67 27 56 25 38 52 28 32 | 22 61 56 82 58 27 32 18 33 94 79 23 62 60 76 98 67 49 77 64 11 47 40 16 42
Card 31: 61 68 80 67 41 6 52 33 22 91 | 54 10 72 91 31 33 95 43 39 68 81 22 63 67 32 61 27 73 66 75 36 79 6 59 80
Card 32: 62 5 57 36 87 33 53 86 82 8 | 76 32 30 5 53 57 86 56 97 77 18 33 8 82 15 71 83 17 48 90 9 43 54 88 4
Card 33: 79 25 27 11 17 23 76 38 15 26 | 83 80 37 36 77 24 20 55 16 59 81 7 19 1 18 91 42 29 22 2 41 27 6 50 92
Card 34: 3 8 29 57 87 88 97 12 41 95 | 29 94 44 20 34 28 76 12 95 74 22 85 31 64 91 50 1 97 35 49 98 41 92 67 25
Card 35: 43 79 50 20 6 76 25 14 66 89 | 93 72 50 67 38 89 13 87 46 54 36 52 20 57 56 17 3 22 43 63 14 84 15 29 16
Card 36: 68 15 59 47 30 98 89 27 5 25 | 11 8 32 72 18 74 73 48 39 53 51 88 22 90 55 40 14 44 66 12 94 71 9 13 31
Card 37: 11 48 72 90 12 86 34 32 51 7 | 52 80 36 46 74 64 44 27 11 47 61 84 55 28 77 26 58 54 3 5 17 60 89 16 72
Card 38: 13 97 42 79 96 69 8 57 90 48 | 84 67 52 8 20 54 21 45 69 23 28 85 92 95 40 59 87 2 50 83 14 6 16 70 39
Card 39: 87 67 8 38 15 20 96 30 45 97 | 36 28 43 35 9 27 14 70 29 1 40 56 60 81 63 48 53 44 31 75 49 85 64 39 69
Card 40: 63 35 33 6 58 97 91 34 67 18 | 68 61 98 66 84 20 37 41 17 50 81 14 60 78 36 9 65 21 83 2 71 79 85 7 47
Card 41: 75 97 62 6 92 69 53 20 45 5 | 5 53 56 69 84 97 75 62 39 18 22 64 6 92 70 41 45 20 17 63 7 9 54 29 21
Card 42: 64 21 72 62 90 50 84 28 71 37 | 71 38 64 50 42 4 65 85 91 21 55 58 10 92 90 7 17 60 84 70 37 72 28 98 62
Card 43: 58 28 84 32 92 18 48 73 86 5 | 43 32 33 35 84 50 64 6 21 52 92 58 29 95 11 18 28 79 48 77 5 86 60 73 10
Card 44: 30 69 44 40 5 58 22 63 65 90 | 65 68 69 43 58 5 72 90 22 63 52 78 66 15 60 88 30 12 74 44 67 40 41 38 29
Card 45: 69 53 87 59 27 10 16 90 52 35 | 83 4 87 89 11 30 45 70 52 13 35 92 90 79 6 68 71 86 16 97 26 72 39 96 53
Card 46: 78 8 1 64 87 6 3 7 75 82 | 48 84 56 8 89 73 31 68 64 46 40 6 41 14 78 97 91 27 95 28 47 30 37 58 75
Card 47: 58 24 13 97 18 50 89 9 14 81 | 97 24 54 16 14 32 78 62 50 5 18 42 20 99 15 58 13 89 96 72 81 75 29 9 86
Card 48: 87 83 32 53 5 72 86 84 65 9 | 30 89 54 53 58 13 85 81 83 39 71 5 91 65 68 82 94 42 87 24 86 29 47 32 28
Card 49: 38 4 66 35 19 56 78 90 81 65 | 60 16 82 68 7 49 15 32 3 22 48 11 38 53 83 45 54 23 5 81 78 34 63 27 65
Card 50: 9 48 47 87 99 6 65 2 44 75 | 75 79 55 82 44 27 42 48 51 65 16 68 3 52 30 62 84 66 87 69 8 10 86 35 72
Card 51: 28 24 85 63 96 30 88 29 5 50 | 71 61 30 90 65 96 41 50 82 68 39 10 81 29 48 26 80 97 28 24 27 88 38 5 63
Card 52: 86 80 90 33 19 78 13 69 89 27 | 62 54 85 88 97 64 37 31 29 6 94 69 67 51 57 58 89 13 76 55 22 96 63 66 38
Card 53: 75 5 78 44 10 77 3 89 39 4 | 41 61 76 56 75 85 7 22 19 51 5 87 53 10 79 24 39 94 26 57 1 35 83 32 34
Card 54: 70 80 59 16 6 99 83 37 26 8 | 62 58 16 74 35 53 94 1 80 89 61 11 86 36 83 14 8 39 43 6 92 99 18 64 79
Card 55: 41 39 43 58 60 65 74 76 11 46 | 58 42 60 59 13 16 83 55 37 25 32 96 22 79 69 2 89 3 21 71 35 67 95 19 45
Card 56: 10 18 89 9 63 51 81 4 49 75 | 3 32 45 68 87 65 71 55 79 89 37 64 21 53 30 62 26 6 90 51 70 74 22 10 54
Card 57: 27 58 75 7 80 71 45 46 26 55 | 67 76 91 16 69 82 24 48 46 87 28 20 75 36 86 8 51 42 9 84 3 43 27 34 70
Card 58: 64 55 76 63 58 66 34 27 46 62 | 79 22 69 33 1 81 4 76 36 40 88 39 2 47 89 48 29 77 93 67 41 10 95 19 63
Card 59: 62 1 42 32 48 12 94 36 33 86 | 71 41 46 96 12 55 10 38 15 43 1 60 67 2 30 89 37 98 19 18 69 25 50 20 77
Card 60: 11 14 6 57 55 62 88 19 24 26 | 45 58 88 83 51 36 46 32 85 17 61 33 31 2 91 9 78 39 81 20 87 86 64 66 49
Card 61: 9 28 27 33 53 71 38 63 55 60 | 26 77 83 57 75 50 3 68 31 52 24 94 40 18 8 80 70 5 25 72 47 44 45 89 19
Card 62: 47 64 33 74 26 82 21 30 69 39 | 29 68 65 37 60 58 17 48 75 91 2 9 16 31 46 49 97 57 94 40 34 13 11 43 39
Card 63: 1 16 10 67 73 48 66 78 55 32 | 31 54 78 79 42 34 81 55 37 63 29 73 90 48 11 77 67 14 46 19 16 66 89 53 32
Card 64: 59 33 71 69 84 2 53 95 28 52 | 85 82 66 79 45 71 33 10 30 84 52 19 94 54 28 41 61 59 6 69 53 97 38 2 49
Card 65: 17 46 40 23 93 76 45 2 43 32 | 17 32 23 2 52 7 15 77 20 39 46 64 99 59 98 89 43 40 93 4 45 11 72 76 13
Card 66: 58 9 28 19 90 80 77 11 81 20 | 44 51 39 20 63 6 11 88 61 27 90 53 62 70 34 42 28 24 78 16 81 65 9 31 15
Card 67: 88 42 78 9 26 43 54 95 8 40 | 58 54 10 43 60 36 40 42 95 63 4 88 82 50 38 26 8 99 31 74 13 46 91 61 44
Card 68: 32 95 6 83 30 14 38 15 87 70 | 79 15 64 45 99 70 17 38 87 93 83 53 14 77 85 32 19 95 29 6 7 61 90 30 67
Card 69: 76 15 92 22 48 46 42 39 84 32 | 51 26 1 9 2 73 17 94 6 62 92 77 32 90 43 48 81 22 88 58 78 46 79 98 15
Card 70: 62 90 81 15 8 3 72 93 65 32 | 57 62 3 80 26 67 10 72 54 36 98 29 17 90 93 32 49 48 76 8 12 31 65 81 15
Card 71: 74 46 75 14 56 20 83 28 35 61 | 57 61 75 59 54 55 56 32 71 4 18 60 72 94 39 86 30 50 48 41 7 14 77 73 85
Card 72: 47 63 42 84 87 78 21 56 97 26 | 87 40 78 1 48 7 26 63 42 37 30 97 65 84 14 93 85 39 47 11 50 71 21 28 56
Card 73: 20 56 88 38 50 74 76 69 63 17 | 73 47 87 89 98 18 33 14 3 78 72 39 77 97 74 80 81 51 88 59 46 2 70 69 20
Card 74: 44 74 4 59 77 99 66 81 8 6 | 75 88 25 73 74 86 16 8 99 17 50 22 83 35 67 3 77 5 46 34 68 80 6 23 54
Card 75: 58 25 36 26 80 12 88 51 98 71 | 71 66 77 83 51 61 23 98 33 53 18 75 43 20 26 92 70 90 25 94 86 12 34 36 22
Card 76: 14 79 44 82 59 75 43 88 12 52 | 11 30 26 74 82 91 72 79 35 69 52 24 13 23 3 22 78 38 43 10 14 53 76 66 90
Card 77: 65 79 38 39 3 18 89 51 9 41 | 5 87 13 45 86 85 72 7 92 22 36 69 67 82 40 73 83 15 34 59 68 57 31 84 71
Card 78: 67 89 71 15 39 66 29 97 11 38 | 4 95 21 74 29 43 51 65 31 91 98 39 71 13 93 88 64 47 40 76 58 6 92 80 81
Card 79: 8 60 27 44 15 52 91 99 35 47 | 97 1 35 81 53 79 16 23 52 77 11 56 2 85 21 96 46 83 5 37 49 93 13 76 69
Card 80: 1 37 16 40 6 48 66 26 90 12 | 87 23 24 5 67 80 20 53 95 66 93 85 7 34 32 52 92 61 9 27 41 35 36 57 38
Card 81: 72 39 83 5 69 43 73 92 88 78 | 77 74 68 78 9 75 50 65 8 14 35 96 64 80 58 6 4 46 57 61 66 85 48 40 34
Card 82: 38 2 71 61 46 97 8 84 43 24 | 91 50 76 58 17 11 66 60 65 16 44 70 96 20 37 94 30 99 6 69 32 29 81 49 48
Card 83: 50 89 48 66 96 97 28 5 12 76 | 89 93 79 68 16 48 44 42 28 41 83 50 97 96 76 82 15 57 10 66 5 12 74 38 4
Card 84: 9 71 98 81 59 30 99 45 80 48 | 6 17 31 35 88 57 10 81 77 70 58 21 34 63 51 84 74 37 64 80 29 16 3 11 76
Card 85: 36 86 69 83 56 51 19 67 65 10 | 35 3 55 38 90 59 82 2 32 10 17 36 52 69 83 65 13 92 97 99 48 30 87 68 70
Card 86: 6 96 82 83 89 31 91 20 28 5 | 20 11 84 45 50 81 23 56 24 28 1 53 2 57 54 64 3 94 96 43 6 26 91 77 66
Card 87: 84 22 38 2 94 23 76 64 29 42 | 13 99 48 23 62 82 38 91 31 88 14 43 66 94 36 64 49 85 26 97 71 39 22 68 60
Card 88: 69 25 81 63 86 79 1 64 76 38 | 85 81 63 6 69 50 16 65 54 25 27 38 84 76 7 64 79 12 86 88 70 94 39 1 20
Card 89: 7 43 74 93 60 24 33 53 97 35 | 62 51 93 86 81 71 63 2 13 99 66 83 97 37 10 77 55 27 73 92 67 19 33 88 96
Card 90: 2 78 5 23 69 72 93 86 55 24 | 92 38 66 85 34 52 83 24 31 6 25 13 33 30 17 7 81 15 16 9 21 53 94 2 77
Card 91: 34 21 58 13 99 32 61 65 49 30 | 50 73 18 84 99 53 21 61 94 22 26 93 30 68 34 65 58 72 77 32 49 11 13 39 9
Card 92: 15 67 55 79 9 88 33 7 94 49 | 20 94 87 58 9 35 93 7 67 21 15 57 30 56 88 85 5 13 60 83 2 55 38 28 6
Card 93: 16 11 80 5 33 23 96 21 56 94 | 1 37 85 94 72 42 66 16 10 70 86 77 33 21 55 11 6 45 96 29 90 14 80 48 64
Card 94: 2 57 51 10 3 70 63 60 1 40 | 67 80 96 98 52 74 97 33 92 88 19 62 43 73 55 3 1 20 95 99 12 90 17 24 56
Card 95: 80 18 73 50 2 3 83 65 33 26 | 7 78 28 4 2 19 14 29 61 81 17 38 57 89 11 20 5 12 13 10 24 96 75 25 55
Card 96: 98 53 54 50 20 34 28 96 59 88 | 52 41 53 29 40 15 88 93 30 76 97 81 73 17 12 70 6 63 27 32 64 48 69 96 44
Card 97: 66 82 79 74 75 71 29 32 96 50 | 62 46 76 30 21 50 98 17 32 75 87 96 41 42 79 73 45 92 51 91 78 35 27 72 74
Card 98: 93 39 91 70 97 33 57 69 53 73 | 38 71 33 25 52 26 75 94 93 42 17 82 7 27 47 89 18 11 20 91 40 31 55 19 4
Card 99: 93 31 61 29 77 60 66 92 3 10 | 55 63 56 4 61 33 60 85 45 48 78 27 25 36 42 93 20 67 49 21 7 83 65 13 71
Card 100: 21 86 19 62 53 34 88 42 71 47 | 74 7 79 85 22 60 76 10 40 62 50 92 20 24 12 42 15 31 56 90 44 72 34 11 95
Card 101: 8 68 64 72 98 60 56 69 57 25 | 24 5 95 77 89 58 39 63 80 48 53 66 38 61 31 3 43 1 16 71 52 82 19 14 51
Card 102: 47 39 45 40 54 93 87 26 33 67 | 95 80 98 3 24 53 96 9 90 13 35 21 86 88 63 55 1 42 25 56 32 60 34 40 77
Card 103: 64 18 52 28 82 54 31 49 66 44 | 4 78 40 73 32 99 33 6 29 46 11 25 47 36 14 97 79 61 63 50 55 26 30 58 77
Card 104: 95 84 89 87 57 53 12 43 58 1 | 59 45 57 58 39 61 52 81 43 40 23 86 1 97 95 55 89 84 87 6 17 85 53 12 28
Card 105: 98 81 56 52 37 26 46 39 88 36 | 4 34 88 32 5 73 98 26 39 77 93 42 62 82 41 81 56 1 12 33 46 36 14 52 37
Card 106: 97 98 42 95 14 87 41 46 44 27 | 5 82 46 66 87 41 51 55 13 27 7 44 31 97 77 10 14 90 98 94 95 12 79 42 35
Card 107: 15 30 60 32 25 73 77 63 85 81 | 16 86 56 41 20 51 25 52 73 40 74 32 15 61 99 34 60 85 77 30 5 27 63 35 81
Card 108: 65 59 24 72 54 66 14 81 67 31 | 94 92 83 67 50 19 61 6 42 55 60 97 22 18 24 40 86 43 72 56 5 75 63 45 90
Card 109: 90 87 3 17 80 96 36 93 34 79 | 51 11 29 96 13 66 70 99 72 67 64 42 37 30 55 98 35 12 15 84 5 10 57 19 49
Card 110: 57 82 85 42 23 76 70 64 88 21 | 65 32 76 81 7 43 23 52 55 14 70 58 27 82 48 64 85 47 57 16 46 97 68 21 45
Card 111: 50 62 66 33 93 43 56 70 77 35 | 94 79 19 16 35 41 78 32 91 4 14 3 13 48 63 36 75 98 64 69 27 96 77 51 74
Card 112: 6 36 83 73 59 48 65 12 29 92 | 12 36 82 52 8 35 88 69 9 28 89 39 87 20 22 67 27 63 75 73 70 58 31 78 79
Card 113: 25 10 29 67 87 32 54 92 62 43 | 65 19 67 75 79 29 8 73 62 97 82 87 25 18 32 93 49 5 66 27 68 42 43 11 46
Card 114: 29 44 96 86 64 37 4 71 94 98 | 5 27 55 76 33 59 68 77 3 96 15 1 46 20 35 61 53 83 78 69 99 97 34 30 25
Card 115: 32 90 91 88 39 66 37 35 12 21 | 85 82 71 37 87 22 72 17 35 9 58 95 64 12 33 90 68 66 15 43 4 7 91 8 84
Card 116: 75 50 66 77 51 36 98 23 97 28 | 4 66 44 20 35 76 51 83 58 89 91 87 75 27 10 47 1 60 97 90 77 45 63 59 36
Card 117: 85 44 56 82 39 64 30 88 79 20 | 71 88 53 27 36 85 13 11 38 91 77 19 3 99 23 73 39 44 24 45 32 15 58 79 56
Card 118: 80 41 82 32 1 52 91 40 66 11 | 72 3 4 29 77 87 36 40 16 46 66 30 92 76 98 49 85 7 32 28 60 86 52 95 83
Card 119: 50 66 77 26 2 49 9 25 58 81 | 80 49 50 55 16 56 20 42 31 99 69 26 28 85 66 65 70 90 84 53 40 19 60 12 38
Card 120: 48 9 95 85 16 70 81 61 57 92 | 2 58 66 10 34 54 7 94 16 14 25 74 92 49 88 13 57 26 99 97 70 75 65 19 17
Card 121: 50 76 20 25 53 17 2 78 85 86 | 14 40 78 89 93 48 1 28 11 4 54 71 5 69 85 61 38 94 66 64 98 95 30 67 23
Card 122: 62 92 40 16 25 82 64 87 52 53 | 5 19 25 48 38 42 1 99 51 79 2 78 75 57 81 56 70 47 59 91 90 6 9 24 15
Card 123: 50 91 29 69 41 73 44 51 13 26 | 66 55 22 6 17 71 1 3 67 24 88 79 65 64 60 34 7 90 78 72 28 83 82 74 10
Card 124: 61 77 51 39 73 4 6 25 53 91 | 54 88 26 11 3 79 10 86 23 49 66 21 47 85 5 2 98 7 1 60 55 13 94 34 62
Card 125: 31 67 93 63 21 28 12 85 39 57 | 69 46 22 59 55 75 11 97 70 1 94 14 81 96 79 44 18 36 85 34 56 48 30 72 15
Card 126: 31 89 5 98 63 36 40 48 91 12 | 91 42 6 47 51 94 48 83 5 77 98 8 11 50 29 9 36 54 89 40 12 63 31 34 73
Card 127: 41 88 97 87 13 80 74 49 24 6 | 43 66 62 47 36 87 6 88 24 49 96 56 25 79 8 76 23 97 41 42 80 89 13 73 74
Card 128: 7 6 3 99 56 40 80 27 23 43 | 34 64 97 67 3 78 69 43 57 98 96 4 6 94 62 48 23 68 8 1 58 73 75 65 16
Card 129: 46 80 39 32 35 41 61 93 57 47 | 40 63 93 89 61 4 45 46 25 96 80 39 35 14 62 95 49 32 47 2 41 99 57 82 44
Card 130: 90 10 79 84 88 76 59 18 62 11 | 79 11 53 97 92 5 88 52 23 60 62 64 86 84 14 20 98 91 10 28 24 29 87 65 3
Card 131: 95 50 11 76 61 4 2 8 42 47 | 40 15 46 61 8 2 29 97 65 50 19 83 76 95 59 82 48 57 43 72 42 25 31 47 53
Card 132: 49 86 99 81 13 98 69 32 89 18 | 89 84 65 58 32 15 96 49 1 18 22 13 98 99 6 81 46 50 88 78 3 11 69 74 86
Card 133: 18 56 75 7 48 40 38 22 10 90 | 10 42 61 18 91 38 12 67 72 54 51 22 86 77 81 87 75 34 89 97 35 6 96 7 62
Card 134: 67 66 99 61 98 32 6 82 86 9 | 12 8 33 87 82 66 98 78 68 24 59 80 6 44 32 49 9 2 97 65 86 71 99 61 67
Card 135: 24 59 92 68 44 20 30 8 40 77 | 28 72 51 38 58 40 30 24 21 77 92 82 59 18 50 7 19 44 20 68 91 8 32 88 94
Card 136: 27 10 70 96 29 69 37 63 86 65 | 28 27 8 34 29 82 78 56 22 30 3 19 63 88 67 74 75 4 91 41 35 65 7 14 66
Card 137: 74 70 86 34 89 37 73 23 29 85 | 16 65 58 88 8 5 11 26 39 91 51 31 19 78 92 87 36 34 80 94 42 81 38 40 93
Card 138: 71 35 5 13 69 8 88 11 76 31 | 69 42 5 59 76 54 37 11 39 9 12 73 66 13 71 89 56 26 28 77 2 31 1 4 57
Card 139: 10 50 78 91 55 61 81 19 44 59 | 97 98 39 52 56 28 94 24 3 54 45 82 14 17 5 16 27 99 37 38 26 31 53 9 35
Card 140: 17 93 15 73 45 20 43 50 2 52 | 64 21 15 57 77 90 2 61 22 8 91 39 93 82 62 5 47 30 41 80 58 1 17 25 48
Card 141: 52 66 4 8 87 11 14 76 23 24 | 3 55 29 16 26 61 12 43 89 15 56 24 5 36 85 62 90 75 65 71 53 45 38 50 54
Card 142: 57 35 91 73 66 67 64 63 92 18 | 96 58 44 37 19 41 72 54 52 31 88 20 45 68 42 21 2 59 62 53 70 63 77 57 69
Card 143: 88 70 69 13 18 97 64 89 40 29 | 74 98 30 5 85 12 38 62 66 33 36 17 71 9 97 22 47 79 39 60 89 13 83 77 8
Card 144: 14 35 52 8 75 43 62 33 36 70 | 13 95 71 64 6 48 74 84 61 24 89 77 17 58 87 75 76 43 28 54 3 83 99 67 12
Card 145: 53 88 65 42 72 92 43 14 3 90 | 21 19 33 59 84 61 96 41 20 31 88 71 38 72 79 48 58 55 62 36 23 11 30 18 70
Card 146: 68 28 58 96 42 32 22 90 19 47 | 84 25 39 96 67 26 29 24 9 62 1 14 46 11 77 81 61 82 60 80 78 52 31 98 49
Card 147: 81 85 76 67 4 63 25 97 57 27 | 2 26 43 9 56 59 29 10 13 45 35 60 86 65 15 46 19 5 79 8 44 1 6 20 21
Card 148: 90 41 37 66 94 87 84 14 9 29 | 94 47 5 10 23 38 61 87 55 22 75 97 37 29 30 9 18 84 69 41 11 73 43 45 14
Card 149: 84 30 17 21 47 26 81 68 57 40 | 86 78 70 5 54 40 34 38 47 72 62 56 53 7 10 37 73 92 46 61 41 74 68 23 63
Card 150: 83 21 33 53 37 57 66 29 41 6 | 20 61 75 89 59 60 41 83 21 29 30 57 66 58 37 76 90 96 53 69 33 17 12 95 6
Card 151: 12 5 52 36 3 29 69 6 82 27 | 82 12 27 44 50 15 76 28 29 52 57 36 73 3 34 5 94 37 6 92 84 9 10 98 69
Card 152: 82 62 80 30 37 68 41 89 12 5 | 60 32 64 57 41 74 89 16 72 20 26 6 91 18 52 68 62 55 5 30 82 1 37 80 12
Card 153: 97 28 55 92 70 83 58 44 67 40 | 24 58 55 88 92 40 6 83 12 70 10 22 44 76 82 97 4 98 65 28 5 32 7 67 74
Card 154: 31 50 70 87 43 26 55 30 14 54 | 43 72 90 20 10 13 91 54 75 39 26 70 17 87 22 60 29 1 27 69 14 31 50 67 55
Card 155: 21 4 25 52 3 16 98 43 72 81 | 87 4 21 43 90 67 39 36 13 64 6 25 29 16 83 84 5 98 9 81 78 1 74 12 96
Card 156: 77 46 21 67 59 78 63 30 45 48 | 48 35 17 62 44 25 34 67 23 13 63 81 99 29 93 84 73 96 86 90 88 30 60 85 21
Card 157: 43 32 99 39 58 3 38 81 79 41 | 79 41 34 8 99 80 70 43 51 38 29 68 32 83 58 2 6 36 63 95 81 67 3 28 10
Card 158: 43 68 57 98 30 58 47 40 12 93 | 91 62 48 6 52 16 72 34 28 85 81 94 26 4 99 30 71 44 80 65 40 60 58 18 49
Card 159: 62 30 18 57 61 68 65 98 10 56 | 98 32 29 1 15 77 55 10 13 30 80 93 38 86 70 99 97 19 85 33 17 21 48 47 89
Card 160: 30 47 79 28 57 77 73 75 35 40 | 98 25 96 11 15 34 19 35 6 38 1 91 29 57 61 22 69 12 40 21 41 17 27 39 56
Card 161: 62 58 10 14 73 95 77 97 47 70 | 15 46 1 36 3 66 27 77 49 45 94 65 23 61 76 8 91 42 82 13 85 67 92 68 53
Card 162: 47 24 44 73 3 10 30 98 5 29 | 75 99 37 41 60 43 13 67 74 23 82 40 35 64 77 25 4 9 58 56 8 7 85 70 66
Card 163: 10 17 99 41 6 14 81 23 5 84 | 95 11 99 62 53 23 8 73 48 42 96 47 39 94 56 30 58 63 22 66 33 26 35 5 43
Card 164: 71 32 31 15 73 3 70 91 61 18 | 3 16 77 70 33 94 62 40 88 32 90 98 66 49 86 68 95 7 53 97 96 28 4 75 35
Card 165: 61 74 1 76 17 22 19 83 5 96 | 83 5 47 29 52 40 94 32 70 95 67 84 56 31 18 62 42 9 53 36 57 48 64 15 85
Card 166: 84 96 57 6 48 13 42 12 19 99 | 67 29 25 81 77 69 63 56 8 27 80 62 94 30 78 10 45 49 20 95 50 66 61 6 24
Card 167: 21 41 29 39 24 98 68 40 7 78 | 44 19 53 13 17 4 2 64 87 60 1 51 10 35 94 52 25 75 92 95 80 67 82 42 86
Card 168: 18 72 92 63 3 38 82 65 85 61 | 53 14 92 63 74 75 97 56 85 82 30 4 42 34 18 61 72 65 20 47 43 3 38 39 40
Card 169: 98 91 13 27 52 51 36 82 80 78 | 78 42 51 62 36 38 4 95 82 17 91 27 12 98 76 13 84 52 80 32 39 50 48 19 2
Card 170: 94 67 3 32 73 84 11 47 23 90 | 94 84 66 73 32 31 23 18 93 29 58 81 95 16 46 53 89 4 11 44 49 67 90 82 40
Card 171: 2 55 5 19 59 73 29 65 12 23 | 33 75 5 53 90 95 68 73 29 71 11 45 72 54 59 12 55 85 56 19 17 24 8 92 2
Card 172: 74 43 65 15 59 37 11 83 20 85 | 59 30 36 97 78 65 88 20 96 11 51 22 93 63 94 28 3 90 68 95 73 43 13 74 85
Card 173: 53 46 64 33 65 55 8 81 1 36 | 12 22 78 35 57 96 36 3 27 29 52 80 2 79 8 76 93 54 1 24 48 32 94 14 64
Card 174: 20 38 12 24 28 39 18 59 75 94 | 95 48 91 36 56 63 62 46 67 4 32 97 39 66 93 55 50 34 5 85 29 76 45 54 7
Card 175: 26 96 12 74 65 57 51 18 83 75 | 26 89 74 83 65 12 58 88 92 22 8 39 18 51 34 96 75 44 94 35 30 90 69 57 23
Card 176: 48 64 15 96 42 33 88 27 50 86 | 36 85 60 68 93 63 33 17 28 70 24 50 96 38 54 53 72 90 41 86 74 88 75 64 48
Card 177: 66 27 35 76 89 90 31 26 20 95 | 51 94 62 77 31 5 16 20 30 86 75 42 23 11 69 24 87 76 27 60 80 46 43 57 90
Card 178: 83 38 10 89 18 80 1 67 63 7 | 37 28 46 84 94 89 38 21 24 68 25 92 60 34 58 54 76 55 11 19 85 33 93 15 8
Card 179: 59 82 88 8 21 16 55 2 56 45 | 2 26 73 81 90 5 13 55 21 82 69 8 22 99 36 68 53 88 86 56 16 7 45 87 28
Card 180: 95 5 4 34 30 73 98 89 6 37 | 7 28 72 6 95 37 68 4 34 98 82 73 84 8 65 5 89 57 15 42 56 45 69 11 74
Card 181: 85 69 79 50 37 34 11 84 5 89 | 4 35 99 48 21 97 93 25 8 37 47 79 34 16 76 26 55 67 50 75 63 15 58 84 5
Card 182: 70 10 57 74 60 93 9 41 79 32 | 19 18 96 8 49 2 50 94 93 4 23 89 11 39 38 97 58 56 82 21 13 28 65 47 29
Card 183: 53 70 11 25 1 37 32 4 78 45 | 23 54 83 35 11 41 1 47 18 60 36 71 10 64 95 49 69 32 45 46 61 9 4 52 25
Card 184: 71 31 19 43 12 93 30 56 17 27 | 61 20 92 50 33 17 51 89 45 24 39 64 23 18 52 2 41 46 63 84 88 7 99 27 78
Card 185: 44 55 78 43 18 33 69 81 82 9 | 39 57 42 79 76 67 58 1 26 63 54 82 70 22 66 55 15 38 74 96 46 53 51 28 99
Card 186: 25 76 9 33 59 42 82 6 79 4 | 10 50 20 18 93 95 62 40 22 70 48 16 75 15 49 81 64 94 6 21 73 80 78 77 83
Card 187: 43 33 83 89 36 31 86 22 13 14 | 3 78 63 34 8 38 23 16 81 80 54 1 95 92 60 24 82 49 44 68 62 46 66 97 28
Card 188: 81 6 49 46 11 77 99 82 84 51 | 36 45 18 87 48 35 86 7 83 31 38 61 92 98 70 78 74 59 63 66 15 85 47 96 1
Card 189: 50 43 3 38 20 80 40 70 82 74 | 29 55 1 2 45 97 59 49 60 79 88 90 94 57 12 24 47 61 5 52 95 75 63 48 32
Card 190: 22 66 97 81 70 24 53 76 17 35 | 92 59 1 36 97 70 34 77 69 55 17 81 62 67 71 91 58 24 76 87 45 30 33 35 22
Card 191: 20 65 9 10 98 71 60 83 51 34 | 68 51 10 26 20 4 56 24 34 9 65 83 60 55 5 27 8 43 71 98 14 21 32 48 64
Card 192: 92 77 16 8 1 87 51 14 89 76 | 13 10 60 19 93 97 16 11 51 47 76 30 91 24 14 89 77 35 8 28 87 21 92 1 22
Card 193: 53 24 36 45 60 18 35 25 12 28 | 98 29 92 35 52 99 12 45 74 18 28 30 70 68 55 24 25 77 81 36 72 20 53 50 60
Card 194: 50 83 40 8 87 28 79 27 44 91 | 37 80 88 17 90 40 67 87 20 76 77 52 68 1 55 35 14 61 4 96 75 83 10 71 8
Card 195: 6 41 29 40 96 49 9 55 51 18 | 69 30 77 83 47 52 59 55 70 10 92 19 85 11 86 42 53 38 35 90 51 46 80 91 84
Card 196: 92 29 86 97 9 30 87 6 15 4 | 18 46 50 63 30 14 6 82 3 53 55 26 29 86 85 70 4 89 90 24 10 35 27 9 20
Card 197: 80 1 81 94 98 75 58 9 19 10 | 26 37 57 58 22 1 19 94 10 87 70 5 95 40 53 81 89 93 8 80 86 9 36 75 98
Card 198: 29 41 51 44 7 84 65 62 20 74 | 74 5 72 62 41 88 23 49 66 97 31 84 18 51 20 10 29 19 44 7 1 60 40 78 30
Card 199: 20 2 3 95 63 60 10 81 87 90 | 60 54 3 61 38 77 42 32 62 82 90 35 9 81 2 20 87 63 8 65 95 19 30 10 85
Card 200: 80 76 17 57 36 9 70 65 1 13 | 88 50 96 87 77 36 14 70 86 29 68 90 93 3 25 65 74 83 78 62 9 69 47 22 8
Card 201: 19 43 79 93 31 72 66 7 18 55 | 72 20 71 43 57 19 53 83 47 35 37 67 13 31 74 81 76 18 44 55 93 97 26 84 11
Card 202: 26 65 71 57 14 86 49 66 1 23 | 27 41 16 51 82 72 13 55 14 21 69 62 15 46 63 78 22 31 30 57 76 45 3 71 86
Card 203: 53 43 69 4 76 74 73 11 34 88 | 46 68 63 19 55 64 88 51 33 15 17 57 53 42 76 66 80 34 11 69 73 96 59 74 16
Card 204: 9 6 64 82 79 1 73 68 39 57 | 92 82 49 53 84 4 69 20 30 13 16 1 26 76 60 57 91 65 24 12 34 56 33 38 59
Card 205: 45 6 76 94 78 35 95 20 85 90 | 89 94 28 15 48 87 56 32 40 88 21 33 51 53 54 67 64 9 17 78 6 57 12 98 95
Card 206: 32 94 53 98 84 82 48 45 8 25 | 84 4 25 97 12 93 35 60 42 80 61 62 18 8 32 17 94 23 63 53 31 3 48 43 20
Card 207: 40 18 52 70 55 29 49 43 15 20 | 38 39 78 70 35 81 34 29 51 55 17 43 52 64 16 21 69 27 47 88 2 99 18 54 3
Card 208: 9 67 74 14 59 41 84 60 73 86 | 87 16 27 86 50 7 30 77 64 76 73 71 99 92 23 82 2 5 55 57 40 47 45 72 21
Card 209: 45 50 11 39 28 93 77 92 41 18 | 32 6 56 34 15 87 48 64 41 30 3 46 42 21 44 72 59 29 25 77 83 66 5 12 11
Card 210: 34 74 60 33 14 25 27 98 54 75 | 90 79 69 27 70 4 40 93 66 62 65 3 8 42 34 92 53 98 56 89 57 13 52 38 30
Card 211: 20 21 98 93 33 65 13 48 81 53 | 19 82 78 95 77 54 89 61 58 74 39 43 1 64 73 11 72 7 32 9 17 46 8 84 86
Card 212: 46 82 24 14 63 38 94 70 79 91 | 23 83 87 4 48 81 40 13 84 68 22 65 45 11 88 75 98 1 15 56 64 44 35 7 3
Card 213: 79 84 12 86 58 10 11 24 32 26 | 52 94 65 29 89 7 76 80 31 21 78 37 66 69 13 41 93 73 96 16 92 44 62 3 95
+65
View File
@@ -0,0 +1,65 @@
use std::{fs, vec};
const FILE_PATH: &str = "./input.text";
fn process_line(line: &str) -> i32
{
let mut cards_won = 0;
// Line processing
let line_halves: Vec<&str> = line.split(" | ").collect();
let first_half: Vec<&str> = line_halves[0].split(": ").collect();
let winning_numbers: Vec<&str> = first_half[1].split(" ").filter(|num| !num.is_empty()).collect();
let my_numbers = line_halves[1].split(" ").filter(|num| !num.is_empty());
for number in my_numbers
{
if winning_numbers.contains(&number)
{
cards_won += 1;
}
}
return cards_won;
}
fn main() {
let contents = fs::read_to_string(FILE_PATH)
.unwrap();
let lines: Vec<&str> = contents.lines().collect();
let mut cards_won_sum: i64 = 0;
let mut card_values: Vec<(usize, i32)> = Vec::new();
for index in 0..lines.len()
{
let mut temp_vec = vec![(index, process_line(lines[index]))];
card_values.append(&mut temp_vec);
}
let mut cards_won: Vec<(usize, i32)> = card_values.clone();
while !cards_won.is_empty()
{
let mut temp_cards_won: Vec<(usize, i32)> = Vec::new();
for (index, cards_won_value) in cards_won.clone()
{
cards_won_sum += 1;
for i in (index + 1)..(index + 1 + cards_won_value as usize)
{
let mut temp_vec: Vec<(usize, i32)> = vec![(i, card_values[i].1)];
temp_cards_won.append(&mut temp_vec);
}
}
cards_won = temp_cards_won;
}
println!("Total cards won: {cards_won_sum}");
}
+6
View File
@@ -0,0 +1,6 @@
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
+243
View File
@@ -0,0 +1,243 @@
seeds: 1514493331 295250933 3793791524 105394212 828589016 654882197 658370118 49359719 4055197159 59237418 314462259 268880047 2249227634 74967914 2370414906 38444198 3291001718 85800943 2102534948 5923540
seed-to-soil map:
3352941879 1247490906 129850502
1738919961 2189748071 56658550
1795578511 292133467 518088747
1519757661 1666834550 130335907
1650093568 133993362 88826393
2813914030 2262539545 40894545
2698412916 2661705133 115501114
2854808575 810222214 437268692
410530961 1545057218 121777332
0 242661076 10731898
532308293 2303434090 61476099
3292077267 1797170457 2282798
2313667258 0 133993362
2447660620 2410952837 250752296
3294360065 253392974 38740493
10731898 1377341408 167715810
1457582089 2364910189 46042648
593784392 3009289500 824592362
3333100558 222819755 19841321
1418376754 1799453255 39205335
1503624737 2246406621 16132924
178447708 2777206247 232083253
3482792381 1838658590 351089481
soil-to-fertilizer map:
3513795976 4258851234 36116062
3393453635 4148223693 110627541
3504081176 3494735450 6350258
2671742993 3596285367 235915393
991290653 256764866 25867175
2907658386 3330719253 68855819
3336496635 4091266693 56957000
3161141476 2536943456 80523019
1961696534 304660310 29551079
812996514 1560772632 178294139
1562163347 2321959023 78904062
31289107 1039870587 339682886
1520029818 1928417376 42133529
3510431434 3832200760 3364542
3549912038 3272523584 58195669
0 149071717 31289107
3608107707 3501085708 5732766
503523937 1739066771 189350605
3071674583 3506818474 89466893
3241664495 3996434553 94832140
1708133363 454333361 253563171
3813493721 3097084118 175439466
1991247613 1970550905 351408118
3613840473 2897430870 199653248
2536943456 2762631333 134799537
1641067409 244319429 12445437
3994753216 3913095788 83338765
2976514205 3399575072 95160378
1354883134 0 143118415
1349131883 2400863085 5751251
1498001549 282632041 22028269
2342655731 180360824 63958605
370971993 1379553473 126598642
4149802438 2617466475 145164858
1017157828 707896532 331974055
692874542 334211389 120121972
497570635 143118415 5953302
3988933187 3907275759 5820029
4078091981 3835565302 71710457
1653512846 1506152115 54620517
fertilizer-to-water map:
3053686523 2028998994 1241280773
1492748555 1562401968 269616514
554432178 1000324407 562077561
2944878746 3270279767 108807777
2501520804 3379087544 52288887
1762365069 20686928 69653413
2028998994 3431376431 472521810
1431309984 814973200 3653900
409832614 0 20686928
430519542 818627100 123912636
1116509739 500172955 314800245
2553809691 3903898241 391069055
0 90340341 409832614
1434963884 942539736 57784671
water-to-light map:
2774754469 1598606098 15160294
3832622498 1469118874 129487224
4125818569 3997047227 169148727
1108418694 1130695768 196125912
637654660 517892123 26551592
2519230072 3399515763 135968347
2751000257 3126996880 23754212
861800165 884077239 88532605
1469118874 2566660966 63929427
2789914763 3150751092 63425583
2853340346 2561960449 4700517
1692681911 3397592997 1922766
2858040863 1773257241 287341147
2655198419 2851614649 15098309
950332770 972609844 158085924
591049922 471287385 46604738
3482333989 3849276196 108901632
1694604677 1613766392 159490849
3591235621 3958177828 38869399
3630105020 4166195954 128771342
3205039781 3535484110 277294208
2706794606 2060598388 44205651
386607659 544443715 110595292
3962109722 2540862463 21097986
697311924 0 92263281
558450415 404456802 11447837
2409200012 3214176675 110030060
569898252 862925569 21151670
1354525884 415904639 55382746
789575205 790700609 72224960
3832262624 2690248164 359874
163757080 181606223 222850579
1533048301 2967363270 159633610
497202951 784452458 6248151
2670296728 3812778318 36497878
3145382010 2630590393 59657771
1854095526 2104804039 436058424
0 655039007 74414138
2390804262 2690608038 18395750
1304544606 1326821680 49981278
3758876362 3324206735 73386262
664206252 1376802958 33105672
74414138 92263281 89342942
3983207708 2709003788 142610861
503451102 729453145 54999313
2290153950 2866712958 100650312
light-to-temperature map:
2054128675 422374783 216418447
3729049939 3132111492 565917357
524183620 1261361039 34450583
723901655 638793230 74616934
304496246 795175951 115896188
1128506994 1008723417 50927515
958650763 2074746732 3056214
0 1224918384 36442655
558634203 1059650932 165267452
2052385426 713410164 1743249
833053864 1953862956 120883776
36442655 715153413 80022538
1455705971 1506174459 386316618
1842022589 1295811622 210362837
2270547122 2077802946 24477429
116465193 2102280375 188031053
1179434509 945607414 63116003
798518589 911072139 34535275
3373647615 3893335786 195498774
3696979816 3698028849 32070123
1242550512 1892491077 43410067
3051130577 2566857633 322517038
3002478931 3844684140 48651646
2311039190 3730098972 114585168
2425624358 2311039190 187630064
2819387158 2889374671 183091773
1285960579 103791186 85466201
1371426780 338095592 84279191
1110545182 1935901144 17961812
953937640 2290311428 4713123
420392434 0 103791186
961706977 189257387 148838205
3637334768 3072466444 59645048
3569146389 2498669254 68188379
2613254422 4088834560 206132736
temperature-to-humidity map:
2032423062 2486277941 26281270
333062067 2316624216 6051173
1716048249 1385455997 91409968
460397469 2512559211 69041956
25538975 668468772 15388105
2090913379 324344034 71221218
2804805674 3018690414 130533369
529439425 908821722 476634275
1106765273 448560048 219908724
2162134597 1476865965 445565302
0 395565252 25538975
4004204691 4019550481 43244121
2058704332 0 32209047
1516375281 2116951248 199672968
3888833667 2764269134 115371024
40927080 32209047 292134987
1490276549 2581601167 26098732
1360818538 2322675389 129458011
1006073700 2043715496 73235752
1079309452 421104227 27455821
1807458217 683856877 224964845
339113240 1922431267 121284229
4155917040 2879640158 139050256
2764269134 4171262830 40536540
4047448812 4062794602 108468228
2935339043 3149223783 870326698
1326673997 2452133400 34144541
3805665741 4211799370 83167926
humidity-to-location map:
3928575650 3147563455 98804874
2357899446 2418187254 26586982
449562184 2261875136 59054833
308294839 60287808 141267345
1872062279 1591999301 10857495
1227084719 574109504 259895254
1980177059 1765508840 13399403
1162615704 1941046629 64469015
2384486428 2654234915 114059261
702311863 1515542756 40659242
1993576462 2005515644 256359492
3047301127 3246368329 27789688
650396000 1713592977 51915863
3701335066 3862068622 181049310
1122863338 1673840611 39752366
3075090815 4174917460 120049836
3882384376 2778717800 46191274
1626219043 201555153 245843236
4027380524 3325898523 267586772
3417979817 4043117932 13866284
3281454033 2925002624 18592540
110359150 1556201998 35797303
2558833497 2444774236 209460679
508617017 834004758 141778983
1574315753 975783741 51903290
2249935954 1027687031 107963492
0 463750354 110359150
2778717800 3593485295 268583327
3195140651 2824909074 86313382
3445626269 2943595164 203968291
3324037823 4080975466 93941994
742971105 1135650523 379892233
146156453 1778908243 39038597
3300046573 4056984216 23991250
1503331938 1602856796 70983815
185195050 1817946840 123099789
3649594560 3274158017 21920411
1486979973 447398389 16351965
3671514971 3296078428 29820095
2498545689 0 60287808
3431846101 2911222456 13780168
1882919774 2320929969 97257285
+98
View File
@@ -0,0 +1,98 @@
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type ConversionRange struct {
source_start int
source_end int
target_start int
target_end int
translate int
}
func convert(c *ConversionRange, num int) int {
if num >= c.source_start && num <= c.source_end {
return num + c.translate
} else {
return -1
}
}
func print(c ConversionRange) {
fmt.Println()
}
func main() {
file, _ := os.Open("./test.text")
defer file.Close()
scanner := bufio.NewScanner(file)
var seed_to_soil []*ConversionRange
// Parse file
index := 0
s_to_s_mapping := false
for scanner.Scan() {
line := scanner.Text()
// Get starting seeds
if index == 0 {
seeds_list := strings.Split(line, ": ")[1]
seeds_value_list := strings.Split(seeds_list, " ")
var seeds []int
for _, seed := range seeds_value_list {
seed_value, _ := strconv.Atoi(seed)
seeds = append(seeds, seed_value)
}
fmt.Println("Seeds: ", seeds)
}
if line == "seed-to-soil map:" {
s_to_s_mapping = true
continue
}
if s_to_s_mapping {
if line == "" {
s_to_s_mapping = false
for _, r := range seed_to_soil {
print(r)
}
continue
} else {
var r_values []int
range_strings := strings.Split(line, " ")
for _, r := range range_strings {
r_value, _ := strconv.Atoi(r)
r_values = append(r_values, r_value)
}
var temp *ConversionRange
temp = new(ConversionRange)
temp.target_start = r_values[0]
temp.source_start = r_values[1]
length := r_values[2]
temp.target_end = temp.target_start + length
temp.source_end = temp.source_start + length
temp.translate = temp.target_start - temp.target_end
seed_to_soil = append(seed_to_soil, temp)
}
}
index++
}
}
+102
View File
@@ -0,0 +1,102 @@
#!/bin/python3.12
FILE_PATH = "input.text"
class ConversionRange:
target_start : int
target_end : int
source_start : int
source_end : int
translate : int
def __init__(self, target_start : int, source_start : int, length : int):
self.target_start = target_start
self.source_start = source_start
self.target_end = self.target_start + length
self.source_end = self.source_start + length
self.translate = self.target_start - self.source_start
def __str__(self):
print(f"Target start: {self.target_start}")
print(f"Source start: {self.source_start}")
print(f"Translate: {self.translate}")
return ""
class Conversion:
ranges : list[ConversionRange]
def __init__(self):
self.ranges = []
pass
def convert(self, num : int) -> int:
for r in self.ranges:
if num >= r.source_start and num <= r.source_end:
return num + r.translate
return num
def main() -> None:
with open(FILE_PATH, 'r') as f:
contents = f.read().split('\n')
# Setup
seeds: list[int] = []
maps: dict[str, Conversion] = {}
maps["seed-to-soil"] = Conversion()
maps["soil-to-fertilizer"] = Conversion()
maps["fertilizer-to-water"] = Conversion()
maps["water-to-light"] = Conversion()
maps["light-to-temperature"] = Conversion()
maps["temperature-to-humidity"] = Conversion()
maps["humidity-to-location"] = Conversion()
current_conversion: str = ""
# Parse the file
for index, line in enumerate(contents):
if index == 0:
seeds_list: list[str] = line.split(": ")[1].split()
for seed in seeds_list:
seeds.append(int(seed))
print(f"Seeds: {seeds}")
continue
if not line:
continue
if not line[0].isdigit():
current_conversion = line[:-5]
print(f"Current conversion: {current_conversion}")
continue
nums: list[int] = list(map(lambda x: int(x), line.split()))
temp = ConversionRange(nums[0], nums[1], nums[2])
print(temp)
maps[current_conversion].ranges.append(temp)
# Convert the seeds
lowest_location: float = float('inf')
for seed in seeds:
temp = seed
for key, value in maps.items():
print(f"Mapping {temp} with {key}")
temp = value.convert(temp)
if temp < lowest_location:
lowest_location = temp
print(f"Location: {temp}")
print(f"Lowest location: {lowest_location}")
if __name__ == "__main__":
main()
+33
View File
@@ -0,0 +1,33 @@
seeds: 79 14 55 13
seed-to-soil map:
50 98 2
52 50 48
soil-to-fertilizer map:
0 15 37
37 52 2
39 0 15
fertilizer-to-water map:
49 53 8
0 11 42
42 0 7
57 7 4
water-to-light map:
88 18 7
18 25 70
light-to-temperature map:
45 77 23
81 45 19
68 64 13
temperature-to-humidity map:
0 69 1
1 0 69
humidity-to-location map:
60 56 37
56 93 4
+243
View File
@@ -0,0 +1,243 @@
seeds: 1514493331 295250933 3793791524 105394212 828589016 654882197 658370118 49359719 4055197159 59237418 314462259 268880047 2249227634 74967914 2370414906 38444198 3291001718 85800943 2102534948 5923540
seed-to-soil map:
3352941879 1247490906 129850502
1738919961 2189748071 56658550
1795578511 292133467 518088747
1519757661 1666834550 130335907
1650093568 133993362 88826393
2813914030 2262539545 40894545
2698412916 2661705133 115501114
2854808575 810222214 437268692
410530961 1545057218 121777332
0 242661076 10731898
532308293 2303434090 61476099
3292077267 1797170457 2282798
2313667258 0 133993362
2447660620 2410952837 250752296
3294360065 253392974 38740493
10731898 1377341408 167715810
1457582089 2364910189 46042648
593784392 3009289500 824592362
3333100558 222819755 19841321
1418376754 1799453255 39205335
1503624737 2246406621 16132924
178447708 2777206247 232083253
3482792381 1838658590 351089481
soil-to-fertilizer map:
3513795976 4258851234 36116062
3393453635 4148223693 110627541
3504081176 3494735450 6350258
2671742993 3596285367 235915393
991290653 256764866 25867175
2907658386 3330719253 68855819
3336496635 4091266693 56957000
3161141476 2536943456 80523019
1961696534 304660310 29551079
812996514 1560772632 178294139
1562163347 2321959023 78904062
31289107 1039870587 339682886
1520029818 1928417376 42133529
3510431434 3832200760 3364542
3549912038 3272523584 58195669
0 149071717 31289107
3608107707 3501085708 5732766
503523937 1739066771 189350605
3071674583 3506818474 89466893
3241664495 3996434553 94832140
1708133363 454333361 253563171
3813493721 3097084118 175439466
1991247613 1970550905 351408118
3613840473 2897430870 199653248
2536943456 2762631333 134799537
1641067409 244319429 12445437
3994753216 3913095788 83338765
2976514205 3399575072 95160378
1354883134 0 143118415
1349131883 2400863085 5751251
1498001549 282632041 22028269
2342655731 180360824 63958605
370971993 1379553473 126598642
4149802438 2617466475 145164858
1017157828 707896532 331974055
692874542 334211389 120121972
497570635 143118415 5953302
3988933187 3907275759 5820029
4078091981 3835565302 71710457
1653512846 1506152115 54620517
fertilizer-to-water map:
3053686523 2028998994 1241280773
1492748555 1562401968 269616514
554432178 1000324407 562077561
2944878746 3270279767 108807777
2501520804 3379087544 52288887
1762365069 20686928 69653413
2028998994 3431376431 472521810
1431309984 814973200 3653900
409832614 0 20686928
430519542 818627100 123912636
1116509739 500172955 314800245
2553809691 3903898241 391069055
0 90340341 409832614
1434963884 942539736 57784671
water-to-light map:
2774754469 1598606098 15160294
3832622498 1469118874 129487224
4125818569 3997047227 169148727
1108418694 1130695768 196125912
637654660 517892123 26551592
2519230072 3399515763 135968347
2751000257 3126996880 23754212
861800165 884077239 88532605
1469118874 2566660966 63929427
2789914763 3150751092 63425583
2853340346 2561960449 4700517
1692681911 3397592997 1922766
2858040863 1773257241 287341147
2655198419 2851614649 15098309
950332770 972609844 158085924
591049922 471287385 46604738
3482333989 3849276196 108901632
1694604677 1613766392 159490849
3591235621 3958177828 38869399
3630105020 4166195954 128771342
3205039781 3535484110 277294208
2706794606 2060598388 44205651
386607659 544443715 110595292
3962109722 2540862463 21097986
697311924 0 92263281
558450415 404456802 11447837
2409200012 3214176675 110030060
569898252 862925569 21151670
1354525884 415904639 55382746
789575205 790700609 72224960
3832262624 2690248164 359874
163757080 181606223 222850579
1533048301 2967363270 159633610
497202951 784452458 6248151
2670296728 3812778318 36497878
3145382010 2630590393 59657771
1854095526 2104804039 436058424
0 655039007 74414138
2390804262 2690608038 18395750
1304544606 1326821680 49981278
3758876362 3324206735 73386262
664206252 1376802958 33105672
74414138 92263281 89342942
3983207708 2709003788 142610861
503451102 729453145 54999313
2290153950 2866712958 100650312
light-to-temperature map:
2054128675 422374783 216418447
3729049939 3132111492 565917357
524183620 1261361039 34450583
723901655 638793230 74616934
304496246 795175951 115896188
1128506994 1008723417 50927515
958650763 2074746732 3056214
0 1224918384 36442655
558634203 1059650932 165267452
2052385426 713410164 1743249
833053864 1953862956 120883776
36442655 715153413 80022538
1455705971 1506174459 386316618
1842022589 1295811622 210362837
2270547122 2077802946 24477429
116465193 2102280375 188031053
1179434509 945607414 63116003
798518589 911072139 34535275
3373647615 3893335786 195498774
3696979816 3698028849 32070123
1242550512 1892491077 43410067
3051130577 2566857633 322517038
3002478931 3844684140 48651646
2311039190 3730098972 114585168
2425624358 2311039190 187630064
2819387158 2889374671 183091773
1285960579 103791186 85466201
1371426780 338095592 84279191
1110545182 1935901144 17961812
953937640 2290311428 4713123
420392434 0 103791186
961706977 189257387 148838205
3637334768 3072466444 59645048
3569146389 2498669254 68188379
2613254422 4088834560 206132736
temperature-to-humidity map:
2032423062 2486277941 26281270
333062067 2316624216 6051173
1716048249 1385455997 91409968
460397469 2512559211 69041956
25538975 668468772 15388105
2090913379 324344034 71221218
2804805674 3018690414 130533369
529439425 908821722 476634275
1106765273 448560048 219908724
2162134597 1476865965 445565302
0 395565252 25538975
4004204691 4019550481 43244121
2058704332 0 32209047
1516375281 2116951248 199672968
3888833667 2764269134 115371024
40927080 32209047 292134987
1490276549 2581601167 26098732
1360818538 2322675389 129458011
1006073700 2043715496 73235752
1079309452 421104227 27455821
1807458217 683856877 224964845
339113240 1922431267 121284229
4155917040 2879640158 139050256
2764269134 4171262830 40536540
4047448812 4062794602 108468228
2935339043 3149223783 870326698
1326673997 2452133400 34144541
3805665741 4211799370 83167926
humidity-to-location map:
3928575650 3147563455 98804874
2357899446 2418187254 26586982
449562184 2261875136 59054833
308294839 60287808 141267345
1872062279 1591999301 10857495
1227084719 574109504 259895254
1980177059 1765508840 13399403
1162615704 1941046629 64469015
2384486428 2654234915 114059261
702311863 1515542756 40659242
1993576462 2005515644 256359492
3047301127 3246368329 27789688
650396000 1713592977 51915863
3701335066 3862068622 181049310
1122863338 1673840611 39752366
3075090815 4174917460 120049836
3882384376 2778717800 46191274
1626219043 201555153 245843236
4027380524 3325898523 267586772
3417979817 4043117932 13866284
3281454033 2925002624 18592540
110359150 1556201998 35797303
2558833497 2444774236 209460679
508617017 834004758 141778983
1574315753 975783741 51903290
2249935954 1027687031 107963492
0 463750354 110359150
2778717800 3593485295 268583327
3195140651 2824909074 86313382
3445626269 2943595164 203968291
3324037823 4080975466 93941994
742971105 1135650523 379892233
146156453 1778908243 39038597
3300046573 4056984216 23991250
1503331938 1602856796 70983815
185195050 1817946840 123099789
3649594560 3274158017 21920411
1486979973 447398389 16351965
3671514971 3296078428 29820095
2498545689 0 60287808
3431846101 2911222456 13780168
1882919774 2320929969 97257285
+151
View File
@@ -0,0 +1,151 @@
#!/bin/python3.12
FILE_PATH = "input.text"
class ConversionRange:
target_start : int
target_end : int
source_start : int
source_end : int
translate : int
def __init__(self, target_start : int, source_start : int, length : int):
self.target_start = target_start
self.source_start = source_start
self.target_end = self.target_start + length
self.source_end = self.source_start + length
self.translate = self.target_start - self.source_start
def __str__(self):
print(f"Target start: {self.target_start}")
print(f"Source start: {self.source_start}")
print(f"Translate: {self.translate}")
return ""
"""
{
(79, 93) : {
(79, 93) : {
(52, 99) : {
(52, 53) : {
(37, 38) : {
}
},
(54, 99) : {
(54, 99) : {
}
}
}
}
}
}
"""
class Conversion:
start : int
end : int
ranges : list
def __init__(self, start : int, end : int):
self.start = start
self.end = end
self.ranges = []
def __contains__(self, r) -> bool:
if r.start >= self.start and r.end <= self.end:
return True
return False
def add_range(self, range) -> None:
self.ranges.append(range)
def convert(self, num : int) -> int:
for r in self.ranges:
if num >= r.source_start and num <= r.source_end:
return num + r.translate
return num
def convert_range(self, range : tuple[int, int]) -> list:
start, end: int = range
results: list = []
result: list = [None, None]
for r in self.ranges:
if r.source_start >= start:
result[0] = r.target_start
if r.source_end <= end:
result[1] = r.target_end
if result[0] and result[1]:
results.append(result)
result = []
def main() -> None:
with open(FILE_PATH, 'r') as f:
contents = f.read().split('\n')
# Setup
seeds: list[int] = []
maps: dict[str, Conversion] = {}
maps["seed-to-soil"] = Conversion()
maps["soil-to-fertilizer"] = Conversion()
maps["fertilizer-to-water"] = Conversion()
maps["water-to-light"] = Conversion()
maps["light-to-temperature"] = Conversion()
maps["temperature-to-humidity"] = Conversion()
maps["humidity-to-location"] = Conversion()
current_conversion: str = ""
# Parse the file
for index, line in enumerate(contents):
if index == 0:
seeds_list: list[str] = line.split(": ")[1].split()
for seed in seeds_list:
seeds.append(int(seed))
print(f"Seeds: {seeds}")
continue
if not line:
continue
if not line[0].isdigit():
current_conversion = line[:-5]
print(f"Current conversion: {current_conversion}")
continue
nums: list[int] = list(map(lambda x: int(x), line.split()))
temp = ConversionRange(nums[0], nums[1], nums[2])
print(temp)
maps[current_conversion].ranges.append(temp)
# Convert the seeds
lowest_location: float = float('inf')
for seed in seeds:
temp = seed
for key, value in maps.items():
print(f"Mapping {temp} with {key}")
temp = value.convert(temp)
if temp < lowest_location:
lowest_location = temp
print(f"Location: {temp}")
print(f"Lowest location: {lowest_location}")
if __name__ == "__main__":
main()
+31
View File
@@ -0,0 +1,31 @@
class Range:
start: int
end: int
def __init__(self, s: int, e: int):
self.start = s
self.end = e
def contains(self, key) -> tuple | None:
start, end = (key.start, key.end)
if start > self.end or end <= self.start:
return None
start_value = start if self.start <= start and start <= self.end else self.start
end_value = end if self.end >= end and end >= self.start else self.end
return Range(start_value, end_value)
def __str__(self) -> str:
return f'({self.start}, {self.end})'
r = Range(1, 5)
r2 = Range(2, 3)
print(r.contains(r2))
+33
View File
@@ -0,0 +1,33 @@
seeds: 79 14 55 13
seed-to-soil map:
50 98 2
52 50 48
soil-to-fertilizer map:
0 15 37
37 52 2
39 0 15
fertilizer-to-water map:
49 53 8
0 11 42
42 0 7
57 7 4
water-to-light map:
88 18 7
18 25 70
light-to-temperature map:
45 77 23
81 45 19
68 64 13
temperature-to-humidity map:
0 69 1
1 0 69
humidity-to-location map:
60 56 37
56 93 4
+2
View File
@@ -0,0 +1,2 @@
Time: 51 69 98 78
Distance: 377 1171 1224 1505
+37
View File
@@ -0,0 +1,37 @@
FILE_PATH = "input.text"
def main() -> None:
with open(FILE_PATH, 'r') as f:
lines = f.readlines()
race_times: list[int] = list(map(lambda x: int(x), lines[0].split()[1:]))
race_record_distances: list[int] = list(map(lambda x: int(x), lines[1].split()[1:]))
win_combinations: list[int] = []
for index, time in enumerate(race_times):
wins: int = 0
for v in range(1, time):
time_left: int = time - v
distance: int = v * time_left
if distance > race_record_distances[index]:
wins += 1
win_combinations.append(wins)
product: int = win_combinations[0]
for combo in win_combinations[1:]:
product *= combo
print(f"Product of combinations: {product}")
if __name__ == "__main__":
main()
+2
View File
@@ -0,0 +1,2 @@
Time: 7 15 30
Distance: 9 40 200
+2
View File
@@ -0,0 +1,2 @@
Time: 51 69 98 78
Distance: 377 1171 1224 1505
+28
View File
@@ -0,0 +1,28 @@
FILE_PATH = "input.text"
def main() -> None:
with open(FILE_PATH, 'r') as f:
lines = f.readlines()
race_time: int = int(''.join(list(map(lambda x: x if x != " " else "", lines[0][5:]))))
race_record_distance: int = int(''.join(list(map(lambda x: x if x != " " else "", lines[1][10:]))))
win_combinations: int = 0
for v in range(1, race_time):
time_left: int = race_time - v
distance: int = v * time_left
if distance > race_record_distance:
win_combinations += 1
print(f"Win combinations: {win_combinations}")
if __name__ == "__main__":
main()
+2
View File
@@ -0,0 +1,2 @@
Time: 7 15 30
Distance: 9 40 200
Binary file not shown.
Binary file not shown.
+1000
View File
@@ -0,0 +1,1000 @@
486AA 252
24544 330
33TTT 540
242K2 966
334A4 877
3632J 651
22K55 378
9J656 695
Q7478 933
5K266 279
AK9J8 840
6JQ9J 697
47JT6 545
777K2 400
QTTTT 115
6J554 121
KJAKA 677
KKK8Q 372
3K8A6 428
6JTJJ 249
2626J 909
Q47Q9 859
QQQKT 116
AQAA6 200
K88Q8 542
TTT4T 826
8K56A 619
55J27 637
TTT37 513
62362 254
J383K 329
4Q89J 682
6TQ75 222
Q4298 774
A3AA3 263
86672 866
5A5AJ 606
K6K79 27
88AJJ 514
QJ725 961
77727 509
8T9JT 582
6Q464 98
75887 995
69TT9 624
8327K 377
TT444 561
9K89K 204
JQAQ5 393
TTTJT 331
3T8Q2 588
JKKKK 572
AT5TT 810
AJ552 162
Q2A23 258
688QA 816
4T555 183
K4342 461
A9929 369
7J969 730
8KAQ9 825
KK47K 170
4Q4JJ 150
444Q4 964
A7A77 251
999JT 186
8A88A 325
2623K 135
3Q767 913
99989 855
4444A 556
6J757 383
77788 75
57A24 185
Q3QK3 627
6A855 982
6KQ23 399
TT49T 630
6AAAJ 443
76K8K 940
Q8888 747
AK48T 250
22A22 506
TT547 538
Q5J2A 11
546A3 137
A38Q2 753
TK3K2 881
22627 771
Q67AK 298
J2262 782
2QAQ2 5
JTK7K 625
A3337 766
6JQ45 924
A9999 544
45444 716
K7777 673
6QT4T 541
T4222 811
T8888 799
QQQJQ 426
5858J 886
77A77 897
QJ866 448
48J43 73
2Q4J7 432
66K66 787
69A4K 114
T6792 685
79A99 306
KK9K9 860
96666 992
85858 558
Q2AT4 308
Q9QQ5 496
8AAJA 271
T3TJK 919
2836J 662
78878 431
88887 184
J3QQ8 609
T4JTT 778
AJ533 30
3TT4J 349
J6282 925
6Q874 82
AKK24 832
3QJ33 65
65522 288
22Q22 749
J8K84 497
A343Q 794
38J53 314
886Q8 613
7Q568 899
AQAKK 990
3978J 438
39K6J 468
8428J 466
TJ4T7 776
73825 726
AK53Q 683
6J434 206
68Q84 64
8KTTJ 505
JJ77J 773
73355 13
QQJ36 441
J6KA5 980
Q7A88 718
46646 449
JQ994 460
Q54A7 675
A7TQT 195
3887K 219
J277T 16
98J29 486
TA777 375
687QQ 462
KQKQK 687
KTT28 322
TT3TT 181
K4444 125
Q8QTT 286
JT5TQ 410
5AA65 935
3QTJ3 638
5T4Q9 10
JK3T3 595
2A9AA 362
A58AA 145
94KK9 310
88Q2Q 482
3985A 244
6AA96 711
Q7337 34
8828J 356
7379J 903
28288 83
K22K2 923
K5J25 767
22992 500
66787 786
9746J 661
765T9 31
9J9J6 285
6348T 264
562J9 280
998QQ 192
99559 751
999T9 817
J5TT5 715
37722 820
595K5 435
8A5A8 187
59858 139
42Q5Q 212
KQQQQ 15
5QQQQ 929
Q777J 631
66TTT 455
56226 689
73373 887
K32T3 665
3A36A 447
QAAJ8 143
84448 324
T4344 759
9J99Q 371
98989 309
72T46 717
QQ5KT 821
8T64A 236
A2AA2 918
52775 907
7T7T7 211
6Q782 535
75A36 12
Q9Q62 274
T2463 752
797J9 471
K7KK7 414
444K3 917
4QQAQ 586
59J64 895
6K6J6 142
6T464 366
3K5AA 465
3QQ4Q 769
K5533 941
T2299 39
333TJ 597
AA8AA 975
9J4KK 198
6QQ44 554
44469 433
264AQ 628
9986J 178
786J7 894
86866 656
5J555 156
QTJQK 858
A84AA 526
32J37 132
4666Q 427
894QT 472
7K469 1000
9J77J 888
95559 478
44553 600
K9J9K 37
96979 814
99393 148
A99AA 88
953TQ 708
6KTQ3 437
KKAJK 358
72292 439
63362 599
5J88J 639
74444 604
6Q6J3 698
TAA66 843
9QQJ9 168
TT8TT 381
JJTA2 960
36363 423
455J8 602
8A543 223
Q8T42 884
8A888 227
AQAA5 872
6K525 364
58KA9 62
33277 296
KAKKA 386
665T8 259
KJKQK 593
36355 85
5KK47 926
35539 17
66466 19
A979Q 589
54888 218
477JT 574
66634 105
76T25 161
2739J 883
J3433 808
7J7J3 436
7252T 721
6QA2J 18
2T373 334
39393 770
39969 262
79T99 833
2794Q 14
9AK36 996
JQ4QQ 579
TJ53A 757
JA7AA 302
K3333 159
4K4KA 424
26T62 988
A4582 571
59999 841
9999J 959
882Q2 220
74777 484
48T53 179
9T947 269
8J62A 113
88KAA 837
5J2JQ 319
9K499 904
282A2 756
78K63 801
2A5A5 539
Q6QJK 171
55535 492
7J775 323
62626 291
88883 459
69336 196
TTA4T 921
6236T 667
58K58 475
68KK8 201
55559 875
26AAA 616
4JT59 90
T3333 831
4A359 394
53325 914
T5886 268
22T44 729
34443 21
TA72K 71
KTJQJ 979
4TT5T 790
38983 949
975T2 493
AJ2KK 303
85J75 367
T44A4 694
6346T 368
83383 134
639J2 126
2435A 77
6K972 741
5TA55 622
5TT66 567
99949 193
KJ973 357
5QT38 225
73A7A 748
43555 233
3A46J 335
72272 154
A3832 660
74774 997
96QAK 405
4A844 305
3J3J3 517
K5KKK 720
QQT7T 727
55282 487
523Q4 99
55585 912
QJK65 796
222AJ 734
TTKTT 235
QK67J 245
4A4JA 182
9TAAT 84
79K43 353
AAQAJ 149
8A8AA 587
TA5J9 952
58888 237
79Q25 658
258KT 512
424T4 502
6J666 485
5555A 457
7A523 809
K5K66 188
ATKKT 981
33Q66 594
75A88 987
6J677 91
68688 864
QQ33Q 635
22427 755
AJK83 153
42Q8K 802
AJT8J 650
5AK6A 691
979K5 253
5K45K 653
AA459 93
T2T8J 838
49947 479
7Q799 647
J4524 208
66K6K 943
53232 902
JJQQQ 869
64K4K 534
77799 406
77J7J 844
A75QK 971
865A2 26
KJ4AA 885
TA856 835
84A78 703
J9696 92
J28K2 891
KKAAT 546
K2592 531
AA96A 676
73KT7 793
66JJ6 719
99379 578
8Q685 739
QQQT9 282
JJ4J4 420
66969 106
A7AQQ 850
9K526 311
AQ8TJ 246
462K2 706
656J6 504
TQQ57 172
77Q37 416
5857Q 857
QQQ3J 265
44J84 354
TT537 991
QAT29 213
8A9JA 823
684Q2 275
54T92 946
5K55K 283
94732 986
55565 700
6JA66 893
3K33K 865
JKKTK 641
99636 984
333T9 396
24J25 828
33AJ3 939
J7J87 347
84884 577
3J366 666
QQ4Q4 70
KQ562 806
95275 9
86KKA 95
7K67K 868
TAATA 668
7JK9J 614
855J3 138
59496 360
66272 422
7927A 255
644J4 970
3K33Q 284
2T44J 346
66626 775
622AA 450
JJJ8J 97
T73T2 848
26686 480
8K58A 710
5A55A 852
34683 701
2J827 834
ATAAA 772
9444J 853
J2828 805
JJ369 215
J2962 849
T7TTT 216
9T23K 788
T8759 38
9777J 768
934KQ 141
K7A7J 738
QQAAQ 446
9J93T 524
JAJAA 272
22322 445
6T699 340
99939 203
A5525 528
7QKA2 754
5J558 873
JJJJJ 147
24244 626
JJJ2J 972
JAAAA 740
55QQQ 607
44K45 804
KKQKT 822
J9A5A 905
4A85T 892
J3333 199
KTA9T 798
33393 294
TJ986 692
56J4T 510
967J7 160
JQQ33 59
Q744Q 779
2K8AK 87
JJ852 189
4K77Q 365
42222 702
A2272 792
88949 874
TKT9K 879
Q59Q7 41
TAT9T 477
K4J4T 533
2T2Q2 861
K6JQ6 569
JTT22 947
2J64A 555
K6TTQ 898
AJJQ7 967
QQ444 566
TTT7Q 313
K488T 977
45992 723
38Q33 495
6T75J 927
J323A 100
QQQ77 395
88799 746
KK9KK 295
JJ833 781
87A2K 384
AQ66A 61
856Q2 191
5765K 167
J24TJ 591
362QJ 640
2JT43 654
438J5 217
73299 999
33K2K 915
2952T 300
8666T 764
22332 644
3T9AA 307
79877 575
TJ6T7 516
T6TJ6 163
6T6J6 659
4K426 511
777A4 131
44494 289
QJ82J 690
Q22Q6 760
55527 529
559A5 791
KKQAK 704
KA938 621
KAK9A 934
2J992 123
QQ2QQ 994
3TT5T 763
6KKKK 3
4254K 398
J2442 522
39J37 549
64444 714
KQ7Q9 226
79T79 328
TK3J6 20
J5T95 762
83882 474
97777 916
AT673 570
2A333 998
7J77K 146
686QQ 518
5T77T 671
TQ2QQ 281
J4444 784
JK46T 118
797QT 379
48776 130
484K4 173
JK794 72
7QQ6Q 725
3KT24 209
4J545 581
63T6Q 339
88AKQ 812
99A89 101
QQ799 55
4Q8QK 610
864J9 370
4QJQT 107
644QJ 669
A3AAA 780
9A8AT 950
54342 25
43433 164
58554 559
84887 50
K9KKT 341
T3JA9 104
57T57 453
J4JQ5 592
KJJA5 688
J8898 374
59772 646
K66QK 696
T2T44 440
Q7AJ3 120
Q7777 532
997KQ 292
A4AAA 931
K4KTJ 451
4JAT8 655
Q77Q3 169
QTTQQ 618
68ATK 257
AJ4AA 948
26636 603
3J656 382
4A6AT 936
54555 846
J3289 338
66556 900
J5A9J 112
55T5T 735
K6484 634
444KK 862
K6K6K 205
K55KJ 842
Q27QT 652
73777 901
949J9 4
J26K3 889
2AJK9 79
22227 584
54T9A 42
995A5 736
6QT48 452
K6324 363
7Q832 807
6K633 951
JKK7K 387
2TK73 678
T4JJT 552
66665 908
77877 232
J88J8 789
A8AA2 320
92832 490
44399 355
AT953 750
5A755 388
KJ945 312
JAA88 119
QK9QK 521
7T2T7 871
6K4T9 583
5AAAA 978
T2JT4 174
7J447 361
8QJ8A 470
T5263 43
3K3KK 63
88284 57
48A72 722
4T562 190
6TT96 2
3Q5QQ 221
42744 401
88442 345
Q3Q22 686
69Q28 177
J33JQ 839
833QA 392
J8838 598
QQK75 376
8888J 413
QQQQ6 488
Q6Q6Q 127
9T9JJ 158
355TK 827
4QAAA 765
T7QJ7 498
445T4 911
AA2AA 337
33733 672
92KK4 958
KJ746 231
3632A 22
3K45A 348
T7673 938
39J99 803
Q8T72 58
77444 49
44AQ5 7
657A4 663
QAQQQ 580
974TK 643
2TJJ2 273
89993 342
TT333 590
J88JT 920
AQ2K6 240
68644 229
92A9J 391
444AA 962
48Q4Q 473
Q3Q33 133
7Q233 373
2J2J2 878
9J488 954
AJ979 944
8T3J8 352
J87Q3 56
QQ3KQ 224
3K597 267
9J2TQ 830
J7444 36
55757 605
56556 732
KA6QJ 290
7T95A 955
39344 434
72T39 256
3A333 102
4K8A6 507
55K9T 657
622JT 24
6J766 151
9J9A9 238
866J6 464
6KJK6 851
4T4T8 543
KJA3K 248
A4J86 537
T8QJ8 454
A93AA 421
JJJQQ 863
284K4 620
9J978 67
K7675 536
TT7TA 287
TJ92A 343
4QT44 276
7777T 78
2QT26 444
85558 230
9A9A9 731
Q5225 501
22TQT 425
555J6 930
Q333A 563
45844 202
QA472 679
7TJ77 442
Q7222 122
JK6JK 397
99K9J 417
44434 615
J75A7 633
AA2KA 728
2Q22Q 68
J55J5 359
J4555 415
66823 649
JK3K3 896
773J5 74
T6777 28
K9925 53
K2KTK 611
KKK44 89
J3KKK 129
TK8JA 109
K3339 525
Q59QJ 928
J8TTT 402
77757 612
KKKK7 155
85A59 197
KQQK5 350
6776K 301
KKK55 910
AQAQA 407
92299 693
9A779 175
Q6A27 968
85QQ8 761
TA536 483
66363 278
Q53Q3 234
K4A28 596
7QA8T 565
33355 503
AAA67 40
JA66A 351
634KA 96
JA555 489
TA457 813
A87JK 297
7777J 527
8J8T8 664
6TK87 194
88688 568
QA8A6 867
TT99T 228
J5955 890
52777 385
AQ44Q 737
9867T 299
QTQTT 94
QQTQ7 876
T3TQ6 573
5Q555 44
A73T4 69
QAT72 629
K777K 636
2222J 404
Q4J4Q 103
JT2A2 783
J55JA 315
585T5 744
J3773 645
5625A 608
TA632 327
4J4J4 523
53535 824
636K5 976
4T278 318
9Q77J 815
64T87 758
7QJQ7 547
A7A8A 945
Q6573 29
2QQ2T 266
AK427 152
22592 304
69AJ6 261
T5T52 180
TQ59J 705
99669 648
6TQJ4 785
6AQQ5 430
TQTQ5 389
J7AQ5 176
33A4A 463
T8383 344
Q636K 963
Q3AAQ 1
K29Q3 870
JQ8TT 157
2Q96J 491
5KK94 709
K44J5 856
J233T 476
K5555 326
283K9 965
TQAAA 23
4T5JA 165
6477A 81
82855 836
8T88T 973
A3JA3 110
49449 983
92K2K 124
8J777 336
A8555 519
JJQQA 409
55865 617
T4484 481
K729T 777
55A44 111
667Q9 989
A6J55 906
3A44J 128
K4A65 108
Q8A88 680
Q8K63 411
4TT4Q 733
893A4 937
7374T 458
659JK 144
JQ642 601
52333 712
JQA3K 277
QQ555 140
5377A 117
98T89 46
T8T8T 674
KQT88 243
J7333 317
KKQ7Q 560
66636 33
5AT6T 942
24224 52
A6276 797
J99J9 60
Q777A 80
87TQJ 241
56QT3 553
KK9KJ 745
AJQA9 707
6JA99 408
6385K 403
K5JQQ 829
6K644 985
5K4Q3 530
QQTQQ 51
255K4 316
T555J 499
66Q66 882
8K89J 166
766T6 214
A6AJQ 845
886A9 969
97264 974
69Q69 551
95529 642
K569T 47
K2222 333
TKTKK 520
J7JT7 632
22822 242
5282J 684
9Q8T9 548
9KJ75 957
JKJKK 854
6T6T6 270
6Q6Q6 412
AJKQ5 380
J3335 508
77677 623
698K6 207
QTT78 795
AA5K4 332
38838 932
TTTJJ 956
99TT8 418
7454J 800
Q7AAA 880
TT5T5 494
432AJ 429
QK9AT 293
6668Q 6
6TT2J 847
4A4A3 713
4J9K2 469
23333 136
T4J28 819
KA923 681
A6256 210
QAA33 953
4JJ48 48
9K5JK 576
6Q5J3 390
6AAAA 564
62252 54
AJT6J 993
66JKJ 724
44554 45
992JK 260
8T8Q4 239
97A34 699
KK85K 419
8J638 557
49K88 76
8K99T 321
Q9993 8
57744 922
24KKK 35
TATAT 742
QQ988 550
5AK55 456
5QK58 467
T8TK5 743
4Q66J 818
3449J 585
JA428 66
8J957 562
Q7KQQ 515
2Q9QT 247
8QQ88 670
38783 86
6646T 32
+140
View File
@@ -0,0 +1,140 @@
from enum import IntEnum
INPUT_FILE = "input.text"
possible_letter_cards = {
"A" : 14,
"K" : 13,
"Q" : 12,
"J" : 11,
"T" : 10
}
class HandType(IntEnum):
FiveOfAKind = 7
FourOfAKind = 6
FullHouse = 5
ThreeOfAKind = 4
TwoPair = 3
OnePair = 2
HighCard = 1
def card_to_value(card : str) -> int | None:
if len(card) > 1:
print("Input is more than one character")
return None
if card in possible_letter_cards:
return possible_letter_cards[card]
elif card.isdigit():
num = int(card)
if num <= 9 and num >= 2:
return num
else:
print(f"Card invalid, Card: {card}")
return None
class Hand:
cards : str
card_values : list[int]
bid : int
hand_type : HandType
def __init__(self, hand : str, bid : int):
self.bid = bid
self.cards = hand
self.card_values = []
self.find_hand_type()
self.get_card_values()
print(f"Found hand type is {self.hand_type}")
print(f"Card Values: {self.card_values}")
def find_hand_type(self) -> None:
matches : list[int] = []
print(f"Cards: {self.cards}")
for card in self.cards:
temp_cards = self.cards
temp_cards = temp_cards.replace(card, "")
matches.append(len(temp_cards))
print(f"Matches: {matches}")
if matches.count(0) == 5:
self.hand_type = HandType.FiveOfAKind
elif matches.count(1) == 4:
self.hand_type = HandType.FourOfAKind
elif matches.count(2) == 3 and matches.count(3) == 2:
self.hand_type = HandType.FullHouse
elif matches.count(2) == 3:
self.hand_type = HandType.ThreeOfAKind
elif matches.count(3) == 4:
self.hand_type = HandType.TwoPair
elif matches.count(3) == 2:
self.hand_type = HandType.OnePair
else:
self.hand_type = HandType.HighCard
def get_card_values(self) -> None:
for card in self.cards:
self.card_values.append(card_to_value(card))
def main() -> None:
with open(INPUT_FILE, "r") as f:
data = f.readlines()
# Get all our hands and figure out what they ard
hands: list[Hand] = []
for line in data:
hand, bid = line.split()
hands.append(Hand(hand, int(bid)))
# Sort and decide rank
total = 0
sorted_hands: list[Hand] = bubbleSortHands(hands)
for i in range(0, len(sorted_hands)):
rank = i + 1
total += sorted_hands[i].bid * rank
print(f"Total Winnings: {total}")
# is it fast? probably not, but it works
def bubbleSortHands(arr: list[Hand]) -> list[Hand]:
n: int = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j].hand_type > arr[j + 1].hand_type:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
elif arr[j].hand_type == arr[j + 1].hand_type:
for card_index in range(0, 5):
if arr[j].card_values[card_index] > arr[j + 1].card_values[card_index]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
break
elif arr[j].card_values[card_index] < arr[j + 1].card_values[card_index]:
break
if (swapped == False):
break
return arr
if __name__ == "__main__":
main()
+86
View File
@@ -0,0 +1,86 @@
use std::fs;
use std::collections::HashMap;
const FILE_PATH: &str = "./test.text";
enum HandType
{
FiveOfKind,
FourOfKind,
FullHouse,
ThreeOfKind,
TwoPair,
OnePair,
HighCard
}
struct Hand
{
value: String,
bid: i32,
hand_type: HandType
}
fn compare_hands(hand_1: Hand, hand_2: Hand) -> Hand
{
let result: Hand;
result
}
fn get_hand_type(hand: &str) //-> HandType
{
// Parse hand into map
let mut hand_values: HashMap<char, i32> = HashMap::new();
for card in hand.chars()
{
match hand_values.get(&card) {
Some(_) => { *hand_values.get_mut(&card).unwrap() += 1; },
None => { hand_values.insert(card, 1); }
}
}
// Decide HandType
for (card, value) in &hand_values
{
}
}
fn card_value(card: &str) -> i32
{
match card {
"A" => 13,
"K" => 12,
"Q" => 11,
"J" => 10,
"T" => 9,
"9" => 8,
"8" => 7,
"7" => 6,
"6" => 5,
"5" => 4,
"4" => 3,
"3" => 2,
"2" => 1,
_ => -1
}
}
fn main()
{
let contents = fs::read_to_string(FILE_PATH).unwrap();
let hand_rankings: Vec<Hand> = Vec::new();
for line in contents.lines()
{
let hand_and_bid: Vec<&str> = line.split(" ").collect();
let hand = hand_and_bid[0];
let bid: i32 = hand_and_bid[1].parse().unwrap();
}
}
+5
View File
@@ -0,0 +1,5 @@
32T3K 765
T55J5 684
KK677 28
KTJJT 220
QQQJA 483
+1000
View File
@@ -0,0 +1,1000 @@
486AA 252
24544 330
33TTT 540
242K2 966
334A4 877
3632J 651
22K55 378
9J656 695
Q7478 933
5K266 279
AK9J8 840
6JQ9J 697
47JT6 545
777K2 400
QTTTT 115
6J554 121
KJAKA 677
KKK8Q 372
3K8A6 428
6JTJJ 249
2626J 909
Q47Q9 859
QQQKT 116
AQAA6 200
K88Q8 542
TTT4T 826
8K56A 619
55J27 637
TTT37 513
62362 254
J383K 329
4Q89J 682
6TQ75 222
Q4298 774
A3AA3 263
86672 866
5A5AJ 606
K6K79 27
88AJJ 514
QJ725 961
77727 509
8T9JT 582
6Q464 98
75887 995
69TT9 624
8327K 377
TT444 561
9K89K 204
JQAQ5 393
TTTJT 331
3T8Q2 588
JKKKK 572
AT5TT 810
AJ552 162
Q2A23 258
688QA 816
4T555 183
K4342 461
A9929 369
7J969 730
8KAQ9 825
KK47K 170
4Q4JJ 150
444Q4 964
A7A77 251
999JT 186
8A88A 325
2623K 135
3Q767 913
99989 855
4444A 556
6J757 383
77788 75
57A24 185
Q3QK3 627
6A855 982
6KQ23 399
TT49T 630
6AAAJ 443
76K8K 940
Q8888 747
AK48T 250
22A22 506
TT547 538
Q5J2A 11
546A3 137
A38Q2 753
TK3K2 881
22627 771
Q67AK 298
J2262 782
2QAQ2 5
JTK7K 625
A3337 766
6JQ45 924
A9999 544
45444 716
K7777 673
6QT4T 541
T4222 811
T8888 799
QQQJQ 426
5858J 886
77A77 897
QJ866 448
48J43 73
2Q4J7 432
66K66 787
69A4K 114
T6792 685
79A99 306
KK9K9 860
96666 992
85858 558
Q2AT4 308
Q9QQ5 496
8AAJA 271
T3TJK 919
2836J 662
78878 431
88887 184
J3QQ8 609
T4JTT 778
AJ533 30
3TT4J 349
J6282 925
6Q874 82
AKK24 832
3QJ33 65
65522 288
22Q22 749
J8K84 497
A343Q 794
38J53 314
886Q8 613
7Q568 899
AQAKK 990
3978J 438
39K6J 468
8428J 466
TJ4T7 776
73825 726
AK53Q 683
6J434 206
68Q84 64
8KTTJ 505
JJ77J 773
73355 13
QQJ36 441
J6KA5 980
Q7A88 718
46646 449
JQ994 460
Q54A7 675
A7TQT 195
3887K 219
J277T 16
98J29 486
TA777 375
687QQ 462
KQKQK 687
KTT28 322
TT3TT 181
K4444 125
Q8QTT 286
JT5TQ 410
5AA65 935
3QTJ3 638
5T4Q9 10
JK3T3 595
2A9AA 362
A58AA 145
94KK9 310
88Q2Q 482
3985A 244
6AA96 711
Q7337 34
8828J 356
7379J 903
28288 83
K22K2 923
K5J25 767
22992 500
66787 786
9746J 661
765T9 31
9J9J6 285
6348T 264
562J9 280
998QQ 192
99559 751
999T9 817
J5TT5 715
37722 820
595K5 435
8A5A8 187
59858 139
42Q5Q 212
KQQQQ 15
5QQQQ 929
Q777J 631
66TTT 455
56226 689
73373 887
K32T3 665
3A36A 447
QAAJ8 143
84448 324
T4344 759
9J99Q 371
98989 309
72T46 717
QQ5KT 821
8T64A 236
A2AA2 918
52775 907
7T7T7 211
6Q782 535
75A36 12
Q9Q62 274
T2463 752
797J9 471
K7KK7 414
444K3 917
4QQAQ 586
59J64 895
6K6J6 142
6T464 366
3K5AA 465
3QQ4Q 769
K5533 941
T2299 39
333TJ 597
AA8AA 975
9J4KK 198
6QQ44 554
44469 433
264AQ 628
9986J 178
786J7 894
86866 656
5J555 156
QTJQK 858
A84AA 526
32J37 132
4666Q 427
894QT 472
7K469 1000
9J77J 888
95559 478
44553 600
K9J9K 37
96979 814
99393 148
A99AA 88
953TQ 708
6KTQ3 437
KKAJK 358
72292 439
63362 599
5J88J 639
74444 604
6Q6J3 698
TAA66 843
9QQJ9 168
TT8TT 381
JJTA2 960
36363 423
455J8 602
8A543 223
Q8T42 884
8A888 227
AQAA5 872
6K525 364
58KA9 62
33277 296
KAKKA 386
665T8 259
KJKQK 593
36355 85
5KK47 926
35539 17
66466 19
A979Q 589
54888 218
477JT 574
66634 105
76T25 161
2739J 883
J3433 808
7J7J3 436
7252T 721
6QA2J 18
2T373 334
39393 770
39969 262
79T99 833
2794Q 14
9AK36 996
JQ4QQ 579
TJ53A 757
JA7AA 302
K3333 159
4K4KA 424
26T62 988
A4582 571
59999 841
9999J 959
882Q2 220
74777 484
48T53 179
9T947 269
8J62A 113
88KAA 837
5J2JQ 319
9K499 904
282A2 756
78K63 801
2A5A5 539
Q6QJK 171
55535 492
7J775 323
62626 291
88883 459
69336 196
TTA4T 921
6236T 667
58K58 475
68KK8 201
55559 875
26AAA 616
4JT59 90
T3333 831
4A359 394
53325 914
T5886 268
22T44 729
34443 21
TA72K 71
KTJQJ 979
4TT5T 790
38983 949
975T2 493
AJ2KK 303
85J75 367
T44A4 694
6346T 368
83383 134
639J2 126
2435A 77
6K972 741
5TA55 622
5TT66 567
99949 193
KJ973 357
5QT38 225
73A7A 748
43555 233
3A46J 335
72272 154
A3832 660
74774 997
96QAK 405
4A844 305
3J3J3 517
K5KKK 720
QQT7T 727
55282 487
523Q4 99
55585 912
QJK65 796
222AJ 734
TTKTT 235
QK67J 245
4A4JA 182
9TAAT 84
79K43 353
AAQAJ 149
8A8AA 587
TA5J9 952
58888 237
79Q25 658
258KT 512
424T4 502
6J666 485
5555A 457
7A523 809
K5K66 188
ATKKT 981
33Q66 594
75A88 987
6J677 91
68688 864
QQ33Q 635
22427 755
AJK83 153
42Q8K 802
AJT8J 650
5AK6A 691
979K5 253
5K45K 653
AA459 93
T2T8J 838
49947 479
7Q799 647
J4524 208
66K6K 943
53232 902
JJQQQ 869
64K4K 534
77799 406
77J7J 844
A75QK 971
865A2 26
KJ4AA 885
TA856 835
84A78 703
J9696 92
J28K2 891
KKAAT 546
K2592 531
AA96A 676
73KT7 793
66JJ6 719
99379 578
8Q685 739
QQQT9 282
JJ4J4 420
66969 106
A7AQQ 850
9K526 311
AQ8TJ 246
462K2 706
656J6 504
TQQ57 172
77Q37 416
5857Q 857
QQQ3J 265
44J84 354
TT537 991
QAT29 213
8A9JA 823
684Q2 275
54T92 946
5K55K 283
94732 986
55565 700
6JA66 893
3K33K 865
JKKTK 641
99636 984
333T9 396
24J25 828
33AJ3 939
J7J87 347
84884 577
3J366 666
QQ4Q4 70
KQ562 806
95275 9
86KKA 95
7K67K 868
TAATA 668
7JK9J 614
855J3 138
59496 360
66272 422
7927A 255
644J4 970
3K33Q 284
2T44J 346
66626 775
622AA 450
JJJ8J 97
T73T2 848
26686 480
8K58A 710
5A55A 852
34683 701
2J827 834
ATAAA 772
9444J 853
J2828 805
JJ369 215
J2962 849
T7TTT 216
9T23K 788
T8759 38
9777J 768
934KQ 141
K7A7J 738
QQAAQ 446
9J93T 524
JAJAA 272
22322 445
6T699 340
99939 203
A5525 528
7QKA2 754
5J558 873
JJJJJ 147
24244 626
JJJ2J 972
JAAAA 740
55QQQ 607
44K45 804
KKQKT 822
J9A5A 905
4A85T 892
J3333 199
KTA9T 798
33393 294
TJ986 692
56J4T 510
967J7 160
JQQ33 59
Q744Q 779
2K8AK 87
JJ852 189
4K77Q 365
42222 702
A2272 792
88949 874
TKT9K 879
Q59Q7 41
TAT9T 477
K4J4T 533
2T2Q2 861
K6JQ6 569
JTT22 947
2J64A 555
K6TTQ 898
AJJQ7 967
QQ444 566
TTT7Q 313
K488T 977
45992 723
38Q33 495
6T75J 927
J323A 100
QQQ77 395
88799 746
KK9KK 295
JJ833 781
87A2K 384
AQ66A 61
856Q2 191
5765K 167
J24TJ 591
362QJ 640
2JT43 654
438J5 217
73299 999
33K2K 915
2952T 300
8666T 764
22332 644
3T9AA 307
79877 575
TJ6T7 516
T6TJ6 163
6T6J6 659
4K426 511
777A4 131
44494 289
QJ82J 690
Q22Q6 760
55527 529
559A5 791
KKQAK 704
KA938 621
KAK9A 934
2J992 123
QQ2QQ 994
3TT5T 763
6KKKK 3
4254K 398
J2442 522
39J37 549
64444 714
KQ7Q9 226
79T79 328
TK3J6 20
J5T95 762
83882 474
97777 916
AT673 570
2A333 998
7J77K 146
686QQ 518
5T77T 671
TQ2QQ 281
J4444 784
JK46T 118
797QT 379
48776 130
484K4 173
JK794 72
7QQ6Q 725
3KT24 209
4J545 581
63T6Q 339
88AKQ 812
99A89 101
QQ799 55
4Q8QK 610
864J9 370
4QJQT 107
644QJ 669
A3AAA 780
9A8AT 950
54342 25
43433 164
58554 559
84887 50
K9KKT 341
T3JA9 104
57T57 453
J4JQ5 592
KJJA5 688
J8898 374
59772 646
K66QK 696
T2T44 440
Q7AJ3 120
Q7777 532
997KQ 292
A4AAA 931
K4KTJ 451
4JAT8 655
Q77Q3 169
QTTQQ 618
68ATK 257
AJ4AA 948
26636 603
3J656 382
4A6AT 936
54555 846
J3289 338
66556 900
J5A9J 112
55T5T 735
K6484 634
444KK 862
K6K6K 205
K55KJ 842
Q27QT 652
73777 901
949J9 4
J26K3 889
2AJK9 79
22227 584
54T9A 42
995A5 736
6QT48 452
K6324 363
7Q832 807
6K633 951
JKK7K 387
2TK73 678
T4JJT 552
66665 908
77877 232
J88J8 789
A8AA2 320
92832 490
44399 355
AT953 750
5A755 388
KJ945 312
JAA88 119
QK9QK 521
7T2T7 871
6K4T9 583
5AAAA 978
T2JT4 174
7J447 361
8QJ8A 470
T5263 43
3K3KK 63
88284 57
48A72 722
4T562 190
6TT96 2
3Q5QQ 221
42744 401
88442 345
Q3Q22 686
69Q28 177
J33JQ 839
833QA 392
J8838 598
QQK75 376
8888J 413
QQQQ6 488
Q6Q6Q 127
9T9JJ 158
355TK 827
4QAAA 765
T7QJ7 498
445T4 911
AA2AA 337
33733 672
92KK4 958
KJ746 231
3632A 22
3K45A 348
T7673 938
39J99 803
Q8T72 58
77444 49
44AQ5 7
657A4 663
QAQQQ 580
974TK 643
2TJJ2 273
89993 342
TT333 590
J88JT 920
AQ2K6 240
68644 229
92A9J 391
444AA 962
48Q4Q 473
Q3Q33 133
7Q233 373
2J2J2 878
9J488 954
AJ979 944
8T3J8 352
J87Q3 56
QQ3KQ 224
3K597 267
9J2TQ 830
J7444 36
55757 605
56556 732
KA6QJ 290
7T95A 955
39344 434
72T39 256
3A333 102
4K8A6 507
55K9T 657
622JT 24
6J766 151
9J9A9 238
866J6 464
6KJK6 851
4T4T8 543
KJA3K 248
A4J86 537
T8QJ8 454
A93AA 421
JJJQQ 863
284K4 620
9J978 67
K7675 536
TT7TA 287
TJ92A 343
4QT44 276
7777T 78
2QT26 444
85558 230
9A9A9 731
Q5225 501
22TQT 425
555J6 930
Q333A 563
45844 202
QA472 679
7TJ77 442
Q7222 122
JK6JK 397
99K9J 417
44434 615
J75A7 633
AA2KA 728
2Q22Q 68
J55J5 359
J4555 415
66823 649
JK3K3 896
773J5 74
T6777 28
K9925 53
K2KTK 611
KKK44 89
J3KKK 129
TK8JA 109
K3339 525
Q59QJ 928
J8TTT 402
77757 612
KKKK7 155
85A59 197
KQQK5 350
6776K 301
KKK55 910
AQAQA 407
92299 693
9A779 175
Q6A27 968
85QQ8 761
TA536 483
66363 278
Q53Q3 234
K4A28 596
7QA8T 565
33355 503
AAA67 40
JA66A 351
634KA 96
JA555 489
TA457 813
A87JK 297
7777J 527
8J8T8 664
6TK87 194
88688 568
QA8A6 867
TT99T 228
J5955 890
52777 385
AQ44Q 737
9867T 299
QTQTT 94
QQTQ7 876
T3TQ6 573
5Q555 44
A73T4 69
QAT72 629
K777K 636
2222J 404
Q4J4Q 103
JT2A2 783
J55JA 315
585T5 744
J3773 645
5625A 608
TA632 327
4J4J4 523
53535 824
636K5 976
4T278 318
9Q77J 815
64T87 758
7QJQ7 547
A7A8A 945
Q6573 29
2QQ2T 266
AK427 152
22592 304
69AJ6 261
T5T52 180
TQ59J 705
99669 648
6TQJ4 785
6AQQ5 430
TQTQ5 389
J7AQ5 176
33A4A 463
T8383 344
Q636K 963
Q3AAQ 1
K29Q3 870
JQ8TT 157
2Q96J 491
5KK94 709
K44J5 856
J233T 476
K5555 326
283K9 965
TQAAA 23
4T5JA 165
6477A 81
82855 836
8T88T 973
A3JA3 110
49449 983
92K2K 124
8J777 336
A8555 519
JJQQA 409
55865 617
T4484 481
K729T 777
55A44 111
667Q9 989
A6J55 906
3A44J 128
K4A65 108
Q8A88 680
Q8K63 411
4TT4Q 733
893A4 937
7374T 458
659JK 144
JQ642 601
52333 712
JQA3K 277
QQ555 140
5377A 117
98T89 46
T8T8T 674
KQT88 243
J7333 317
KKQ7Q 560
66636 33
5AT6T 942
24224 52
A6276 797
J99J9 60
Q777A 80
87TQJ 241
56QT3 553
KK9KJ 745
AJQA9 707
6JA99 408
6385K 403
K5JQQ 829
6K644 985
5K4Q3 530
QQTQQ 51
255K4 316
T555J 499
66Q66 882
8K89J 166
766T6 214
A6AJQ 845
886A9 969
97264 974
69Q69 551
95529 642
K569T 47
K2222 333
TKTKK 520
J7JT7 632
22822 242
5282J 684
9Q8T9 548
9KJ75 957
JKJKK 854
6T6T6 270
6Q6Q6 412
AJKQ5 380
J3335 508
77677 623
698K6 207
QTT78 795
AA5K4 332
38838 932
TTTJJ 956
99TT8 418
7454J 800
Q7AAA 880
TT5T5 494
432AJ 429
QK9AT 293
6668Q 6
6TT2J 847
4A4A3 713
4J9K2 469
23333 136
T4J28 819
KA923 681
A6256 210
QAA33 953
4JJ48 48
9K5JK 576
6Q5J3 390
6AAAA 564
62252 54
AJT6J 993
66JKJ 724
44554 45
992JK 260
8T8Q4 239
97A34 699
KK85K 419
8J638 557
49K88 76
8K99T 321
Q9993 8
57744 922
24KKK 35
TATAT 742
QQ988 550
5AK55 456
5QK58 467
T8TK5 743
4Q66J 818
3449J 585
JA428 66
8J957 562
Q7KQQ 515
2Q9QT 247
8QQ88 670
38783 86
6646T 32
+158
View File
@@ -0,0 +1,158 @@
from enum import IntEnum
INPUT_FILE = "input.text"
possible_letter_cards = {
"A" : 14,
"K" : 13,
"Q" : 12,
"J" : 1,
"T" : 10
}
class HandType(IntEnum):
FiveOfAKind = 7
FourOfAKind = 6
FullHouse = 5
ThreeOfAKind = 4
TwoPair = 3
OnePair = 2
HighCard = 1
def card_to_value(card : str) -> int | None:
if len(card) > 1:
print("Input is more than one character")
return None
if card in possible_letter_cards:
return possible_letter_cards[card]
elif card.isdigit():
num = int(card)
if num <= 9 and num >= 2:
return num
else:
print(f"Card invalid, Card: {card}")
return None
class Hand:
cards : str
card_values : list[int]
bid : int
hand_type : HandType
def __init__(self, hand : str, bid : int):
self.bid = bid
self.cards = hand
self.card_values = []
self.hand_type = self.find_hand_type(self.cards)
self.get_card_values()
def find_hand_type(self, cards: str) -> int:
# They just had to put the edge case in here
if cards == 'JJJJJ':
return HandType.FiveOfAKind
if 'J' in cards:
best_hand = -1
for card in cards:
if card == 'J':
continue
temp_cards = cards
temp_cards = temp_cards.replace('J', card)
hand_value = self.find_hand_type(temp_cards)
if hand_value > best_hand:
best_hand = hand_value
return best_hand
matches : list[int] = []
for card in cards:
temp_cards = cards
temp_cards = temp_cards.replace(card, "")
matches.append(len(temp_cards))
if matches.count(0) == 5:
return HandType.FiveOfAKind
elif matches.count(1) == 4:
return HandType.FourOfAKind
elif matches.count(2) == 3 and matches.count(3) == 2:
return HandType.FullHouse
elif matches.count(2) == 3:
return HandType.ThreeOfAKind
elif matches.count(3) == 4:
return HandType.TwoPair
elif matches.count(3) == 2:
return HandType.OnePair
else:
return HandType.HighCard
def get_card_values(self) -> None:
for card in self.cards:
self.card_values.append(card_to_value(card))
def main() -> None:
with open(INPUT_FILE, "r") as f:
data = f.readlines()
# Get all our hands and figure out what they ard
hands: list[Hand] = []
for line in data:
hand, bid = line.split()
hands.append(Hand(hand, int(bid)))
# Sort and decide rank
total = 0
sorted_hands: list[Hand] = bubbleSortHands(hands)
for i in range(0, len(sorted_hands)):
rank = i + 1
total += sorted_hands[i].bid * rank
print(f"Total Winnings: {total}")
# is it fast? probably not, but it works
def bubbleSortHands(arr: list[Hand]) -> list[Hand]:
n: int = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j].hand_type > arr[j + 1].hand_type:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
# Do tie-breaker here (J's should count as 0 or like -1)
elif arr[j].hand_type == arr[j + 1].hand_type:
for card_index in range(0, 5):
if arr[j].card_values[card_index] > arr[j + 1].card_values[card_index]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
break
elif arr[j].card_values[card_index] < arr[j + 1].card_values[card_index]:
break
if (swapped == False):
break
return arr
if __name__ == "__main__":
main()
+5
View File
@@ -0,0 +1,5 @@
32T3K 765
T55J5 684
KK677 28
KTJJT 220
QQQJA 483
+788
View File
@@ -0,0 +1,788 @@
LRRLLRRLLRRRLRLRRLRLRLRRLRLRLRLLLRRRLRLRRLLRLRRRLRRRLRLRLRRRLLRRLLRLRLRRRLRLLRRRLRLLRLRRRLRLRRRLRRRLLRRRLLRRRLRRLRRRLLRRRLRRLRRLRRLLRLRRLRRLRRRLRLRLRLRLRLRRRLLRLRRLRLRRLLRRLLRLRRLRRRLRLRLRLRRRLRRLRRLRRLRRLRRLRLRRRLRRRLRRRLRLRLLRRLRRRLRRLRLRRRLRRLRRRLRRLLRRLLLRRRR
GSC = (CLG, RPF)
NTQ = (RMN, HLB)
LTX = (XFB, CGP)
RHK = (KRS, TPX)
KPK = (PRP, MKG)
NKV = (BHD, DQJ)
JNK = (RXN, BQX)
JXJ = (JFK, CCS)
LDC = (JBF, PHQ)
QRS = (VPM, FDD)
XRL = (SQT, VGH)
VQN = (BRP, VCF)
NBP = (GKC, HKC)
FCH = (KLN, RQV)
BQT = (KKX, RNZ)
SVN = (JGN, FSL)
FPL = (SDB, VQV)
RMQ = (CCV, JST)
DRB = (MSM, VHX)
DDF = (GHC, PSX)
GLR = (LFR, THG)
DGL = (JGQ, DHD)
RFQ = (BXJ, SRQ)
XTG = (XBB, TQJ)
PCL = (DDK, GNC)
FVG = (JKL, CRC)
GXQ = (CBS, RJS)
SDR = (LFR, THG)
KBM = (PCV, DBP)
XPJ = (GCS, GJD)
XRG = (LNK, KQL)
FPQ = (TPG, MQQ)
MSM = (LQG, KRF)
LFR = (THX, GFC)
KQK = (FQH, FCH)
HPH = (HHJ, VKM)
DHC = (QGV, FNH)
PQQ = (KKX, KKX)
TNQ = (LXD, KNG)
QNB = (TLX, VLF)
VKX = (BJL, GQB)
DTM = (KRQ, CLV)
BHS = (LFH, TVV)
MCJ = (BFJ, FCS)
CGQ = (MRH, SBD)
FBM = (RXQ, CFR)
NLQ = (QSD, LFZ)
VSK = (DGR, DFT)
HJG = (TFV, XJL)
XFB = (NKP, FBF)
JGL = (RGS, KTD)
MHS = (BNM, KSK)
RMG = (QNB, MHL)
XSX = (XBG, GVD)
FMV = (LVV, CQR)
CRK = (TRN, KKG)
VQV = (BPB, RFL)
THN = (QVH, DVT)
GNT = (RGS, KTD)
DCH = (GJD, GCS)
KTD = (LSF, MJC)
BDC = (FDH, MSK)
PRQ = (JGL, GNT)
PSR = (DHF, FPL)
XBB = (FRR, GSC)
SFB = (HGX, DFS)
VTJ = (HFH, KXN)
KJV = (TKP, THL)
BFF = (PLM, DGC)
VBV = (XDK, LLS)
KMV = (XDS, VQT)
JPD = (BHL, QJF)
DGR = (MTT, JCG)
PGK = (VCX, NLQ)
BFJ = (FHX, QFR)
VSF = (VKX, CTP)
PFJ = (BRP, VCF)
XVN = (VCX, VCX)
JQG = (SKM, THM)
CXS = (CRC, JKL)
RFL = (NNT, DMH)
RBH = (KHM, PLR)
PNT = (JCQ, XSR)
XHK = (GJK, BLQ)
CFR = (FHC, CTD)
JPP = (JFD, FPB)
RRT = (VVM, NFB)
RPF = (TKG, KVK)
JTF = (FBT, DLL)
PSX = (PDS, JPD)
TCH = (TDN, FRB)
RHT = (VNR, NHB)
TQJ = (GSC, FRR)
MCK = (NJD, XDX)
NPH = (XQF, NSL)
LQQ = (LCM, PHH)
VSV = (SFT, MVL)
KRS = (TGR, TGR)
DRR = (JXT, TSF)
QRQ = (NTG, MTL)
PJB = (RMN, HLB)
VFC = (KPH, PKM)
FHC = (CJM, FTQ)
DRC = (RBC, THN)
TRB = (JHX, LSC)
GCS = (TRB, MDB)
RCG = (MFT, FXM)
HCB = (LHB, JGH)
BFN = (RMG, KJH)
TPG = (NGM, XHQ)
JCS = (VGS, NSN)
SGT = (LHX, MPF)
NXM = (VPH, KGV)
XNC = (LTX, PHJ)
DNT = (KLS, RNC)
JGN = (TNN, BXD)
QJX = (XPJ, DCH)
LQP = (FRK, NFS)
HCL = (GBS, PGB)
FDD = (XQJ, XTS)
XTS = (TJL, LGJ)
HLR = (TBR, FPG)
DLL = (VJV, MJN)
LFH = (VBM, MHT)
LMD = (VGG, RHK)
JKL = (CMQ, QCN)
DDP = (GTH, HKM)
VNL = (VVL, CFP)
SGB = (MKL, DVQ)
KBJ = (BDF, SXQ)
DVT = (NMB, LCB)
XQJ = (TJL, LGJ)
HLB = (XHH, XNC)
VPT = (BRF, JPP)
PDS = (QJF, BHL)
CGG = (PLS, SNM)
SDB = (RFL, BPB)
DVQ = (XSX, KXQ)
XQS = (BPF, XLV)
CDG = (XKV, HMT)
JCG = (CFK, RPR)
RBC = (DVT, QVH)
BJB = (MVC, KXL)
LFZ = (HTT, QTF)
FTQ = (RLM, LMQ)
TCT = (FPH, FCC)
QXL = (BPF, XLV)
MXX = (BHX, QNX)
LSR = (FFJ, DMT)
RTD = (KBS, GDV)
TXH = (QBQ, NSF)
CSB = (CBP, QDQ)
GBS = (BRN, GXP)
GMX = (LHX, MPF)
JQV = (GMX, SGT)
GML = (GLR, SDR)
GCG = (RHT, KTF)
RPR = (XTG, JGT)
NDG = (QFD, HTD)
KBK = (VFP, BSC)
FVB = (RFQ, LLH)
CGP = (NKP, FBF)
RXQ = (FHC, CTD)
KQD = (CJN, DRR)
QTF = (FVH, TRV)
QDQ = (FBM, SLV)
NMT = (JST, CCV)
BHC = (RJM, SVN)
GMR = (LNT, XFP)
MSK = (VQN, PFJ)
CBV = (CGB, PGV)
MHT = (GMC, RSH)
BRN = (KQK, FXV)
XXM = (JGL, GNT)
VLF = (VNN, RRV)
FDH = (VQN, PFJ)
NFD = (MGN, GLL)
THM = (PLL, VTJ)
MPF = (JVN, DFC)
BNG = (RNC, KLS)
LGJ = (QHV, XBR)
QTJ = (TVT, NBP)
KRQ = (MDF, RLN)
PCK = (CCS, JFK)
DQV = (FLD, CSB)
HDD = (FGX, XRG)
TFL = (DQV, CJQ)
BNM = (KMV, CVX)
MLC = (CFP, VVL)
SBD = (MKD, DKP)
PSK = (DBV, BSF)
FRB = (BBD, TPB)
RKL = (HVK, DRN)
HMZ = (DRR, CJN)
LJK = (LBN, DDG)
LSC = (MXX, VFX)
TDN = (TPB, BBD)
RNX = (FBT, DLL)
QGJ = (KTS, RBF)
RFB = (BCF, MHS)
VGN = (TJP, VSF)
HFH = (FPQ, PGF)
HXX = (QFD, HTD)
RJS = (PCK, JXJ)
TRQ = (GCG, GQF)
KXN = (FPQ, PGF)
FMS = (XJL, TFV)
NMB = (QRQ, DGD)
BPF = (VMX, GXQ)
HCX = (XSR, JCQ)
RJR = (BNG, DNT)
BQX = (GQC, VLX)
DHD = (RLC, GVS)
DQJ = (HJG, FMS)
QFD = (TNQ, HSF)
HMT = (HSG, MHM)
BHD = (FMS, HJG)
NDF = (PLK, RTX)
GMC = (PNT, HCX)
GQX = (CPB, VNP)
BXD = (VNL, MLC)
DTD = (XLK, BVR)
KQT = (MRH, SBD)
QJH = (QMD, KBJ)
NFJ = (MVL, SFT)
JMH = (FVB, BMP)
BVF = (SFB, KSS)
RBF = (JCD, NDT)
QBX = (KJV, LBX)
NTG = (DPX, CBV)
DRL = (XXM, PRQ)
QNX = (SHD, LXG)
PNN = (KQD, HMZ)
CCS = (TQQ, DDP)
QSD = (QTF, HTT)
BVN = (JNK, TRT)
HSF = (KNG, LXD)
BHL = (DSB, SGB)
VFX = (BHX, QNX)
JFH = (TCH, DCB)
DBV = (SDL, CDG)
TRT = (RXN, BQX)
VLC = (MHS, BCF)
BBM = (HCB, FMB)
THG = (THX, GFC)
XKV = (HSG, MHM)
DSB = (MKL, DVQ)
XSC = (HVK, DRN)
SKM = (VTJ, PLL)
QFR = (KXP, QNS)
BMP = (RFQ, LLH)
MLM = (KRQ, CLV)
XNH = (JJJ, DHC)
KPM = (RBC, THN)
FGX = (LNK, KQL)
TSF = (BDD, KFL)
LXG = (XCG, TRP)
TBR = (HFK, LMB)
JFK = (TQQ, DDP)
TQH = (KJG, MQD)
RKT = (FGX, XRG)
DJF = (DJJ, LNQ)
FPM = (LRR, HJP)
PCJ = (XDX, NJD)
HFK = (NQN, LQQ)
SHB = (RMG, KJH)
KPJ = (XVN, PGK)
XSH = (LNH, VPT)
SQX = (BVR, XLK)
KTB = (QRS, KPF)
RKK = (GLM, JQG)
HTT = (TRV, FVH)
SDL = (XKV, HMT)
HCK = (FCK, QBJ)
SJF = (JQV, JLB)
QMT = (FPG, TBR)
HGX = (QLS, XLB)
VKM = (QFF, NLD)
FNH = (KQV, RFD)
HPM = (TRQ, QJS)
PMS = (LHM, CJL)
JTK = (XPG, XPG)
VMN = (SJB, JCS)
LNT = (SHM, NKV)
KFL = (RCB, BVF)
ZZZ = (NBP, TVT)
QPX = (BFF, KNR)
HSG = (LBC, RCN)
SLV = (CFR, RXQ)
KJH = (MHL, QNB)
FCK = (DSS, DSS)
RLL = (GBS, PGB)
VKJ = (RFB, VLC)
VSJ = (CGQ, KQT)
XDX = (HPH, VFJ)
LCB = (DGD, QRQ)
PLL = (HFH, KXN)
DMH = (BSR, FQV)
PPQ = (XFP, LNT)
PGB = (BRN, GXP)
JMN = (DFT, DGR)
RVT = (KTL, SFV)
JCH = (SJB, JCS)
KKG = (QPX, MLL)
KNB = (CPB, VNP)
HKM = (VFC, BXC)
QBT = (CJL, LHM)
GJM = (PQQ, BQT)
RLN = (LDG, JJH)
RJM = (JGN, FSL)
LHL = (HSC, LBV)
CVX = (VQT, XDS)
LVV = (MGX, DGL)
NSN = (JBX, GKM)
MTL = (DPX, CBV)
LBN = (NDG, HXX)
KLG = (DBP, PCV)
DGD = (MTL, NTG)
LDG = (JTK, JTK)
HCR = (GMR, PPQ)
DMB = (SQT, VGH)
LGK = (DBV, BSF)
FLG = (FCK, FCK)
KXL = (TXH, LQB)
MQD = (JNF, LSR)
RNC = (SMQ, FPM)
QFF = (NTD, VCM)
QLS = (DTK, CSG)
JGH = (LJQ, NSJ)
FSL = (BXD, TNN)
KLC = (TBT, CVN)
BDF = (KBK, NDR)
QMD = (SXQ, BDF)
VQT = (VBL, XHK)
CSC = (NLG, FQP)
SJB = (VGS, NSN)
NFS = (DDR, LTK)
DRA = (CJN, DRR)
LBX = (THL, TKP)
DJJ = (PLF, PLF)
MJN = (TBX, DRB)
TJP = (VKX, CTP)
DDR = (RLL, HCL)
LQB = (QBQ, NSF)
BKV = (PSR, NKS)
NKP = (XCH, XNH)
VCX = (QSD, QSD)
FQV = (HKH, VRD)
VPH = (DDF, PLQ)
HVS = (VPH, KGV)
BHX = (LXG, SHD)
RQV = (PHB, FDQ)
NSL = (MCJ, DBM)
GVD = (JBT, HKN)
TRN = (QPX, MLL)
XCG = (CXS, FVG)
KBF = (XVR, TFT)
CTD = (CJM, FTQ)
PRH = (FVB, BMP)
TLR = (NSL, XQF)
BLS = (VVM, NFB)
VVL = (MRB, NTX)
QGV = (RFD, KQV)
SRK = (GLM, JQG)
VHX = (LQG, KRF)
NHB = (PNG, NQL)
LLK = (XDK, LLS)
GQD = (TSX, KBF)
LHV = (QRS, KPF)
VNR = (PNG, NQL)
LBP = (PCJ, MCK)
TNN = (MLC, VNL)
KNR = (PLM, DGC)
BMD = (SJF, GTJ)
FPG = (HFK, LMB)
XFP = (SHM, NKV)
RSN = (LFH, TVV)
FGN = (DVR, GLV)
JHX = (VFX, MXX)
DDG = (NDG, HXX)
NQS = (NFJ, VSV)
MKD = (DTM, MLM)
CQQ = (KTL, SFV)
DGK = (FMB, HCB)
NSJ = (NKK, DRL)
JTS = (GTF, KBP)
VDG = (MCK, PCJ)
MGN = (PVK, KLC)
LBC = (SRK, RKK)
CJQ = (FLD, CSB)
MKG = (MHB, QPK)
XVR = (PCL, QDH)
QBQ = (LRB, VSJ)
FXM = (LGK, PSK)
LMQ = (TLR, NPH)
PKM = (VBC, XXR)
VJV = (TBX, DRB)
CCV = (JFH, QNK)
DMT = (RHS, JNG)
XHQ = (PGD, TCT)
DFC = (VMN, JCH)
JJJ = (FNH, QGV)
JNG = (KBM, KLG)
THX = (RSN, BHS)
TKG = (CQQ, RVT)
HPN = (PDH, KPJ)
BGS = (PSP, CMD)
BLH = (QJX, SGJ)
PRP = (QPK, MHB)
PMV = (HDD, RKT)
TRV = (TFL, MDD)
CJL = (FMV, FJQ)
JCQ = (KXF, HGT)
GRS = (RBR, QNR)
SGJ = (DCH, XPJ)
RTX = (RJR, JJF)
AAA = (TVT, NBP)
XDK = (SPG, BMD)
FBF = (XCH, XNH)
LHM = (FMV, FJQ)
SQT = (FVT, MDT)
XPG = (JTF, RNX)
MGX = (JGQ, DHD)
PHH = (QBT, PMS)
VJL = (MKG, PRP)
DCB = (FRB, TDN)
PRM = (BHC, QJV)
FRR = (RPF, CLG)
PGF = (MQQ, TPG)
NQL = (MGL, SCP)
CSG = (RRT, BLS)
NMK = (PSR, NKS)
MRH = (MKD, DKP)
SFV = (HCH, FGN)
BDD = (BVF, RCB)
MDD = (CJQ, DQV)
TGR = (PQQ, PQQ)
MDT = (VBV, LLK)
XXR = (MLF, TCX)
DVR = (CQD, NQS)
SXQ = (NDR, KBK)
KBP = (QTJ, ZZZ)
VRD = (TJN, FGM)
VNP = (GQD, MBH)
KHM = (TMM, QGJ)
JCD = (KPK, VJL)
BXJ = (FVP, PMV)
DFT = (MTT, JCG)
JRL = (VPT, LNH)
HCH = (DVR, GLV)
FPB = (JXF, DNF)
NDR = (VFP, BSC)
MQQ = (NGM, XHQ)
XBM = (GLR, SDR)
KQL = (RVJ, VGN)
FPH = (CRK, FSD)
GDV = (TQH, VRC)
LCM = (PMS, QBT)
NTX = (HPM, PNJ)
FDQ = (NXM, HVS)
KTF = (VNR, NHB)
GTJ = (JQV, JLB)
XHH = (LTX, PHJ)
QVX = (KBS, GDV)
VGG = (KRS, TPX)
PFM = (GTF, GTF)
KSK = (KMV, CVX)
RVL = (QMD, KBJ)
KXF = (NFD, HBL)
VCM = (QVX, RTD)
MBH = (KBF, TSX)
LNK = (VGN, RVJ)
TVV = (MHT, VBM)
FXF = (MSK, FDH)
VKB = (NMK, BKV)
VGH = (MDT, FVT)
NLG = (LJK, MFN)
DSS = (KQD, KQD)
VRG = (PFM, PFM)
TQQ = (GTH, HKM)
RSH = (HCX, PNT)
TKP = (KJP, GGM)
VRC = (MQD, KJG)
HJP = (KGF, SRS)
PSP = (QRF, HFJ)
NKK = (XXM, PRQ)
JJF = (DNT, BNG)
PLF = (RBR, RBR)
NJD = (HPH, VFJ)
RRV = (KNB, GQX)
GLV = (CQD, NQS)
XBR = (DMB, XRL)
SPG = (SJF, GTJ)
DKX = (FXF, BDC)
FQH = (RQV, KLN)
QBJ = (DSS, PNN)
VVM = (MNG, CSC)
KXQ = (XBG, GVD)
CFK = (JGT, XTG)
CMA = (LQP, XBV)
FCS = (QFR, FHX)
FFJ = (JNG, RHS)
LMB = (NQN, LQQ)
TMM = (RBF, KTS)
JXH = (VRG, BRX)
FBT = (VJV, MJN)
QCN = (HPN, MKH)
XDS = (XHK, VBL)
QNK = (TCH, DCB)
MKL = (KXQ, XSX)
MLF = (SJL, JTQ)
MGL = (TMX, DKX)
MTT = (CFK, RPR)
KRF = (QMT, HLR)
BSR = (VRD, HKH)
TJL = (QHV, XBR)
PCV = (NMT, RMQ)
FVP = (RKT, HDD)
SHM = (DQJ, BHD)
PNG = (SCP, MGL)
PGD = (FCC, FPH)
QJS = (GCG, GQF)
CFP = (MRB, NTX)
QGS = (RTX, PLK)
SJL = (XSC, RKL)
JST = (JFH, QNK)
TBX = (VHX, MSM)
DDZ = (PHQ, JBF)
KXP = (XBM, GML)
HKC = (NDF, QGS)
DHF = (VQV, SDB)
JXT = (BDD, KFL)
LQG = (QMT, HLR)
LXD = (RBH, CKT)
LXM = (XPG, XKZ)
XLV = (GXQ, VMX)
GLL = (PVK, KLC)
TSX = (XVR, TFT)
QRF = (DJF, KJM)
KJG = (JNF, LSR)
GQB = (XSH, JRL)
GKR = (LMD, KVB)
GVS = (QJH, RVL)
VPM = (XQJ, XTS)
QNR = (LDC, DDZ)
PVK = (TBT, CVN)
JCX = (SNM, PLS)
HHJ = (QFF, NLD)
TLX = (VNN, RRV)
GTF = (QTJ, QTJ)
LNQ = (PLF, GRS)
VBL = (GJK, BLQ)
DGC = (DGK, BBM)
NDT = (VJL, KPK)
KBS = (VRC, TQH)
RVJ = (TJP, VSF)
RBR = (LDC, LDC)
PDH = (XVN, XVN)
JBF = (VSK, JMN)
BBD = (MQR, JXH)
FVT = (VBV, LLK)
VBC = (MLF, TCX)
XKZ = (RNX, JTF)
MNA = (JTF, RNX)
VFJ = (HHJ, VKM)
GLM = (SKM, THM)
JNF = (FFJ, DMT)
MNG = (FQP, NLG)
MVL = (PRM, KLH)
RHS = (KBM, KLG)
CRC = (CMQ, QCN)
BPB = (DMH, NNT)
NLD = (VCM, NTD)
XCH = (JJJ, DHC)
CKT = (PLR, KHM)
NNT = (BSR, FQV)
GQC = (XQS, QXL)
GKM = (QTH, KHG)
GJD = (TRB, MDB)
CGB = (VXJ, VCG)
SMQ = (HJP, LRR)
RNP = (BLH, KHP)
MMP = (NCM, XPK)
VLX = (XQS, QXL)
XJL = (BVN, KGN)
LRB = (CGQ, KQT)
NGM = (TCT, PGD)
TBT = (KTB, LHV)
JLB = (SGT, GMX)
HFJ = (DJF, KJM)
RCN = (RKK, SRK)
KJM = (DJJ, LNQ)
CVN = (KTB, LHV)
PHB = (NXM, HVS)
KJP = (HCR, QPM)
SHD = (XCG, TRP)
KKX = (LQP, XBV)
FHX = (KXP, QNS)
CLV = (MDF, RLN)
FXV = (FQH, FCH)
HTD = (TNQ, HSF)
CJM = (LMQ, RLM)
BSF = (CDG, SDL)
JVN = (VMN, JCH)
KDK = (XSG, LHL)
FGM = (PJB, NTQ)
MRB = (PNJ, HPM)
JTQ = (XSC, RKL)
CJN = (TSF, JXT)
RLC = (QJH, RVL)
XLK = (CBK, JBG)
KLN = (FDQ, PHB)
JJH = (JTK, LXM)
TVT = (GKC, HKC)
QHV = (DMB, XRL)
TCX = (SJL, JTQ)
JBX = (KHG, QTH)
CQD = (NFJ, VSV)
KPF = (VPM, FDD)
KHG = (HCF, RNP)
BSC = (QBX, JVB)
KVK = (CQQ, RVT)
CPB = (GQD, MBH)
LTK = (RLL, HCL)
HVK = (XMR, BJB)
TFT = (QDH, PCL)
MHB = (TDF, RCG)
SRQ = (PMV, FVP)
NJA = (QTF, HTT)
RMN = (XHH, XNC)
VCG = (VDG, LBP)
LSF = (JMH, PRH)
THL = (GGM, KJP)
PLK = (RJR, JJF)
DKP = (DTM, MLM)
NQN = (LCM, PHH)
KNG = (RBH, CKT)
GKC = (NDF, QGS)
BRF = (FPB, JFD)
HKH = (FGM, TJN)
KTL = (HCH, FGN)
HKN = (MMP, BFV)
JVB = (KJV, LBX)
QVH = (LCB, NMB)
HHF = (XQC, GSF)
VGS = (JBX, GKM)
BXC = (KPH, PKM)
DBM = (FCS, BFJ)
QPK = (TDF, RCG)
VXJ = (LBP, VDG)
GGM = (HCR, QPM)
LHB = (LJQ, NSJ)
LJQ = (NKK, DRL)
JXF = (FLG, HCK)
PHJ = (XFB, CGP)
MKH = (PDH, KPJ)
MFT = (PSK, LGK)
CBS = (PCK, JXJ)
FRK = (LTK, DDR)
CMQ = (HPN, MKH)
QJV = (RJM, SVN)
KHP = (SGJ, QJX)
CQR = (MGX, DGL)
FJQ = (CQR, LVV)
HCF = (KHP, BLH)
LFC = (LMD, KVB)
DPX = (CGB, PGV)
DFS = (XLB, QLS)
DDK = (GKR, LFC)
KLS = (FPM, SMQ)
JGQ = (RLC, GVS)
LBV = (HHF, STJ)
JGT = (TQJ, XBB)
QRN = (LHL, XSG)
RFD = (QRN, KDK)
HSC = (STJ, HHF)
LNH = (BRF, JPP)
FSD = (TRN, KKG)
NSF = (VSJ, LRB)
QJF = (DSB, SGB)
MQR = (VRG, BRX)
XMR = (MVC, KXL)
VNN = (KNB, GQX)
NCM = (XLP, VKJ)
KTS = (JCD, NDT)
MDF = (LDG, LDG)
PLS = (BGS, VVD)
TPX = (TGR, GJM)
GJK = (SQX, DTD)
CTP = (BJL, GQB)
GXP = (FXV, KQK)
DRN = (BJB, XMR)
QDH = (GNC, DDK)
FMB = (JGH, LHB)
STJ = (GSF, XQC)
DNF = (FLG, HCK)
XSR = (KXF, HGT)
RNZ = (XBV, LQP)
RGS = (MJC, LSF)
GFC = (BHS, RSN)
GTH = (BXC, VFC)
PLM = (DGK, BBM)
KSS = (HGX, DFS)
SCP = (TMX, DKX)
RXN = (GQC, VLX)
PLR = (TMM, QGJ)
QTH = (HCF, RNP)
BRP = (CGG, JCX)
BVR = (JBG, CBK)
DTK = (BLS, RRT)
TPB = (MQR, JXH)
MJC = (PRH, JMH)
GSF = (KPM, DRC)
RVA = (JBF, PHQ)
BLQ = (DTD, SQX)
CBK = (BFN, SHB)
VBM = (GMC, RSH)
NFB = (CSC, MNG)
NKS = (FPL, DHF)
CLG = (KVK, TKG)
KLH = (QJV, BHC)
XQF = (DBM, MCJ)
BCF = (KSK, BNM)
XLP = (RFB, VLC)
MVC = (TXH, LQB)
LLS = (BMD, SPG)
TJN = (PJB, NTQ)
FQP = (LJK, MFN)
PHQ = (VSK, JMN)
XLB = (DTK, CSG)
MHM = (RCN, LBC)
LLH = (SRQ, BXJ)
FVH = (MDD, TFL)
RLM = (TLR, NPH)
MLL = (BFF, KNR)
CBP = (FBM, SLV)
MHL = (TLX, VLF)
MDB = (LSC, JHX)
KQV = (QRN, KDK)
SNM = (BGS, VVD)
KGV = (PLQ, DDF)
FCC = (FSD, CRK)
JFD = (JXF, DNF)
NTD = (RTD, QVX)
TDF = (FXM, MFT)
TMX = (BDC, FXF)
MFN = (LBN, DDG)
KGN = (TRT, JNK)
XPK = (VKJ, XLP)
JBT = (MMP, BFV)
PLQ = (PSX, GHC)
TRP = (CXS, FVG)
QPM = (GMR, PPQ)
VMX = (CBS, RJS)
BFV = (XPK, NCM)
LRR = (KGF, SRS)
KGF = (MRL, VKB)
PGV = (VCG, VXJ)
LHX = (JVN, DFC)
KPH = (VBC, XXR)
GQF = (RHT, KTF)
XQC = (KPM, DRC)
TFV = (BVN, KGN)
VVD = (CMD, PSP)
HGT = (NFD, HBL)
HBL = (MGN, GLL)
XBG = (JBT, HKN)
XSG = (LBV, HSC)
SRS = (MRL, VKB)
XBV = (NFS, FRK)
PNJ = (TRQ, QJS)
BRX = (PFM, JTS)
GHC = (JPD, PDS)
RCB = (KSS, SFB)
QNS = (GML, XBM)
GNC = (LFC, GKR)
MRL = (BKV, NMK)
KVB = (VGG, RHK)
VCF = (JCX, CGG)
VFP = (QBX, JVB)
FLD = (QDQ, CBP)
JBG = (SHB, BFN)
BJL = (JRL, XSH)
DBP = (RMQ, NMT)
SFT = (PRM, KLH)
CMD = (HFJ, QRF)
+58
View File
@@ -0,0 +1,58 @@
INPUT_FILE = "input.text"
INSTRUCTIONS = []
PATH = {}
def read_file() -> None:
with open(INPUT_FILE, 'r') as file:
lines = file.readlines()
line_index = 0
for line in lines:
# This in our instruction line
if line_index == 0:
for char in line:
if char == 'L':
INSTRUCTIONS.append(0)
elif char == 'R':
INSTRUCTIONS.append(1)
elif line_index != 1:
source: str = line.split('=')[0].strip()
dest = line.split('=')[1].strip()[1:-1].split(', ')
PATH[source] = dest
line_index += 1
def main() -> None:
read_file()
# print(PATH)
pos = 'AAA'
steps = 1
while True:
done = False
for instruction in INSTRUCTIONS:
pos = PATH[pos][instruction]
if pos == 'ZZZ':
done = True
break
steps += 1
if done:
break
print(f'Steps taken: {steps}')
if __name__ == "__main__":
main()
+5
View File
@@ -0,0 +1,5 @@
LLR
AAA = (BBB, BBB)
BBB = (AAA, ZZZ)
ZZZ = (ZZZ, ZZZ)
+788
View File
@@ -0,0 +1,788 @@
LRRLLRRLLRRRLRLRRLRLRLRRLRLRLRLLLRRRLRLRRLLRLRRRLRRRLRLRLRRRLLRRLLRLRLRRRLRLLRRRLRLLRLRRRLRLRRRLRRRLLRRRLLRRRLRRLRRRLLRRRLRRLRRLRRLLRLRRLRRLRRRLRLRLRLRLRLRRRLLRLRRLRLRRLLRRLLRLRRLRRRLRLRLRLRRRLRRLRRLRRLRRLRRLRLRRRLRRRLRRRLRLRLLRRLRRRLRRLRLRRRLRRLRRRLRRLLRRLLLRRRR
GSC = (CLG, RPF)
NTQ = (RMN, HLB)
LTX = (XFB, CGP)
RHK = (KRS, TPX)
KPK = (PRP, MKG)
NKV = (BHD, DQJ)
JNK = (RXN, BQX)
JXJ = (JFK, CCS)
LDC = (JBF, PHQ)
QRS = (VPM, FDD)
XRL = (SQT, VGH)
VQN = (BRP, VCF)
NBP = (GKC, HKC)
FCH = (KLN, RQV)
BQT = (KKX, RNZ)
SVN = (JGN, FSL)
FPL = (SDB, VQV)
RMQ = (CCV, JST)
DRB = (MSM, VHX)
DDF = (GHC, PSX)
GLR = (LFR, THG)
DGL = (JGQ, DHD)
RFQ = (BXJ, SRQ)
XTG = (XBB, TQJ)
PCL = (DDK, GNC)
FVG = (JKL, CRC)
GXQ = (CBS, RJS)
SDR = (LFR, THG)
KBM = (PCV, DBP)
XPJ = (GCS, GJD)
XRG = (LNK, KQL)
FPQ = (TPG, MQQ)
MSM = (LQG, KRF)
LFR = (THX, GFC)
KQK = (FQH, FCH)
HPH = (HHJ, VKM)
DHC = (QGV, FNH)
PQQ = (KKX, KKX)
TNQ = (LXD, KNG)
QNB = (TLX, VLF)
VKX = (BJL, GQB)
DTM = (KRQ, CLV)
BHS = (LFH, TVV)
MCJ = (BFJ, FCS)
CGQ = (MRH, SBD)
FBM = (RXQ, CFR)
NLQ = (QSD, LFZ)
VSK = (DGR, DFT)
HJG = (TFV, XJL)
XFB = (NKP, FBF)
JGL = (RGS, KTD)
MHS = (BNM, KSK)
RMG = (QNB, MHL)
XSX = (XBG, GVD)
FMV = (LVV, CQR)
CRK = (TRN, KKG)
VQV = (BPB, RFL)
THN = (QVH, DVT)
GNT = (RGS, KTD)
DCH = (GJD, GCS)
KTD = (LSF, MJC)
BDC = (FDH, MSK)
PRQ = (JGL, GNT)
PSR = (DHF, FPL)
XBB = (FRR, GSC)
SFB = (HGX, DFS)
VTJ = (HFH, KXN)
KJV = (TKP, THL)
BFF = (PLM, DGC)
VBV = (XDK, LLS)
KMV = (XDS, VQT)
JPD = (BHL, QJF)
DGR = (MTT, JCG)
PGK = (VCX, NLQ)
BFJ = (FHX, QFR)
VSF = (VKX, CTP)
PFJ = (BRP, VCF)
XVN = (VCX, VCX)
JQG = (SKM, THM)
CXS = (CRC, JKL)
RFL = (NNT, DMH)
RBH = (KHM, PLR)
PNT = (JCQ, XSR)
XHK = (GJK, BLQ)
CFR = (FHC, CTD)
JPP = (JFD, FPB)
RRT = (VVM, NFB)
RPF = (TKG, KVK)
JTF = (FBT, DLL)
PSX = (PDS, JPD)
TCH = (TDN, FRB)
RHT = (VNR, NHB)
TQJ = (GSC, FRR)
MCK = (NJD, XDX)
NPH = (XQF, NSL)
LQQ = (LCM, PHH)
VSV = (SFT, MVL)
KRS = (TGR, TGR)
DRR = (JXT, TSF)
QRQ = (NTG, MTL)
PJB = (RMN, HLB)
VFC = (KPH, PKM)
FHC = (CJM, FTQ)
DRC = (RBC, THN)
TRB = (JHX, LSC)
GCS = (TRB, MDB)
RCG = (MFT, FXM)
HCB = (LHB, JGH)
BFN = (RMG, KJH)
TPG = (NGM, XHQ)
JCS = (VGS, NSN)
SGT = (LHX, MPF)
NXM = (VPH, KGV)
XNC = (LTX, PHJ)
DNT = (KLS, RNC)
JGN = (TNN, BXD)
QJX = (XPJ, DCH)
LQP = (FRK, NFS)
HCL = (GBS, PGB)
FDD = (XQJ, XTS)
XTS = (TJL, LGJ)
HLR = (TBR, FPG)
DLL = (VJV, MJN)
LFH = (VBM, MHT)
LMD = (VGG, RHK)
JKL = (CMQ, QCN)
DDP = (GTH, HKM)
VNL = (VVL, CFP)
SGB = (MKL, DVQ)
KBJ = (BDF, SXQ)
DVT = (NMB, LCB)
XQJ = (TJL, LGJ)
HLB = (XHH, XNC)
VPT = (BRF, JPP)
PDS = (QJF, BHL)
CGG = (PLS, SNM)
SDB = (RFL, BPB)
DVQ = (XSX, KXQ)
XQS = (BPF, XLV)
CDG = (XKV, HMT)
JCG = (CFK, RPR)
RBC = (DVT, QVH)
BJB = (MVC, KXL)
LFZ = (HTT, QTF)
FTQ = (RLM, LMQ)
TCT = (FPH, FCC)
QXL = (BPF, XLV)
MXX = (BHX, QNX)
LSR = (FFJ, DMT)
RTD = (KBS, GDV)
TXH = (QBQ, NSF)
CSB = (CBP, QDQ)
GBS = (BRN, GXP)
GMX = (LHX, MPF)
JQV = (GMX, SGT)
GML = (GLR, SDR)
GCG = (RHT, KTF)
RPR = (XTG, JGT)
NDG = (QFD, HTD)
KBK = (VFP, BSC)
FVB = (RFQ, LLH)
CGP = (NKP, FBF)
RXQ = (FHC, CTD)
KQD = (CJN, DRR)
QTF = (FVH, TRV)
QDQ = (FBM, SLV)
NMT = (JST, CCV)
BHC = (RJM, SVN)
GMR = (LNT, XFP)
MSK = (VQN, PFJ)
CBV = (CGB, PGV)
MHT = (GMC, RSH)
BRN = (KQK, FXV)
XXM = (JGL, GNT)
VLF = (VNN, RRV)
FDH = (VQN, PFJ)
NFD = (MGN, GLL)
THM = (PLL, VTJ)
MPF = (JVN, DFC)
BNG = (RNC, KLS)
LGJ = (QHV, XBR)
QTJ = (TVT, NBP)
KRQ = (MDF, RLN)
PCK = (CCS, JFK)
DQV = (FLD, CSB)
HDD = (FGX, XRG)
TFL = (DQV, CJQ)
BNM = (KMV, CVX)
MLC = (CFP, VVL)
SBD = (MKD, DKP)
PSK = (DBV, BSF)
FRB = (BBD, TPB)
RKL = (HVK, DRN)
HMZ = (DRR, CJN)
LJK = (LBN, DDG)
LSC = (MXX, VFX)
TDN = (TPB, BBD)
RNX = (FBT, DLL)
QGJ = (KTS, RBF)
RFB = (BCF, MHS)
VGN = (TJP, VSF)
HFH = (FPQ, PGF)
HXX = (QFD, HTD)
RJS = (PCK, JXJ)
TRQ = (GCG, GQF)
KXN = (FPQ, PGF)
FMS = (XJL, TFV)
NMB = (QRQ, DGD)
BPF = (VMX, GXQ)
HCX = (XSR, JCQ)
RJR = (BNG, DNT)
BQX = (GQC, VLX)
DHD = (RLC, GVS)
DQJ = (HJG, FMS)
QFD = (TNQ, HSF)
HMT = (HSG, MHM)
BHD = (FMS, HJG)
NDF = (PLK, RTX)
GMC = (PNT, HCX)
GQX = (CPB, VNP)
BXD = (VNL, MLC)
DTD = (XLK, BVR)
KQT = (MRH, SBD)
QJH = (QMD, KBJ)
NFJ = (MVL, SFT)
JMH = (FVB, BMP)
BVF = (SFB, KSS)
RBF = (JCD, NDT)
QBX = (KJV, LBX)
NTG = (DPX, CBV)
DRL = (XXM, PRQ)
QNX = (SHD, LXG)
PNN = (KQD, HMZ)
CCS = (TQQ, DDP)
QSD = (QTF, HTT)
BVN = (JNK, TRT)
HSF = (KNG, LXD)
BHL = (DSB, SGB)
VFX = (BHX, QNX)
JFH = (TCH, DCB)
DBV = (SDL, CDG)
TRT = (RXN, BQX)
VLC = (MHS, BCF)
BBM = (HCB, FMB)
THG = (THX, GFC)
XKV = (HSG, MHM)
DSB = (MKL, DVQ)
XSC = (HVK, DRN)
SKM = (VTJ, PLL)
QFR = (KXP, QNS)
BMP = (RFQ, LLH)
MLM = (KRQ, CLV)
XNH = (JJJ, DHC)
KPM = (RBC, THN)
FGX = (LNK, KQL)
TSF = (BDD, KFL)
LXG = (XCG, TRP)
TBR = (HFK, LMB)
JFK = (TQQ, DDP)
TQH = (KJG, MQD)
RKT = (FGX, XRG)
DJF = (DJJ, LNQ)
FPM = (LRR, HJP)
PCJ = (XDX, NJD)
HFK = (NQN, LQQ)
SHB = (RMG, KJH)
KPJ = (XVN, PGK)
XSH = (LNH, VPT)
SQX = (BVR, XLK)
KTB = (QRS, KPF)
RKK = (GLM, JQG)
HTT = (TRV, FVH)
SDL = (XKV, HMT)
HCK = (FCK, QBJ)
SJF = (JQV, JLB)
QMT = (FPG, TBR)
HGX = (QLS, XLB)
VKM = (QFF, NLD)
FNH = (KQV, RFD)
HPM = (TRQ, QJS)
PMS = (LHM, CJL)
JTK = (XPG, XPG)
VMN = (SJB, JCS)
LNT = (SHM, NKV)
KFL = (RCB, BVF)
ZZZ = (NBP, TVT)
QPX = (BFF, KNR)
HSG = (LBC, RCN)
SLV = (CFR, RXQ)
KJH = (MHL, QNB)
FCK = (DSS, DSS)
RLL = (GBS, PGB)
VKJ = (RFB, VLC)
VSJ = (CGQ, KQT)
XDX = (HPH, VFJ)
LCB = (DGD, QRQ)
PLL = (HFH, KXN)
DMH = (BSR, FQV)
PPQ = (XFP, LNT)
PGB = (BRN, GXP)
JMN = (DFT, DGR)
RVT = (KTL, SFV)
JCH = (SJB, JCS)
KKG = (QPX, MLL)
KNB = (CPB, VNP)
HKM = (VFC, BXC)
QBT = (CJL, LHM)
GJM = (PQQ, BQT)
RLN = (LDG, JJH)
RJM = (JGN, FSL)
LHL = (HSC, LBV)
CVX = (VQT, XDS)
LVV = (MGX, DGL)
NSN = (JBX, GKM)
MTL = (DPX, CBV)
LBN = (NDG, HXX)
KLG = (DBP, PCV)
DGD = (MTL, NTG)
LDG = (JTK, JTK)
HCR = (GMR, PPQ)
DMB = (SQT, VGH)
LGK = (DBV, BSF)
FLG = (FCK, FCK)
KXL = (TXH, LQB)
MQD = (JNF, LSR)
RNC = (SMQ, FPM)
QFF = (NTD, VCM)
QLS = (DTK, CSG)
JGH = (LJQ, NSJ)
FSL = (BXD, TNN)
KLC = (TBT, CVN)
BDF = (KBK, NDR)
QMD = (SXQ, BDF)
VQT = (VBL, XHK)
CSC = (NLG, FQP)
SJB = (VGS, NSN)
NFS = (DDR, LTK)
DRA = (CJN, DRR)
LBX = (THL, TKP)
DJJ = (PLF, PLF)
MJN = (TBX, DRB)
TJP = (VKX, CTP)
DDR = (RLL, HCL)
LQB = (QBQ, NSF)
BKV = (PSR, NKS)
NKP = (XCH, XNH)
VCX = (QSD, QSD)
FQV = (HKH, VRD)
VPH = (DDF, PLQ)
HVS = (VPH, KGV)
BHX = (LXG, SHD)
RQV = (PHB, FDQ)
NSL = (MCJ, DBM)
GVD = (JBT, HKN)
TRN = (QPX, MLL)
XCG = (CXS, FVG)
KBF = (XVR, TFT)
CTD = (CJM, FTQ)
PRH = (FVB, BMP)
TLR = (NSL, XQF)
BLS = (VVM, NFB)
VVL = (MRB, NTX)
QGV = (RFD, KQV)
SRK = (GLM, JQG)
VHX = (LQG, KRF)
NHB = (PNG, NQL)
LLK = (XDK, LLS)
GQD = (TSX, KBF)
LHV = (QRS, KPF)
VNR = (PNG, NQL)
LBP = (PCJ, MCK)
TNN = (MLC, VNL)
KNR = (PLM, DGC)
BMD = (SJF, GTJ)
FPG = (HFK, LMB)
XFP = (SHM, NKV)
RSN = (LFH, TVV)
FGN = (DVR, GLV)
JHX = (VFX, MXX)
DDG = (NDG, HXX)
NQS = (NFJ, VSV)
MKD = (DTM, MLM)
CQQ = (KTL, SFV)
DGK = (FMB, HCB)
NSJ = (NKK, DRL)
JTS = (GTF, KBP)
VDG = (MCK, PCJ)
MGN = (PVK, KLC)
LBC = (SRK, RKK)
CJQ = (FLD, CSB)
MKG = (MHB, QPK)
XVR = (PCL, QDH)
QBQ = (LRB, VSJ)
FXM = (LGK, PSK)
LMQ = (TLR, NPH)
PKM = (VBC, XXR)
VJV = (TBX, DRB)
CCV = (JFH, QNK)
DMT = (RHS, JNG)
XHQ = (PGD, TCT)
DFC = (VMN, JCH)
JJJ = (FNH, QGV)
JNG = (KBM, KLG)
THX = (RSN, BHS)
TKG = (CQQ, RVT)
HPN = (PDH, KPJ)
BGS = (PSP, CMD)
BLH = (QJX, SGJ)
PRP = (QPK, MHB)
PMV = (HDD, RKT)
TRV = (TFL, MDD)
CJL = (FMV, FJQ)
JCQ = (KXF, HGT)
GRS = (RBR, QNR)
SGJ = (DCH, XPJ)
RTX = (RJR, JJF)
AAA = (TVT, NBP)
XDK = (SPG, BMD)
FBF = (XCH, XNH)
LHM = (FMV, FJQ)
SQT = (FVT, MDT)
XPG = (JTF, RNX)
MGX = (JGQ, DHD)
PHH = (QBT, PMS)
VJL = (MKG, PRP)
DCB = (FRB, TDN)
PRM = (BHC, QJV)
FRR = (RPF, CLG)
PGF = (MQQ, TPG)
NQL = (MGL, SCP)
CSG = (RRT, BLS)
NMK = (PSR, NKS)
MRH = (MKD, DKP)
SFV = (HCH, FGN)
BDD = (BVF, RCB)
MDD = (CJQ, DQV)
TGR = (PQQ, PQQ)
MDT = (VBV, LLK)
XXR = (MLF, TCX)
DVR = (CQD, NQS)
SXQ = (NDR, KBK)
KBP = (QTJ, ZZZ)
VRD = (TJN, FGM)
VNP = (GQD, MBH)
KHM = (TMM, QGJ)
JCD = (KPK, VJL)
BXJ = (FVP, PMV)
DFT = (MTT, JCG)
JRL = (VPT, LNH)
HCH = (DVR, GLV)
FPB = (JXF, DNF)
NDR = (VFP, BSC)
MQQ = (NGM, XHQ)
XBM = (GLR, SDR)
KQL = (RVJ, VGN)
FPH = (CRK, FSD)
GDV = (TQH, VRC)
LCM = (PMS, QBT)
NTX = (HPM, PNJ)
FDQ = (NXM, HVS)
KTF = (VNR, NHB)
GTJ = (JQV, JLB)
XHH = (LTX, PHJ)
QVX = (KBS, GDV)
VGG = (KRS, TPX)
PFM = (GTF, GTF)
KSK = (KMV, CVX)
RVL = (QMD, KBJ)
KXF = (NFD, HBL)
VCM = (QVX, RTD)
MBH = (KBF, TSX)
LNK = (VGN, RVJ)
TVV = (MHT, VBM)
FXF = (MSK, FDH)
VKB = (NMK, BKV)
VGH = (MDT, FVT)
NLG = (LJK, MFN)
DSS = (KQD, KQD)
VRG = (PFM, PFM)
TQQ = (GTH, HKM)
RSH = (HCX, PNT)
TKP = (KJP, GGM)
VRC = (MQD, KJG)
HJP = (KGF, SRS)
PSP = (QRF, HFJ)
NKK = (XXM, PRQ)
JJF = (DNT, BNG)
PLF = (RBR, RBR)
NJD = (HPH, VFJ)
RRV = (KNB, GQX)
GLV = (CQD, NQS)
XBR = (DMB, XRL)
SPG = (SJF, GTJ)
DKX = (FXF, BDC)
FQH = (RQV, KLN)
QBJ = (DSS, PNN)
VVM = (MNG, CSC)
KXQ = (XBG, GVD)
CFK = (JGT, XTG)
CMA = (LQP, XBV)
FCS = (QFR, FHX)
FFJ = (JNG, RHS)
LMB = (NQN, LQQ)
TMM = (RBF, KTS)
JXH = (VRG, BRX)
FBT = (VJV, MJN)
QCN = (HPN, MKH)
XDS = (XHK, VBL)
QNK = (TCH, DCB)
MKL = (KXQ, XSX)
MLF = (SJL, JTQ)
MGL = (TMX, DKX)
MTT = (CFK, RPR)
KRF = (QMT, HLR)
BSR = (VRD, HKH)
TJL = (QHV, XBR)
PCV = (NMT, RMQ)
FVP = (RKT, HDD)
SHM = (DQJ, BHD)
PNG = (SCP, MGL)
PGD = (FCC, FPH)
QJS = (GCG, GQF)
CFP = (MRB, NTX)
QGS = (RTX, PLK)
SJL = (XSC, RKL)
JST = (JFH, QNK)
TBX = (VHX, MSM)
DDZ = (PHQ, JBF)
KXP = (XBM, GML)
HKC = (NDF, QGS)
DHF = (VQV, SDB)
JXT = (BDD, KFL)
LQG = (QMT, HLR)
LXD = (RBH, CKT)
LXM = (XPG, XKZ)
XLV = (GXQ, VMX)
GLL = (PVK, KLC)
TSX = (XVR, TFT)
QRF = (DJF, KJM)
KJG = (JNF, LSR)
GQB = (XSH, JRL)
GKR = (LMD, KVB)
GVS = (QJH, RVL)
VPM = (XQJ, XTS)
QNR = (LDC, DDZ)
PVK = (TBT, CVN)
JCX = (SNM, PLS)
HHJ = (QFF, NLD)
TLX = (VNN, RRV)
GTF = (QTJ, QTJ)
LNQ = (PLF, GRS)
VBL = (GJK, BLQ)
DGC = (DGK, BBM)
NDT = (VJL, KPK)
KBS = (VRC, TQH)
RVJ = (TJP, VSF)
RBR = (LDC, LDC)
PDH = (XVN, XVN)
JBF = (VSK, JMN)
BBD = (MQR, JXH)
FVT = (VBV, LLK)
VBC = (MLF, TCX)
XKZ = (RNX, JTF)
MNA = (JTF, RNX)
VFJ = (HHJ, VKM)
GLM = (SKM, THM)
JNF = (FFJ, DMT)
MNG = (FQP, NLG)
MVL = (PRM, KLH)
RHS = (KBM, KLG)
CRC = (CMQ, QCN)
BPB = (DMH, NNT)
NLD = (VCM, NTD)
XCH = (JJJ, DHC)
CKT = (PLR, KHM)
NNT = (BSR, FQV)
GQC = (XQS, QXL)
GKM = (QTH, KHG)
GJD = (TRB, MDB)
CGB = (VXJ, VCG)
SMQ = (HJP, LRR)
RNP = (BLH, KHP)
MMP = (NCM, XPK)
VLX = (XQS, QXL)
XJL = (BVN, KGN)
LRB = (CGQ, KQT)
NGM = (TCT, PGD)
TBT = (KTB, LHV)
JLB = (SGT, GMX)
HFJ = (DJF, KJM)
RCN = (RKK, SRK)
KJM = (DJJ, LNQ)
CVN = (KTB, LHV)
PHB = (NXM, HVS)
KJP = (HCR, QPM)
SHD = (XCG, TRP)
KKX = (LQP, XBV)
FHX = (KXP, QNS)
CLV = (MDF, RLN)
FXV = (FQH, FCH)
HTD = (TNQ, HSF)
CJM = (LMQ, RLM)
BSF = (CDG, SDL)
JVN = (VMN, JCH)
KDK = (XSG, LHL)
FGM = (PJB, NTQ)
MRB = (PNJ, HPM)
JTQ = (XSC, RKL)
CJN = (TSF, JXT)
RLC = (QJH, RVL)
XLK = (CBK, JBG)
KLN = (FDQ, PHB)
JJH = (JTK, LXM)
TVT = (GKC, HKC)
QHV = (DMB, XRL)
TCX = (SJL, JTQ)
JBX = (KHG, QTH)
CQD = (NFJ, VSV)
KPF = (VPM, FDD)
KHG = (HCF, RNP)
BSC = (QBX, JVB)
KVK = (CQQ, RVT)
CPB = (GQD, MBH)
LTK = (RLL, HCL)
HVK = (XMR, BJB)
TFT = (QDH, PCL)
MHB = (TDF, RCG)
SRQ = (PMV, FVP)
NJA = (QTF, HTT)
RMN = (XHH, XNC)
VCG = (VDG, LBP)
LSF = (JMH, PRH)
THL = (GGM, KJP)
PLK = (RJR, JJF)
DKP = (DTM, MLM)
NQN = (LCM, PHH)
KNG = (RBH, CKT)
GKC = (NDF, QGS)
BRF = (FPB, JFD)
HKH = (FGM, TJN)
KTL = (HCH, FGN)
HKN = (MMP, BFV)
JVB = (KJV, LBX)
QVH = (LCB, NMB)
HHF = (XQC, GSF)
VGS = (JBX, GKM)
BXC = (KPH, PKM)
DBM = (FCS, BFJ)
QPK = (TDF, RCG)
VXJ = (LBP, VDG)
GGM = (HCR, QPM)
LHB = (LJQ, NSJ)
LJQ = (NKK, DRL)
JXF = (FLG, HCK)
PHJ = (XFB, CGP)
MKH = (PDH, KPJ)
MFT = (PSK, LGK)
CBS = (PCK, JXJ)
FRK = (LTK, DDR)
CMQ = (HPN, MKH)
QJV = (RJM, SVN)
KHP = (SGJ, QJX)
CQR = (MGX, DGL)
FJQ = (CQR, LVV)
HCF = (KHP, BLH)
LFC = (LMD, KVB)
DPX = (CGB, PGV)
DFS = (XLB, QLS)
DDK = (GKR, LFC)
KLS = (FPM, SMQ)
JGQ = (RLC, GVS)
LBV = (HHF, STJ)
JGT = (TQJ, XBB)
QRN = (LHL, XSG)
RFD = (QRN, KDK)
HSC = (STJ, HHF)
LNH = (BRF, JPP)
FSD = (TRN, KKG)
NSF = (VSJ, LRB)
QJF = (DSB, SGB)
MQR = (VRG, BRX)
XMR = (MVC, KXL)
VNN = (KNB, GQX)
NCM = (XLP, VKJ)
KTS = (JCD, NDT)
MDF = (LDG, LDG)
PLS = (BGS, VVD)
TPX = (TGR, GJM)
GJK = (SQX, DTD)
CTP = (BJL, GQB)
GXP = (FXV, KQK)
DRN = (BJB, XMR)
QDH = (GNC, DDK)
FMB = (JGH, LHB)
STJ = (GSF, XQC)
DNF = (FLG, HCK)
XSR = (KXF, HGT)
RNZ = (XBV, LQP)
RGS = (MJC, LSF)
GFC = (BHS, RSN)
GTH = (BXC, VFC)
PLM = (DGK, BBM)
KSS = (HGX, DFS)
SCP = (TMX, DKX)
RXN = (GQC, VLX)
PLR = (TMM, QGJ)
QTH = (HCF, RNP)
BRP = (CGG, JCX)
BVR = (JBG, CBK)
DTK = (BLS, RRT)
TPB = (MQR, JXH)
MJC = (PRH, JMH)
GSF = (KPM, DRC)
RVA = (JBF, PHQ)
BLQ = (DTD, SQX)
CBK = (BFN, SHB)
VBM = (GMC, RSH)
NFB = (CSC, MNG)
NKS = (FPL, DHF)
CLG = (KVK, TKG)
KLH = (QJV, BHC)
XQF = (DBM, MCJ)
BCF = (KSK, BNM)
XLP = (RFB, VLC)
MVC = (TXH, LQB)
LLS = (BMD, SPG)
TJN = (PJB, NTQ)
FQP = (LJK, MFN)
PHQ = (VSK, JMN)
XLB = (DTK, CSG)
MHM = (RCN, LBC)
LLH = (SRQ, BXJ)
FVH = (MDD, TFL)
RLM = (TLR, NPH)
MLL = (BFF, KNR)
CBP = (FBM, SLV)
MHL = (TLX, VLF)
MDB = (LSC, JHX)
KQV = (QRN, KDK)
SNM = (BGS, VVD)
KGV = (PLQ, DDF)
FCC = (FSD, CRK)
JFD = (JXF, DNF)
NTD = (RTD, QVX)
TDF = (FXM, MFT)
TMX = (BDC, FXF)
MFN = (LBN, DDG)
KGN = (TRT, JNK)
XPK = (VKJ, XLP)
JBT = (MMP, BFV)
PLQ = (PSX, GHC)
TRP = (CXS, FVG)
QPM = (GMR, PPQ)
VMX = (CBS, RJS)
BFV = (XPK, NCM)
LRR = (KGF, SRS)
KGF = (MRL, VKB)
PGV = (VCG, VXJ)
LHX = (JVN, DFC)
KPH = (VBC, XXR)
GQF = (RHT, KTF)
XQC = (KPM, DRC)
TFV = (BVN, KGN)
VVD = (CMD, PSP)
HGT = (NFD, HBL)
HBL = (MGN, GLL)
XBG = (JBT, HKN)
XSG = (LBV, HSC)
SRS = (MRL, VKB)
XBV = (NFS, FRK)
PNJ = (TRQ, QJS)
BRX = (PFM, JTS)
GHC = (JPD, PDS)
RCB = (KSS, SFB)
QNS = (GML, XBM)
GNC = (LFC, GKR)
MRL = (BKV, NMK)
KVB = (VGG, RHK)
VCF = (JCX, CGG)
VFP = (QBX, JVB)
FLD = (QDQ, CBP)
JBG = (SHB, BFN)
BJL = (JRL, XSH)
DBP = (RMQ, NMT)
SFT = (PRM, KLH)
CMD = (HFJ, QRF)
+71
View File
@@ -0,0 +1,71 @@
INPUT_FILE = "input.text"
INSTRUCTIONS = []
PATH = {}
import math
def read_file() -> None:
with open(INPUT_FILE, 'r') as file:
lines = file.readlines()
line_index = 0
for line in lines:
# This in our instruction line
if line_index == 0:
for char in line:
if char == 'L':
INSTRUCTIONS.append(0)
elif char == 'R':
INSTRUCTIONS.append(1)
elif line_index != 1:
source: str = line.split('=')[0].strip()
dest = line.split('=')[1].strip()[1:-1].split(', ')
PATH[source] = dest
line_index += 1
def main() -> None:
read_file()
# print(PATH)
# Find all starting positions (because we're a ghost in the 4th dimension)
initial_positions = []
for pos in PATH:
if pos[2] == 'A':
initial_positions.append(pos)
# Find how many steps for each ghost to get to Z
steps_to_finish = []
for pos in initial_positions:
steps = 0
done = False
while True:
for instruction in INSTRUCTIONS:
pos = PATH[pos][instruction]
if pos[2] == 'Z':
done = True
break
steps += 1
if done:
steps_to_finish.append(steps + 1)
break
print(f'Steps to finish: {math.lcm(*steps_to_finish)}')
if __name__ == "__main__":
main()
+10
View File
@@ -0,0 +1,10 @@
LR
11A = (11B, XXX)
11B = (XXX, 11Z)
11Z = (11B, XXX)
22A = (22B, XXX)
22B = (22C, 22C)
22C = (22Z, 22Z)
22Z = (22B, 22B)
XXX = (XXX, XXX)
+200
View File
@@ -0,0 +1,200 @@
14 26 47 96 208 446 930 1893 3779 7407 14241 26832 49537 89675 159354 278299 478132 808704 1347259 2211424 3577270
11 35 81 158 275 441 665 956 1323 1775 2321 2970 3731 4613 5625 6776 8075 9531 11153 12950 14931
18 27 40 59 81 91 50 -122 -568 -1521 -3336 -6527 -11809 -20145 -32798 -51388 -77954 -115021 -165672 -233625 -323315
7 10 19 34 55 82 115 154 199 250 307 370 439 514 595 682 775 874 979 1090 1207
11 32 70 137 253 449 772 1300 2190 3797 6927 13359 26967 56231 119897 259515 566513 1239226 2700380 5834113 12454133
5 20 64 149 285 480 740 1069 1469 1940 2480 3085 3749 4464 5220 6005 6805 7604 8384 9125 9805
7 28 64 127 256 545 1192 2577 5377 10726 20428 37231 65170 109987 179636 284881 439995 663568 979432 1417711 2016004
-2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22
18 45 90 155 249 397 664 1212 2414 5058 10686 22128 44309 85428 158632 284335 493362 831131 1363122 2181921 3416169
10 14 9 5 21 93 304 858 2242 5556 13150 29813 64971 136807 280216 562651 1116306 2203618 4348835 8596161 17001841
21 41 85 180 374 742 1405 2583 4714 8699 16393 31574 61822 122106 241587 476607 935964 1831346 3580258 7018773 13841427
5 2 6 30 95 234 491 915 1554 2457 3703 5523 8713 15826 34179 82647 205703 500400 1165216 2584176 5465751
24 36 60 106 187 320 521 806 1235 2077 4242 10247 26211 65806 157892 361020 790614 1669390 3420164 6835692 13387759
27 36 43 64 142 360 868 1954 4203 8802 18064 36259 70860 134374 247150 442223 774975 1344404 2341497 4158158 7625686
3 26 65 124 213 352 591 1063 2089 4356 9191 18956 37591 71334 129649 226395 381271 621574 984309 1518692 2289089
14 11 19 50 128 315 763 1807 4114 8903 18251 35500 65780 116663 198963 327697 523222 812563 1230947 1823558 2647528
7 25 55 96 147 207 275 350 431 517 607 700 795 891 987 1082 1175 1265 1351 1432 1507
4 20 52 102 172 264 380 522 692 892 1124 1390 1692 2032 2412 2834 3300 3812 4372 4982 5644
12 12 26 79 205 448 871 1577 2742 4665 7868 13347 23205 42121 80471 160487 327720 671410 1359366 2695903 5215645
0 -5 -19 -42 -56 -11 190 707 1780 3747 7063 12320 20268 31837 48160 70597 100760 140539 192129 258058 341216
-2 -8 -4 20 70 145 240 357 523 807 1311 2072 2738 1758 -5346 -29249 -92392 -237526 -539350 -1117924 -2149630
-5 -10 -11 8 77 246 598 1278 2554 4945 9495 18359 36020 71695 143811 287798 568801 1101338 2079037 3821332 6855171
4 3 21 80 211 461 917 1759 3353 6408 12262 23439 44729 85167 161385 302817 559054 1009141 1771607 3012302 4944411
22 34 50 86 170 359 784 1749 3934 8783 19198 40724 83538 165840 319898 603491 1122806 2079904 3872226 7299442 13984490
23 30 48 88 163 300 570 1157 2507 5632 12710 28259 61453 130759 273345 564318 1156141 2359172 4805190 9776416 19859989
-8 -12 -15 -17 -18 -18 -17 -15 -12 -8 -3 3 10 18 27 37 48 60 73 87 102
12 14 23 45 102 247 580 1269 2578 4894 8728 14643 23033 33638 44646 51286 44214 9398 -64873 -158619 -131618
11 17 25 37 50 57 63 140 567 2132 6711 18277 44524 99329 206393 404850 759118 1379591 2472170 4462351 8302561
20 30 52 106 228 481 966 1833 3292 5624 9192 14452 21964 32403 46570 65403 89988 121570 161564 211566 273364
19 35 62 100 148 202 264 372 654 1399 3129 6654 13105 23978 41297 68130 109885 177091 290752 491872 857410
26 53 92 147 230 362 569 880 1356 2228 4324 10158 26391 68939 172950 411497 929690 2005975 4161296 8352141 16309216
14 28 53 109 222 414 702 1129 1859 3378 6861 14805 32108 67918 138842 274682 529326 1003298 1894435 3617291 7086724
0 10 48 129 283 568 1090 2035 3720 6689 11927 21355 38926 72920 140574 277328 555542 1123404 2287945 4694976 9719897
6 12 20 37 75 160 354 801 1812 4008 8543 17429 33981 63405 113625 196746 332414 556348 941370 1645501 3013355
17 23 29 35 41 47 53 59 65 71 77 83 89 95 101 107 113 119 125 131 137
13 27 50 83 129 193 298 531 1133 2647 6138 13499 27857 54093 99490 174523 293805 477203 751138 1150083 1718273
28 43 58 73 88 103 118 133 148 163 178 193 208 223 238 253 268 283 298 313 328
11 9 4 -6 -32 -95 -222 -437 -733 -973 -600 2069 11356 37240 101235 247946 568267 1246553 2656208 5549892 11427768
25 46 78 121 175 240 316 403 501 610 730 861 1003 1156 1320 1495 1681 1878 2086 2305 2535
17 28 57 125 276 592 1206 2313 4189 7247 12190 20366 34490 59973 107187 195096 356793 647598 1156487 2021731 3451720
24 45 84 157 299 582 1135 2162 3951 6861 11277 17571 26268 39002 61652 112657 242756 579095 1420548 3439575 8102595
21 38 57 74 91 122 210 467 1155 2840 6683 15001 32365 67738 138540 278114 548921 1064986 2028733 3789476 6933575
8 19 49 99 166 247 345 489 795 1610 3796 9226 21579 47536 98494 192930 359562 641469 1101347 1828093 2944924
13 32 68 127 228 417 781 1462 2671 4702 7946 12905 20206 30615 45051 64600 90529 124300 167584 222275 290504
13 23 35 45 59 104 245 624 1547 3653 8200 17500 35563 69181 130275 241965 454837 889032 1837669 4008880 9069103
13 18 24 33 50 93 221 590 1552 3829 8843 19391 41067 85240 175168 358274 730288 1481876 2987401 5972131 11825257
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
8 28 71 152 288 498 803 1226 1792 2528 3463 4628 6056 7782 9843 12278 15128 18436 22247 26608 31568
2 -3 -2 20 86 241 589 1370 3115 6958 15253 32753 68782 141126 282900 554641 1065785 2013448 3754005 6938327 12772443
8 8 -1 -29 -91 -197 -333 -435 -345 303 2402 8180 23048 59530 145226 338410 757762 1637618 3428041 6971393 13805807
25 40 71 134 245 417 659 984 1442 2209 3797 7534 16663 38852 91816 215490 497315 1122518 2469919 5287326 11001021
24 36 54 96 192 399 831 1704 3396 6522 12024 21276 36204 59421 94377 145524 218496 320304 459546 646632 894024
-5 -3 0 5 27 110 355 969 2345 5199 10832 21665 42319 81683 156661 298762 565880 1064795 1998131 3769177 7221916
20 39 64 88 98 79 29 -13 69 503 1659 4090 8641 16751 31174 57485 106922 201351 381434 719436 1338532
9 26 43 56 69 113 292 872 2425 6031 13527 27773 52881 94324 158808 253751 386169 560720 776603 1022950 1272285
-2 -6 -8 10 86 287 734 1656 3486 7012 13596 25474 46150 80897 137378 226400 362814 566574 863968 1289034 1885174
-6 -7 3 42 139 350 790 1683 3432 6711 12581 22632 39153 65332 105488 165337 252294 375813 547767 782870 1099143
10 12 25 75 201 455 898 1591 2587 3943 5792 8557 13497 24070 49367 112747 273115 675713 1669042 4064338 9691456
11 11 22 47 90 164 314 668 1529 3521 7802 16357 32384 60786 108782 186650 308615 493895 767918 1163723 1723558
12 12 22 61 149 303 533 838 1202 1590 1944 2179 2179 1793 831 -940 -3800 -8080 -14166 -22503 -33599
6 29 65 123 230 439 837 1553 2766 4713 7697 12095 18366 27059 38821 54405 74678 100629 133377 174179 224438
-5 2 13 22 19 -10 -82 -207 -352 -353 260 2569 8758 22849 51755 106730 205305 373808 650575 1089968 1767325
25 43 75 135 246 440 764 1306 2262 4070 7648 14810 29044 57125 112717 224571 454763 937541 1958001 4103569 8542006
20 27 29 18 -21 -116 -301 -571 -753 -215 2708 11746 34424 84806 187656 384517 742318 1365239 2410695 4110442 6797961
28 56 113 214 387 685 1205 2128 3805 6925 12813 23938 44815 83763 156604 294617 561270 1085954 2128813 4199674 8267127
3 11 19 27 35 43 51 59 67 75 83 91 99 107 115 123 131 139 147 155 163
16 22 25 25 22 16 7 -5 -20 -38 -59 -83 -110 -140 -173 -209 -248 -290 -335 -383 -434
17 46 92 156 243 380 643 1200 2393 4915 10199 21248 44360 92691 193674 404589 845141 1764532 3675990 7618200 15646565
5 23 62 139 281 543 1047 2052 4068 8043 15704 30263 57977 111583 217564 430738 862051 1729007 3443254 6756899 12998645
5 6 13 33 83 196 431 902 1858 3872 8237 17722 37904 79344 160881 314223 589739 1062794 1838981 3055015 4869649
21 39 72 145 299 592 1106 1971 3418 5879 10177 17908 32225 59414 111963 214427 414671 805855 1570414 3069167 6021443
12 22 39 81 189 449 1030 2249 4676 9302 17822 33142 60321 108356 193645 346944 627879 1156029 2178028 4211058 8343188
2 9 41 110 239 484 980 2034 4304 9141 19249 39957 81621 164010 324008 628617 1196110 2229297 4066273 7255760 12666283
11 20 50 118 251 485 866 1458 2363 3758 5954 9482 15211 24503 39410 62918 99243 154184 235538 353582 521627
7 -2 -16 -38 -68 -102 -139 -199 -356 -796 -1911 -4410 -9318 -17446 -27227 -28206 16213 211334 830958 2541314 6883432
25 34 44 63 109 217 445 873 1582 2600 3823 4993 6005 8235 18431 58333 186163 541390 1433202 3508147 8056737
22 31 55 107 200 354 617 1108 2089 4072 7966 15268 28301 50501 86754 143783 230584 358909 543793 804121 1163230
-4 1 20 61 138 273 495 836 1324 1973 2770 3659 4522 5157 5253 4362 1868 -3047 -11440 -24647 -44326
26 51 98 174 298 523 971 1896 3796 7611 15084 29440 56668 107887 203553 380634 704358 1286739 2314822 4092474 7100598
28 52 98 193 377 697 1196 1897 2782 3766 4666 5165 4771 2771 -1820 -10315 -24416 -46280 -78590 -124631 -188371
3 11 24 61 165 425 1023 2315 4948 10006 19169 34862 60368 99882 158494 242110 357353 511533 712838 970979 1298623
5 15 53 147 346 734 1449 2700 4766 7957 12530 18600 26207 36006 51812 88055 189285 477498 1260375 3266770 8137126
4 7 13 23 52 140 362 836 1741 3392 6491 12809 26807 59168 134039 303207 672818 1452161 3040389 6177303 12200838
-8 -3 22 78 175 320 517 781 1199 2112 4564 11295 28799 71422 169312 383553 834506 1753964 3579140 7117715 13828691
25 33 33 19 -10 -46 -75 -91 -116 -205 -381 -359 1302 9515 38559 126226 365970 976291 2443528 5803537 13177521
26 41 56 71 86 101 116 131 146 161 176 191 206 221 236 251 266 281 296 311 326
0 4 10 24 63 170 440 1058 2350 4848 9370 17116 29781 49686 79928 124550 188732 279004 403482 572128 797035
4 3 6 14 22 25 43 170 654 2033 5393 12885 28748 61258 126333 254163 501624 976195 1883076 3618592 6953490
22 33 42 43 44 97 343 1086 2929 7033 15611 32876 66900 133364 263271 518834 1025692 2036469 4052068 8045173 15858136
18 30 39 49 73 146 364 977 2576 6439 15166 33887 72656 151295 309176 624662 1252945 2498224 4949126 9729671 18960358
10 26 62 127 223 344 474 591 705 997 2198 6470 19248 52808 132800 309727 678524 1411248 2810806 5398157 10052261
9 24 48 88 157 282 528 1047 2177 4658 10117 22122 48348 104795 223662 467634 955421 1907256 3726322 7145624 13494603
2 1 10 48 139 312 601 1045 1688 2579 3772 5326 7305 9778 12819 16507 20926 26165 32318 39484 47767
14 26 53 104 199 384 750 1457 2783 5252 9944 19154 37646 74842 148395 289719 552188 1022870 1838831 3209228 5444609
17 16 25 67 174 387 756 1340 2207 3434 5107 7321 10180 13797 18294 23802 30461 38420 47837 58879 71722
4 6 24 75 184 389 759 1450 2843 5837 12411 26626 56327 115965 231261 446985 840062 1541700 2774406 4912701 8580026
9 26 64 127 219 343 497 667 817 876 722 163 -1085 -3423 -7397 -13729 -23351 -37442 -57468 -85225 -122885
18 47 94 168 291 509 904 1620 2941 5492 10671 21464 43866 89277 178551 348989 666692 1248617 2301796 4191988 7561173
25 47 95 183 325 535 827 1215 1713 2335 3095 4007 5085 6343 7795 9455 11337 13455 15823 18455 21365
9 22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269
16 26 40 58 80 106 136 170 208 250 296 346 400 458 520 586 656 730 808 890 976
14 18 23 30 40 54 73 98 130 170 219 278 348 430 525 634 758 898 1055 1230 1424
22 47 87 152 259 441 761 1333 2355 4160 7307 12792 22603 41153 78748 159440 337800 732977 1594851 3427508 7211535
26 46 78 143 272 515 964 1789 3288 5964 10671 18936 33722 61281 115612 228819 474022 1013362 2193352 4725041 10009284
23 47 81 125 179 243 317 401 495 599 713 837 971 1115 1269 1433 1607 1791 1985 2189 2403
19 44 86 153 270 505 1009 2065 4147 8013 14899 26953 48180 86441 157631 294374 563979 1104929 2199278 4412142 8851878
27 42 71 143 303 613 1153 2035 3460 5871 10286 18936 36386 71384 139766 268846 503841 917024 1620465 2783413 4655593
24 41 73 128 210 319 451 598 748 885 989 1036 998 843 535 34 -704 -1727 -3087 -4840 -7046
-7 -15 -19 -17 -12 2 68 308 979 2543 5751 11741 22150 39240 66038 106490 165629 249757 366641 525723 738344
7 12 36 98 227 462 852 1456 2343 3592 5292 7542 10451 14138 18732 24372 31207 39396 49108 60522 73827
11 25 48 89 153 236 320 368 319 83 -464 -1485 -3187 -5826 -9712 -15214 -22765 -32867 -46096 -63107 -84639
8 14 30 79 187 374 638 927 1094 828 -455 -3799 -11053 -25524 -53195 -104919 -200212 -373550 -684440 -1232997 -2183333
9 28 53 84 121 164 213 268 329 396 469 548 633 724 821 924 1033 1148 1269 1396 1529
15 29 58 121 257 543 1139 2382 4963 10251 20886 41850 82327 158757 299574 552284 994087 1748873 3017478 5136931 8701877
-7 -1 11 31 77 197 481 1072 2181 4129 7487 13484 25034 49038 101091 214393 455493 950327 1924467 3760853 7075295
-5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25
-7 -8 -10 0 61 264 808 2102 4937 10772 22217 43862 83713 155717 284373 513702 925934 1682313 3113525 5917809 11583494
2 0 -7 -16 -12 38 191 534 1190 2324 4149 6932 11000 16746 24635 35210 49098 67016 89777 118296 153596
13 21 32 55 115 259 562 1133 2121 3721 6180 9803 14959 22087 31702 44401 60869 81885 108328 141183 181547
9 18 48 119 260 518 978 1794 3234 5749 10092 17559 30554 54009 98935 190916 389291 828028 1798244 3906903 8369100
8 22 51 103 183 293 432 596 778 968 1153 1317 1441 1503 1478 1338 1052 586 -97 -1037 -2277
6 16 50 134 314 659 1265 2265 3848 6287 9984 15580 24280 38746 65263 118441 230546 468730 965038 1966202 3912990
16 39 76 132 223 384 673 1171 1978 3205 4962 7342 10401 14134 18447 23125 27796 31891 34600 34824 31123
10 17 28 46 90 208 501 1174 2638 5695 11846 23770 46030 86070 155575 272274 462274 763021 1226992 1926230 2957842
20 36 67 120 206 358 672 1395 3112 7132 16249 36172 78103 163236 330419 648963 1239736 2309436 4205547 7503272 13141120
16 33 53 67 61 16 -78 -183 -129 558 3009 9739 26128 63370 144182 313540 658314 1342251 2666789 5174343 9819879
13 17 21 40 106 272 616 1245 2299 3955 6431 9990 14944 21658 30554 42115 56889 75493 98617 127028 161574
10 20 41 94 213 464 978 2003 3981 7668 14348 26259 47469 85632 155317 283877 520928 952044 1715507 3016640 5125441
-4 -6 -2 16 72 221 564 1263 2556 4772 8346 13834 21928 33471 49472 71121 99804 137118 184886 245172 320296
0 4 13 33 74 157 326 671 1375 2805 5674 11308 22059 41912 77341 138476 240650 406402 668019 1070707 1676488
16 34 66 125 241 471 903 1663 2947 5109 8845 15534 27854 50938 94712 179032 345723 687730 1419893 3047749 6758676
6 28 60 100 153 244 445 932 2108 4860 11071 24608 53201 111996 230261 464071 920475 1804042 3507549 6790264 13129978
7 29 68 130 237 445 877 1780 3613 7175 13792 25618 46221 81943 145280 263148 496108 980618 2017113 4245291 8979258
9 11 15 16 20 72 300 982 2645 6215 13280 26652 51702 99534 194211 388433 796263 1659636 3481287 7287877 15148046
-1 11 34 73 133 216 318 441 648 1204 2865 7406 18542 43561 96420 204128 420762 859094 1761789 3658468 7702212
12 34 72 130 208 309 449 678 1131 2146 4523 10069 22697 50543 109858 231849 474214 939874 1806386 3370764 6115982
19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99
3 6 16 37 73 128 206 311 447 618 828 1081 1381 1732 2138 2603 3131 3726 4392 5133 5953
4 3 15 53 130 259 453 725 1088 1555 2139 2853 3710 4723 5905 7269 8828 10595 12583 14805 17274
19 38 64 107 192 361 683 1285 2434 4725 9470 19464 40478 84190 173982 356414 723833 1458723 2920749 5818959 11557206
-4 -9 -15 -24 -29 -2 119 461 1296 3215 7455 16452 34707 70066 135529 251717 450140 777423 1300661 2114088 3347259
24 41 63 89 123 187 352 805 1986 4859 11425 25635 54903 112442 220659 415917 755333 1327550 2273056 3828714 6431712
10 14 25 52 112 230 439 780 1302 2062 3125 4564 6460 8902 11987 15820 20514 26190 32977 41012 50440
5 9 30 88 223 518 1132 2343 4601 8591 15306 26130 42931 68164 104984 157369 230253 329669 462902 638652 867207
-4 8 35 77 134 206 293 395 512 644 791 953 1130 1322 1529 1751 1988 2240 2507 2789 3086
12 15 32 80 197 451 940 1782 3097 4986 7515 10715 14612 19304 25105 32779 43890 61297 89826 137154 214943
8 27 57 116 236 463 857 1492 2456 3851 5793 8412 11852 16271 21841 28748 37192 47387 59561 73956 90828
17 39 70 123 232 465 948 1910 3761 7214 13472 24547 43889 77697 137546 245226 440843 795256 1428293 2536897 4448110
6 25 49 81 138 258 514 1045 2123 4286 8581 16999 33314 64915 127152 253782 521352 1103663 2388049 5213473 11340118
15 22 48 108 222 431 826 1607 3209 6554 13507 27623 55262 107123 200271 361049 630542 1077985 1836685 3197221 5833573
9 10 13 14 11 14 57 214 641 1713 4411 11251 28247 68675 159767 353925 746617 1503812 2902641 5389948 9664531
19 30 45 73 127 228 408 724 1318 2589 5582 12746 29268 65253 139091 282431 547269 1015752 1813403 3126583 5225125
16 20 29 55 129 311 712 1553 3307 7003 14827 31254 65116 133287 267071 522905 999563 1864490 3391876 6014067 10385116
2 -7 -23 -41 -38 37 273 807 1834 3617 6497 10903 17362 26509 39097 56007 78258 107017 143609 189527 246442
15 22 29 41 69 142 334 816 1954 4492 9890 20944 42922 85648 167321 321469 609457 1142602 2120483 3895851 7082139
-1 -10 -21 -18 40 232 698 1683 3612 7213 13728 25306 45799 82489 150000 279284 538074 1076412 2225283 4704589 10050857
-4 -10 -18 -28 -35 -18 87 447 1444 3852 9073 19389 38127 69546 118134 186844 273596 365122 426928 387786 116745
1 13 37 84 190 444 1033 2304 4840 9544 17725 31197 52476 85390 137021 223308 383639 715667 1452493 3123430 6871382
-4 -2 10 35 76 136 218 325 460 626 826 1063 1340 1660 2026 2441 2908 3430 4010 4651 5356
11 7 -1 -12 -25 -39 -53 -66 -77 -85 -89 -88 -81 -67 -45 -14 27 79 143 220 311
16 24 27 30 51 126 327 799 1815 3834 7516 13592 22403 32809 40023 31750 -18103 -158498 -471154 -1071166 -2065238
4 21 58 122 227 408 749 1434 2836 5683 11399 22831 45762 91910 184594 369052 730792 1427817 2746864 5201140 9699217
16 33 63 118 209 342 516 733 1051 1749 3734 9417 24442 60908 143137 317692 670346 1354185 2635169 4964488 9091191
11 20 38 69 119 197 312 472 701 1108 2076 4697 11669 29001 69050 155648 332375 675404 1312794 2452645 4423163
10 14 18 32 96 301 813 1907 4040 8034 15525 29998 59020 118782 242925 499187 1020334 2061362 4105208 8057644 15603992
7 20 41 70 104 142 207 402 1035 2880 7693 19179 44724 98427 206472 417101 820287 1588368 3061397 5924796 11570032
4 16 46 109 232 472 956 1952 3994 8110 16239 31970 61792 117108 217337 394505 699808 1212716 2053276 3398363 5502720
26 39 56 82 121 184 315 656 1594 4068 10170 24277 55162 119964 251726 513673 1025774 2012673 3886936 7387644 13801107
3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17
1 6 25 73 167 341 680 1377 2814 5665 11015 20479 36279 61179 98065 148758 211323 274636 308233 244417 -51845
7 29 77 175 369 743 1445 2726 4995 8893 15389 25901 42445 67815 105797 161420 241247 353709 509485 721931 1007561
22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269 282
6 1 -4 -9 -14 -19 -24 -29 -34 -39 -44 -49 -54 -59 -64 -69 -74 -79 -84 -89 -94
11 36 79 151 269 457 759 1277 2247 4166 7983 15367 29065 53363 94663 162189 268835 432168 675599 1029735 1533925
8 4 -8 -27 -34 26 266 885 2220 4879 10095 20601 42610 89951 192129 409116 857116 1751451 3475128 6684512 12466550
21 48 95 172 291 470 745 1193 1979 3471 6526 13143 27827 60277 130556 279024 585537 1206562 2446161 4889006 9643099
16 25 43 93 225 531 1171 2431 4846 9450 18274 35317 68393 132584 256690 495465 953348 1831239 3518957 6776005 13077649
17 32 50 83 153 296 571 1074 1957 3452 5900 9785 15773 24756 37901 56704 83049 119272 168230 233375 318833
15 41 92 173 294 480 788 1338 2379 4446 8722 17800 37143 77674 160140 322316 631027 1202867 2241168 4103331 7423512
10 28 70 157 328 649 1220 2177 3692 5989 9418 14662 23194 38152 65860 118292 216854 397946 720862 1278691 2212996
9 22 54 108 197 357 667 1290 2559 5148 10391 20847 41279 80390 154106 292254 552762 1052003 2028105 3968007 7851354
-9 1 20 46 95 223 555 1321 2899 5865 11050 19604 33067 53447 83305 125847 185023 265633 373440 515290 699239
9 26 71 162 317 548 866 1325 2149 4001 8463 18793 40994 85147 166798 307943 536900 886355 1389742 2079103 2994882
28 41 59 93 169 339 690 1356 2547 4618 8210 14504 25638 45346 79887 139341 239358 403455 665965 1075751 1700807
-2 9 47 139 329 683 1301 2348 4137 7328 13358 25311 49614 99285 200148 402908 807231 1611069 3213546 6430795 12946438
19 43 90 174 320 568 972 1594 2493 3709 5242 7026 8898 10562 11548 11166 8455 2127 -9494 -28538 -57660
12 12 13 26 66 155 333 677 1328 2526 4653 8284 14246 23685 38141 59631 90740 134720 195597 278286 388714
8 31 65 110 166 233 311 400 500 611 733 866 1010 1165 1331 1508 1696 1895 2105 2326 2558
10 27 69 153 308 595 1155 2299 4654 9379 18465 35133 64344 113435 192895 317295 506386 786379 1191421 1765281 2563260
8 28 59 101 154 218 293 379 476 584 703 833 974 1126 1289 1463 1648 1844 2051 2269 2498
5 22 59 130 264 522 1029 2034 4008 7798 14892 27949 51974 96999 184112 358605 717667 1466714 3030153 6262196 12835776
21 25 31 54 123 285 609 1190 2153 3657 5899 9118 13599 19677 27741 38238 51677 68633 89751 115750 147427
12 13 20 45 102 210 414 844 1841 4201 9636 21638 47071 99020 201708 398665 765810 1431701 2607932 4633523 8038172
24 38 52 66 80 94 108 122 136 150 164 178 192 206 220 234 248 262 276 290 304
23 34 41 44 43 38 29 16 -1 -22 -47 -76 -109 -146 -187 -232 -281 -334 -391 -452 -517
-10 -2 34 116 266 512 899 1528 2651 4869 9519 19415 40283 83642 172850 356227 735942 1531350 3215650 6804080 14446002
6 18 37 58 86 150 335 844 2108 4981 11097 23545 48168 96068 188401 365462 703738 1347664 2568293 4870656 9187810
4 5 25 75 166 320 596 1144 2313 4873 10491 22771 49495 107288 230943 491377 1029170 2115773 4263265 8418391 16301188
1 -8 -10 15 110 361 933 2132 4500 8944 16898 30544 53235 90606 153713 267462 491595 969324 2033158 4422897 9713628
18 33 59 97 148 213 293 389 502 633 783 953 1144 1357 1593 1853 2138 2449 2787 3153 3548
+49
View File
@@ -0,0 +1,49 @@
INPUT_FILE = "input.text"
def extrapolate_value(line: str) -> int:
initial_values: list[int] = [int(v) for v in line.split(' ')]
values = [initial_values]
# Loop until last thing is all 0, 0, 0...
while len(values[-1]) != values[-1].count(0):
new_values: list[int] = []
current_row: list[int] = values[-1]
for value_index in range(1, len(current_row)):
new_values.append(current_row[value_index] - current_row[value_index - 1])
values.append(new_values)
# Now we can extrapolate our new values, starting from the bottom
for row_index in reversed(range(0, len(values) - 2)): # -1 because we know the last row is all 0's
current_row: list[int] = values[row_index]
row_bellow: list[int] = values[row_index + 1]
values[row_index].append(current_row[-1] + row_bellow[-1])
return values[0][-1] # Return last value of the first row
def main():
with open(INPUT_FILE, 'r') as file:
lines = file.readlines()
sum_of_values = 0
for line in lines:
extrapolated_history_value: int = extrapolate_value(line)
sum_of_values += extrapolated_history_value
print(f'Sum of extrapolated values: {sum_of_values}')
if __name__ == "__main__":
main()
+3
View File
@@ -0,0 +1,3 @@
0 3 6 9 12 15
1 3 6 10 15 21
10 13 16 21 30 45
+200
View File
@@ -0,0 +1,200 @@
14 26 47 96 208 446 930 1893 3779 7407 14241 26832 49537 89675 159354 278299 478132 808704 1347259 2211424 3577270
11 35 81 158 275 441 665 956 1323 1775 2321 2970 3731 4613 5625 6776 8075 9531 11153 12950 14931
18 27 40 59 81 91 50 -122 -568 -1521 -3336 -6527 -11809 -20145 -32798 -51388 -77954 -115021 -165672 -233625 -323315
7 10 19 34 55 82 115 154 199 250 307 370 439 514 595 682 775 874 979 1090 1207
11 32 70 137 253 449 772 1300 2190 3797 6927 13359 26967 56231 119897 259515 566513 1239226 2700380 5834113 12454133
5 20 64 149 285 480 740 1069 1469 1940 2480 3085 3749 4464 5220 6005 6805 7604 8384 9125 9805
7 28 64 127 256 545 1192 2577 5377 10726 20428 37231 65170 109987 179636 284881 439995 663568 979432 1417711 2016004
-2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22
18 45 90 155 249 397 664 1212 2414 5058 10686 22128 44309 85428 158632 284335 493362 831131 1363122 2181921 3416169
10 14 9 5 21 93 304 858 2242 5556 13150 29813 64971 136807 280216 562651 1116306 2203618 4348835 8596161 17001841
21 41 85 180 374 742 1405 2583 4714 8699 16393 31574 61822 122106 241587 476607 935964 1831346 3580258 7018773 13841427
5 2 6 30 95 234 491 915 1554 2457 3703 5523 8713 15826 34179 82647 205703 500400 1165216 2584176 5465751
24 36 60 106 187 320 521 806 1235 2077 4242 10247 26211 65806 157892 361020 790614 1669390 3420164 6835692 13387759
27 36 43 64 142 360 868 1954 4203 8802 18064 36259 70860 134374 247150 442223 774975 1344404 2341497 4158158 7625686
3 26 65 124 213 352 591 1063 2089 4356 9191 18956 37591 71334 129649 226395 381271 621574 984309 1518692 2289089
14 11 19 50 128 315 763 1807 4114 8903 18251 35500 65780 116663 198963 327697 523222 812563 1230947 1823558 2647528
7 25 55 96 147 207 275 350 431 517 607 700 795 891 987 1082 1175 1265 1351 1432 1507
4 20 52 102 172 264 380 522 692 892 1124 1390 1692 2032 2412 2834 3300 3812 4372 4982 5644
12 12 26 79 205 448 871 1577 2742 4665 7868 13347 23205 42121 80471 160487 327720 671410 1359366 2695903 5215645
0 -5 -19 -42 -56 -11 190 707 1780 3747 7063 12320 20268 31837 48160 70597 100760 140539 192129 258058 341216
-2 -8 -4 20 70 145 240 357 523 807 1311 2072 2738 1758 -5346 -29249 -92392 -237526 -539350 -1117924 -2149630
-5 -10 -11 8 77 246 598 1278 2554 4945 9495 18359 36020 71695 143811 287798 568801 1101338 2079037 3821332 6855171
4 3 21 80 211 461 917 1759 3353 6408 12262 23439 44729 85167 161385 302817 559054 1009141 1771607 3012302 4944411
22 34 50 86 170 359 784 1749 3934 8783 19198 40724 83538 165840 319898 603491 1122806 2079904 3872226 7299442 13984490
23 30 48 88 163 300 570 1157 2507 5632 12710 28259 61453 130759 273345 564318 1156141 2359172 4805190 9776416 19859989
-8 -12 -15 -17 -18 -18 -17 -15 -12 -8 -3 3 10 18 27 37 48 60 73 87 102
12 14 23 45 102 247 580 1269 2578 4894 8728 14643 23033 33638 44646 51286 44214 9398 -64873 -158619 -131618
11 17 25 37 50 57 63 140 567 2132 6711 18277 44524 99329 206393 404850 759118 1379591 2472170 4462351 8302561
20 30 52 106 228 481 966 1833 3292 5624 9192 14452 21964 32403 46570 65403 89988 121570 161564 211566 273364
19 35 62 100 148 202 264 372 654 1399 3129 6654 13105 23978 41297 68130 109885 177091 290752 491872 857410
26 53 92 147 230 362 569 880 1356 2228 4324 10158 26391 68939 172950 411497 929690 2005975 4161296 8352141 16309216
14 28 53 109 222 414 702 1129 1859 3378 6861 14805 32108 67918 138842 274682 529326 1003298 1894435 3617291 7086724
0 10 48 129 283 568 1090 2035 3720 6689 11927 21355 38926 72920 140574 277328 555542 1123404 2287945 4694976 9719897
6 12 20 37 75 160 354 801 1812 4008 8543 17429 33981 63405 113625 196746 332414 556348 941370 1645501 3013355
17 23 29 35 41 47 53 59 65 71 77 83 89 95 101 107 113 119 125 131 137
13 27 50 83 129 193 298 531 1133 2647 6138 13499 27857 54093 99490 174523 293805 477203 751138 1150083 1718273
28 43 58 73 88 103 118 133 148 163 178 193 208 223 238 253 268 283 298 313 328
11 9 4 -6 -32 -95 -222 -437 -733 -973 -600 2069 11356 37240 101235 247946 568267 1246553 2656208 5549892 11427768
25 46 78 121 175 240 316 403 501 610 730 861 1003 1156 1320 1495 1681 1878 2086 2305 2535
17 28 57 125 276 592 1206 2313 4189 7247 12190 20366 34490 59973 107187 195096 356793 647598 1156487 2021731 3451720
24 45 84 157 299 582 1135 2162 3951 6861 11277 17571 26268 39002 61652 112657 242756 579095 1420548 3439575 8102595
21 38 57 74 91 122 210 467 1155 2840 6683 15001 32365 67738 138540 278114 548921 1064986 2028733 3789476 6933575
8 19 49 99 166 247 345 489 795 1610 3796 9226 21579 47536 98494 192930 359562 641469 1101347 1828093 2944924
13 32 68 127 228 417 781 1462 2671 4702 7946 12905 20206 30615 45051 64600 90529 124300 167584 222275 290504
13 23 35 45 59 104 245 624 1547 3653 8200 17500 35563 69181 130275 241965 454837 889032 1837669 4008880 9069103
13 18 24 33 50 93 221 590 1552 3829 8843 19391 41067 85240 175168 358274 730288 1481876 2987401 5972131 11825257
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
8 28 71 152 288 498 803 1226 1792 2528 3463 4628 6056 7782 9843 12278 15128 18436 22247 26608 31568
2 -3 -2 20 86 241 589 1370 3115 6958 15253 32753 68782 141126 282900 554641 1065785 2013448 3754005 6938327 12772443
8 8 -1 -29 -91 -197 -333 -435 -345 303 2402 8180 23048 59530 145226 338410 757762 1637618 3428041 6971393 13805807
25 40 71 134 245 417 659 984 1442 2209 3797 7534 16663 38852 91816 215490 497315 1122518 2469919 5287326 11001021
24 36 54 96 192 399 831 1704 3396 6522 12024 21276 36204 59421 94377 145524 218496 320304 459546 646632 894024
-5 -3 0 5 27 110 355 969 2345 5199 10832 21665 42319 81683 156661 298762 565880 1064795 1998131 3769177 7221916
20 39 64 88 98 79 29 -13 69 503 1659 4090 8641 16751 31174 57485 106922 201351 381434 719436 1338532
9 26 43 56 69 113 292 872 2425 6031 13527 27773 52881 94324 158808 253751 386169 560720 776603 1022950 1272285
-2 -6 -8 10 86 287 734 1656 3486 7012 13596 25474 46150 80897 137378 226400 362814 566574 863968 1289034 1885174
-6 -7 3 42 139 350 790 1683 3432 6711 12581 22632 39153 65332 105488 165337 252294 375813 547767 782870 1099143
10 12 25 75 201 455 898 1591 2587 3943 5792 8557 13497 24070 49367 112747 273115 675713 1669042 4064338 9691456
11 11 22 47 90 164 314 668 1529 3521 7802 16357 32384 60786 108782 186650 308615 493895 767918 1163723 1723558
12 12 22 61 149 303 533 838 1202 1590 1944 2179 2179 1793 831 -940 -3800 -8080 -14166 -22503 -33599
6 29 65 123 230 439 837 1553 2766 4713 7697 12095 18366 27059 38821 54405 74678 100629 133377 174179 224438
-5 2 13 22 19 -10 -82 -207 -352 -353 260 2569 8758 22849 51755 106730 205305 373808 650575 1089968 1767325
25 43 75 135 246 440 764 1306 2262 4070 7648 14810 29044 57125 112717 224571 454763 937541 1958001 4103569 8542006
20 27 29 18 -21 -116 -301 -571 -753 -215 2708 11746 34424 84806 187656 384517 742318 1365239 2410695 4110442 6797961
28 56 113 214 387 685 1205 2128 3805 6925 12813 23938 44815 83763 156604 294617 561270 1085954 2128813 4199674 8267127
3 11 19 27 35 43 51 59 67 75 83 91 99 107 115 123 131 139 147 155 163
16 22 25 25 22 16 7 -5 -20 -38 -59 -83 -110 -140 -173 -209 -248 -290 -335 -383 -434
17 46 92 156 243 380 643 1200 2393 4915 10199 21248 44360 92691 193674 404589 845141 1764532 3675990 7618200 15646565
5 23 62 139 281 543 1047 2052 4068 8043 15704 30263 57977 111583 217564 430738 862051 1729007 3443254 6756899 12998645
5 6 13 33 83 196 431 902 1858 3872 8237 17722 37904 79344 160881 314223 589739 1062794 1838981 3055015 4869649
21 39 72 145 299 592 1106 1971 3418 5879 10177 17908 32225 59414 111963 214427 414671 805855 1570414 3069167 6021443
12 22 39 81 189 449 1030 2249 4676 9302 17822 33142 60321 108356 193645 346944 627879 1156029 2178028 4211058 8343188
2 9 41 110 239 484 980 2034 4304 9141 19249 39957 81621 164010 324008 628617 1196110 2229297 4066273 7255760 12666283
11 20 50 118 251 485 866 1458 2363 3758 5954 9482 15211 24503 39410 62918 99243 154184 235538 353582 521627
7 -2 -16 -38 -68 -102 -139 -199 -356 -796 -1911 -4410 -9318 -17446 -27227 -28206 16213 211334 830958 2541314 6883432
25 34 44 63 109 217 445 873 1582 2600 3823 4993 6005 8235 18431 58333 186163 541390 1433202 3508147 8056737
22 31 55 107 200 354 617 1108 2089 4072 7966 15268 28301 50501 86754 143783 230584 358909 543793 804121 1163230
-4 1 20 61 138 273 495 836 1324 1973 2770 3659 4522 5157 5253 4362 1868 -3047 -11440 -24647 -44326
26 51 98 174 298 523 971 1896 3796 7611 15084 29440 56668 107887 203553 380634 704358 1286739 2314822 4092474 7100598
28 52 98 193 377 697 1196 1897 2782 3766 4666 5165 4771 2771 -1820 -10315 -24416 -46280 -78590 -124631 -188371
3 11 24 61 165 425 1023 2315 4948 10006 19169 34862 60368 99882 158494 242110 357353 511533 712838 970979 1298623
5 15 53 147 346 734 1449 2700 4766 7957 12530 18600 26207 36006 51812 88055 189285 477498 1260375 3266770 8137126
4 7 13 23 52 140 362 836 1741 3392 6491 12809 26807 59168 134039 303207 672818 1452161 3040389 6177303 12200838
-8 -3 22 78 175 320 517 781 1199 2112 4564 11295 28799 71422 169312 383553 834506 1753964 3579140 7117715 13828691
25 33 33 19 -10 -46 -75 -91 -116 -205 -381 -359 1302 9515 38559 126226 365970 976291 2443528 5803537 13177521
26 41 56 71 86 101 116 131 146 161 176 191 206 221 236 251 266 281 296 311 326
0 4 10 24 63 170 440 1058 2350 4848 9370 17116 29781 49686 79928 124550 188732 279004 403482 572128 797035
4 3 6 14 22 25 43 170 654 2033 5393 12885 28748 61258 126333 254163 501624 976195 1883076 3618592 6953490
22 33 42 43 44 97 343 1086 2929 7033 15611 32876 66900 133364 263271 518834 1025692 2036469 4052068 8045173 15858136
18 30 39 49 73 146 364 977 2576 6439 15166 33887 72656 151295 309176 624662 1252945 2498224 4949126 9729671 18960358
10 26 62 127 223 344 474 591 705 997 2198 6470 19248 52808 132800 309727 678524 1411248 2810806 5398157 10052261
9 24 48 88 157 282 528 1047 2177 4658 10117 22122 48348 104795 223662 467634 955421 1907256 3726322 7145624 13494603
2 1 10 48 139 312 601 1045 1688 2579 3772 5326 7305 9778 12819 16507 20926 26165 32318 39484 47767
14 26 53 104 199 384 750 1457 2783 5252 9944 19154 37646 74842 148395 289719 552188 1022870 1838831 3209228 5444609
17 16 25 67 174 387 756 1340 2207 3434 5107 7321 10180 13797 18294 23802 30461 38420 47837 58879 71722
4 6 24 75 184 389 759 1450 2843 5837 12411 26626 56327 115965 231261 446985 840062 1541700 2774406 4912701 8580026
9 26 64 127 219 343 497 667 817 876 722 163 -1085 -3423 -7397 -13729 -23351 -37442 -57468 -85225 -122885
18 47 94 168 291 509 904 1620 2941 5492 10671 21464 43866 89277 178551 348989 666692 1248617 2301796 4191988 7561173
25 47 95 183 325 535 827 1215 1713 2335 3095 4007 5085 6343 7795 9455 11337 13455 15823 18455 21365
9 22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269
16 26 40 58 80 106 136 170 208 250 296 346 400 458 520 586 656 730 808 890 976
14 18 23 30 40 54 73 98 130 170 219 278 348 430 525 634 758 898 1055 1230 1424
22 47 87 152 259 441 761 1333 2355 4160 7307 12792 22603 41153 78748 159440 337800 732977 1594851 3427508 7211535
26 46 78 143 272 515 964 1789 3288 5964 10671 18936 33722 61281 115612 228819 474022 1013362 2193352 4725041 10009284
23 47 81 125 179 243 317 401 495 599 713 837 971 1115 1269 1433 1607 1791 1985 2189 2403
19 44 86 153 270 505 1009 2065 4147 8013 14899 26953 48180 86441 157631 294374 563979 1104929 2199278 4412142 8851878
27 42 71 143 303 613 1153 2035 3460 5871 10286 18936 36386 71384 139766 268846 503841 917024 1620465 2783413 4655593
24 41 73 128 210 319 451 598 748 885 989 1036 998 843 535 34 -704 -1727 -3087 -4840 -7046
-7 -15 -19 -17 -12 2 68 308 979 2543 5751 11741 22150 39240 66038 106490 165629 249757 366641 525723 738344
7 12 36 98 227 462 852 1456 2343 3592 5292 7542 10451 14138 18732 24372 31207 39396 49108 60522 73827
11 25 48 89 153 236 320 368 319 83 -464 -1485 -3187 -5826 -9712 -15214 -22765 -32867 -46096 -63107 -84639
8 14 30 79 187 374 638 927 1094 828 -455 -3799 -11053 -25524 -53195 -104919 -200212 -373550 -684440 -1232997 -2183333
9 28 53 84 121 164 213 268 329 396 469 548 633 724 821 924 1033 1148 1269 1396 1529
15 29 58 121 257 543 1139 2382 4963 10251 20886 41850 82327 158757 299574 552284 994087 1748873 3017478 5136931 8701877
-7 -1 11 31 77 197 481 1072 2181 4129 7487 13484 25034 49038 101091 214393 455493 950327 1924467 3760853 7075295
-5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25
-7 -8 -10 0 61 264 808 2102 4937 10772 22217 43862 83713 155717 284373 513702 925934 1682313 3113525 5917809 11583494
2 0 -7 -16 -12 38 191 534 1190 2324 4149 6932 11000 16746 24635 35210 49098 67016 89777 118296 153596
13 21 32 55 115 259 562 1133 2121 3721 6180 9803 14959 22087 31702 44401 60869 81885 108328 141183 181547
9 18 48 119 260 518 978 1794 3234 5749 10092 17559 30554 54009 98935 190916 389291 828028 1798244 3906903 8369100
8 22 51 103 183 293 432 596 778 968 1153 1317 1441 1503 1478 1338 1052 586 -97 -1037 -2277
6 16 50 134 314 659 1265 2265 3848 6287 9984 15580 24280 38746 65263 118441 230546 468730 965038 1966202 3912990
16 39 76 132 223 384 673 1171 1978 3205 4962 7342 10401 14134 18447 23125 27796 31891 34600 34824 31123
10 17 28 46 90 208 501 1174 2638 5695 11846 23770 46030 86070 155575 272274 462274 763021 1226992 1926230 2957842
20 36 67 120 206 358 672 1395 3112 7132 16249 36172 78103 163236 330419 648963 1239736 2309436 4205547 7503272 13141120
16 33 53 67 61 16 -78 -183 -129 558 3009 9739 26128 63370 144182 313540 658314 1342251 2666789 5174343 9819879
13 17 21 40 106 272 616 1245 2299 3955 6431 9990 14944 21658 30554 42115 56889 75493 98617 127028 161574
10 20 41 94 213 464 978 2003 3981 7668 14348 26259 47469 85632 155317 283877 520928 952044 1715507 3016640 5125441
-4 -6 -2 16 72 221 564 1263 2556 4772 8346 13834 21928 33471 49472 71121 99804 137118 184886 245172 320296
0 4 13 33 74 157 326 671 1375 2805 5674 11308 22059 41912 77341 138476 240650 406402 668019 1070707 1676488
16 34 66 125 241 471 903 1663 2947 5109 8845 15534 27854 50938 94712 179032 345723 687730 1419893 3047749 6758676
6 28 60 100 153 244 445 932 2108 4860 11071 24608 53201 111996 230261 464071 920475 1804042 3507549 6790264 13129978
7 29 68 130 237 445 877 1780 3613 7175 13792 25618 46221 81943 145280 263148 496108 980618 2017113 4245291 8979258
9 11 15 16 20 72 300 982 2645 6215 13280 26652 51702 99534 194211 388433 796263 1659636 3481287 7287877 15148046
-1 11 34 73 133 216 318 441 648 1204 2865 7406 18542 43561 96420 204128 420762 859094 1761789 3658468 7702212
12 34 72 130 208 309 449 678 1131 2146 4523 10069 22697 50543 109858 231849 474214 939874 1806386 3370764 6115982
19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99
3 6 16 37 73 128 206 311 447 618 828 1081 1381 1732 2138 2603 3131 3726 4392 5133 5953
4 3 15 53 130 259 453 725 1088 1555 2139 2853 3710 4723 5905 7269 8828 10595 12583 14805 17274
19 38 64 107 192 361 683 1285 2434 4725 9470 19464 40478 84190 173982 356414 723833 1458723 2920749 5818959 11557206
-4 -9 -15 -24 -29 -2 119 461 1296 3215 7455 16452 34707 70066 135529 251717 450140 777423 1300661 2114088 3347259
24 41 63 89 123 187 352 805 1986 4859 11425 25635 54903 112442 220659 415917 755333 1327550 2273056 3828714 6431712
10 14 25 52 112 230 439 780 1302 2062 3125 4564 6460 8902 11987 15820 20514 26190 32977 41012 50440
5 9 30 88 223 518 1132 2343 4601 8591 15306 26130 42931 68164 104984 157369 230253 329669 462902 638652 867207
-4 8 35 77 134 206 293 395 512 644 791 953 1130 1322 1529 1751 1988 2240 2507 2789 3086
12 15 32 80 197 451 940 1782 3097 4986 7515 10715 14612 19304 25105 32779 43890 61297 89826 137154 214943
8 27 57 116 236 463 857 1492 2456 3851 5793 8412 11852 16271 21841 28748 37192 47387 59561 73956 90828
17 39 70 123 232 465 948 1910 3761 7214 13472 24547 43889 77697 137546 245226 440843 795256 1428293 2536897 4448110
6 25 49 81 138 258 514 1045 2123 4286 8581 16999 33314 64915 127152 253782 521352 1103663 2388049 5213473 11340118
15 22 48 108 222 431 826 1607 3209 6554 13507 27623 55262 107123 200271 361049 630542 1077985 1836685 3197221 5833573
9 10 13 14 11 14 57 214 641 1713 4411 11251 28247 68675 159767 353925 746617 1503812 2902641 5389948 9664531
19 30 45 73 127 228 408 724 1318 2589 5582 12746 29268 65253 139091 282431 547269 1015752 1813403 3126583 5225125
16 20 29 55 129 311 712 1553 3307 7003 14827 31254 65116 133287 267071 522905 999563 1864490 3391876 6014067 10385116
2 -7 -23 -41 -38 37 273 807 1834 3617 6497 10903 17362 26509 39097 56007 78258 107017 143609 189527 246442
15 22 29 41 69 142 334 816 1954 4492 9890 20944 42922 85648 167321 321469 609457 1142602 2120483 3895851 7082139
-1 -10 -21 -18 40 232 698 1683 3612 7213 13728 25306 45799 82489 150000 279284 538074 1076412 2225283 4704589 10050857
-4 -10 -18 -28 -35 -18 87 447 1444 3852 9073 19389 38127 69546 118134 186844 273596 365122 426928 387786 116745
1 13 37 84 190 444 1033 2304 4840 9544 17725 31197 52476 85390 137021 223308 383639 715667 1452493 3123430 6871382
-4 -2 10 35 76 136 218 325 460 626 826 1063 1340 1660 2026 2441 2908 3430 4010 4651 5356
11 7 -1 -12 -25 -39 -53 -66 -77 -85 -89 -88 -81 -67 -45 -14 27 79 143 220 311
16 24 27 30 51 126 327 799 1815 3834 7516 13592 22403 32809 40023 31750 -18103 -158498 -471154 -1071166 -2065238
4 21 58 122 227 408 749 1434 2836 5683 11399 22831 45762 91910 184594 369052 730792 1427817 2746864 5201140 9699217
16 33 63 118 209 342 516 733 1051 1749 3734 9417 24442 60908 143137 317692 670346 1354185 2635169 4964488 9091191
11 20 38 69 119 197 312 472 701 1108 2076 4697 11669 29001 69050 155648 332375 675404 1312794 2452645 4423163
10 14 18 32 96 301 813 1907 4040 8034 15525 29998 59020 118782 242925 499187 1020334 2061362 4105208 8057644 15603992
7 20 41 70 104 142 207 402 1035 2880 7693 19179 44724 98427 206472 417101 820287 1588368 3061397 5924796 11570032
4 16 46 109 232 472 956 1952 3994 8110 16239 31970 61792 117108 217337 394505 699808 1212716 2053276 3398363 5502720
26 39 56 82 121 184 315 656 1594 4068 10170 24277 55162 119964 251726 513673 1025774 2012673 3886936 7387644 13801107
3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17
1 6 25 73 167 341 680 1377 2814 5665 11015 20479 36279 61179 98065 148758 211323 274636 308233 244417 -51845
7 29 77 175 369 743 1445 2726 4995 8893 15389 25901 42445 67815 105797 161420 241247 353709 509485 721931 1007561
22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269 282
6 1 -4 -9 -14 -19 -24 -29 -34 -39 -44 -49 -54 -59 -64 -69 -74 -79 -84 -89 -94
11 36 79 151 269 457 759 1277 2247 4166 7983 15367 29065 53363 94663 162189 268835 432168 675599 1029735 1533925
8 4 -8 -27 -34 26 266 885 2220 4879 10095 20601 42610 89951 192129 409116 857116 1751451 3475128 6684512 12466550
21 48 95 172 291 470 745 1193 1979 3471 6526 13143 27827 60277 130556 279024 585537 1206562 2446161 4889006 9643099
16 25 43 93 225 531 1171 2431 4846 9450 18274 35317 68393 132584 256690 495465 953348 1831239 3518957 6776005 13077649
17 32 50 83 153 296 571 1074 1957 3452 5900 9785 15773 24756 37901 56704 83049 119272 168230 233375 318833
15 41 92 173 294 480 788 1338 2379 4446 8722 17800 37143 77674 160140 322316 631027 1202867 2241168 4103331 7423512
10 28 70 157 328 649 1220 2177 3692 5989 9418 14662 23194 38152 65860 118292 216854 397946 720862 1278691 2212996
9 22 54 108 197 357 667 1290 2559 5148 10391 20847 41279 80390 154106 292254 552762 1052003 2028105 3968007 7851354
-9 1 20 46 95 223 555 1321 2899 5865 11050 19604 33067 53447 83305 125847 185023 265633 373440 515290 699239
9 26 71 162 317 548 866 1325 2149 4001 8463 18793 40994 85147 166798 307943 536900 886355 1389742 2079103 2994882
28 41 59 93 169 339 690 1356 2547 4618 8210 14504 25638 45346 79887 139341 239358 403455 665965 1075751 1700807
-2 9 47 139 329 683 1301 2348 4137 7328 13358 25311 49614 99285 200148 402908 807231 1611069 3213546 6430795 12946438
19 43 90 174 320 568 972 1594 2493 3709 5242 7026 8898 10562 11548 11166 8455 2127 -9494 -28538 -57660
12 12 13 26 66 155 333 677 1328 2526 4653 8284 14246 23685 38141 59631 90740 134720 195597 278286 388714
8 31 65 110 166 233 311 400 500 611 733 866 1010 1165 1331 1508 1696 1895 2105 2326 2558
10 27 69 153 308 595 1155 2299 4654 9379 18465 35133 64344 113435 192895 317295 506386 786379 1191421 1765281 2563260
8 28 59 101 154 218 293 379 476 584 703 833 974 1126 1289 1463 1648 1844 2051 2269 2498
5 22 59 130 264 522 1029 2034 4008 7798 14892 27949 51974 96999 184112 358605 717667 1466714 3030153 6262196 12835776
21 25 31 54 123 285 609 1190 2153 3657 5899 9118 13599 19677 27741 38238 51677 68633 89751 115750 147427
12 13 20 45 102 210 414 844 1841 4201 9636 21638 47071 99020 201708 398665 765810 1431701 2607932 4633523 8038172
24 38 52 66 80 94 108 122 136 150 164 178 192 206 220 234 248 262 276 290 304
23 34 41 44 43 38 29 16 -1 -22 -47 -76 -109 -146 -187 -232 -281 -334 -391 -452 -517
-10 -2 34 116 266 512 899 1528 2651 4869 9519 19415 40283 83642 172850 356227 735942 1531350 3215650 6804080 14446002
6 18 37 58 86 150 335 844 2108 4981 11097 23545 48168 96068 188401 365462 703738 1347664 2568293 4870656 9187810
4 5 25 75 166 320 596 1144 2313 4873 10491 22771 49495 107288 230943 491377 1029170 2115773 4263265 8418391 16301188
1 -8 -10 15 110 361 933 2132 4500 8944 16898 30544 53235 90606 153713 267462 491595 969324 2033158 4422897 9713628
18 33 59 97 148 213 293 389 502 633 783 953 1144 1357 1593 1853 2138 2449 2787 3153 3548
+49
View File
@@ -0,0 +1,49 @@
INPUT_FILE = "input.text"
def extrapolate_value(line: str) -> int:
initial_values: list[int] = [int(v) for v in line.split(' ')]
values = [initial_values]
# Loop until last thing is all 0, 0, 0...
while len(values[-1]) != values[-1].count(0):
new_values: list[int] = []
current_row: list[int] = values[-1]
for value_index in range(1, len(current_row)):
new_values.append(current_row[value_index] - current_row[value_index - 1])
values.append(new_values)
# Now we can extrapolate our new values, starting from the bottom
for row_index in reversed(range(0, len(values) - 2)): # -1 because we know the last row is all 0's
current_row: list[int] = values[row_index]
row_bellow: list[int] = values[row_index + 1]
values[row_index].insert(0, current_row[0] - row_bellow[0])
return values[0][0] # Return last value of the first row
def main():
with open(INPUT_FILE, 'r') as file:
lines = file.readlines()
sum_of_values = 0
for line in lines:
extrapolated_history_value: int = extrapolate_value(line)
sum_of_values += extrapolated_history_value
print(f'Sum of extrapolated values: {sum_of_values}')
if __name__ == "__main__":
main()
+3
View File
@@ -0,0 +1,3 @@
0 3 6 9 12 15
1 3 6 10 15 21
10 13 16 21 30 45