From 0f38cd6bf002116168c00dd2b0dee1628138ecbf Mon Sep 17 00:00:00 2001 From: a Date: Tue, 5 Mar 2024 03:32:18 -0600 Subject: [PATCH] add 2023 stuff oops --- 2023/01/01.py | 25 + 2023/01/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++ 2023/02/02.py | 50 ++ 2023/02/input.txt | 100 ++++ 2023/03/03.py | 61 +++ 2023/03/input.txt | 140 ++++++ 2023/04/04.py | 29 ++ 2023/04/input.txt | 218 +++++++++ 2023/05/05.incomplete.py | 3 + 2023/05/input.txt | 250 ++++++++++ 2023/06/06.py | 36 ++ 2023/06/input.txt | 2 + 2023/07/07.py | 156 ++++++ 2023/07/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++ 2023/10/10.incomplete.py | 17 + 2023/10/input.txt | 140 ++++++ 2023/15/15.rs | 15 + 2023/15/input.txt | 1 + 18 files changed, 3243 insertions(+) create mode 100644 2023/01/01.py create mode 100644 2023/01/input.txt create mode 100644 2023/02/02.py create mode 100644 2023/02/input.txt create mode 100644 2023/03/03.py create mode 100644 2023/03/input.txt create mode 100644 2023/04/04.py create mode 100644 2023/04/input.txt create mode 100644 2023/05/05.incomplete.py create mode 100644 2023/05/input.txt create mode 100644 2023/06/06.py create mode 100644 2023/06/input.txt create mode 100644 2023/07/07.py create mode 100644 2023/07/input.txt create mode 100644 2023/10/10.incomplete.py create mode 100644 2023/10/input.txt create mode 100644 2023/15/15.rs create mode 100644 2023/15/input.txt diff --git a/2023/01/01.py b/2023/01/01.py new file mode 100644 index 0000000..a2a2f4c --- /dev/null +++ b/2023/01/01.py @@ -0,0 +1,25 @@ +with open("input.txt") as f: + lines = f.readlines() + +def extract_numbers(line: str) -> int: + nums = [c for c in line if c in "1234567890"] + return int(nums[0] + nums[-1]) + +part1 = sum(map(extract_numbers, lines)) +print(part1) + +def extract_numbers2(line: str) -> int: + # we need to preserve overlaps in both directions + line = line.replace("one", "one1one") + line = line.replace("two", "two2two") + line = line.replace("three", "three3three") + line = line.replace("four", "four4four") + line = line.replace("five", "five5five") + line = line.replace("six", "six6six") + line = line.replace("seven", "seven7seven") + line = line.replace("eight", "eight8eight") + line = line.replace("nine", "nine9nine") + return extract_numbers(line) + +part2 = sum(map(extract_numbers2, lines)) +print(part2) \ No newline at end of file diff --git a/2023/01/input.txt b/2023/01/input.txt new file mode 100644 index 0000000..36374dd --- /dev/null +++ b/2023/01/input.txt @@ -0,0 +1,1000 @@ +eighttkbtzjz6nineeight +5knjbxgvhktvfcq89onefive +hnjcrxeightonejnlvm4hstmcsevensix +trsdgcxcseven39dpmzs +oneninesixtwo26 +dppthreeh32twobhrqzks +1cxklgfbvhsnccfive4 +foursgjsevenseven5five19 +nrrk87 +63ntkjbvcv3ntdcptmvheight78 +7xv3one +3tzjcrfbvhtqctfmqmdcbjhxln9eightnqbcqztmxcthree +sevensszlgdrlrhnptonethree3qvrxkbgfxtthree +3nckzkpkjsvztqkgvm99 +fourthreeonesevencqdv2gnvblhr +528ksdcbx +six342 +3twozrfrtljql9eightgcqrgmbzz7dlcr5 +6five2threesevenone65 +4onejrg23sevensxfive +fourthreecszzvhzfsevensix916 +spqzvdxxjeightninejzbpzone7 +cfivesevensix332lfpcffmld +ninesevenhrdvmzj24bcxxz6 +khpn3fourvhqmntjxfhsvrlnvc +bfzxhzftwo2czsrv +mmblpnnineseven4gtfvqscghfour +1zjgqlz +five1ninetjjtfxqpdkgrxtgxrcsevenkfdzlh +s8twoned +8fiveone53nineeightthree7 +926xrfcjzvpd7 +3sevenqnzjsqh6fnssjdsbv3nine +rjbbsevenvzkghzsixsbjchs59 +221fsnxtbstone1 +seven9fourpdseven1four2eight +two1nine4nine7 +9seven7 +fourcjmdgjsfive2l +twokvhrdldggn15twoxfivenine +mmjtldgmvq157hchsnvpbjvrvtvnineeight +cgzeight3sjmhdcvlnthree5vkgfmx +8sevenfourgnxdpp62xx5 +jgdk3z7mmkkjkm +9xrdltttpqznsljbvcdvtz +62zthreethree6 +sjbxq9ptsvjhpzmxfoureightmdbnlsckfqlqr +91xrnsbxxsvk6brxfftpttsevencszfhsnrfive +two9ljdfskpfive +1seven384 +xbfkhfvlts8dhtnxhxgn93three7one1 +3xkjrnqnqhgcfgjvfmxhghp15 +nine9844 +5onepczqjfcgfrbmtstbqbktphkvqcmbbvhpld +eightsixhnsbnine1twonevrs +eightcmbm2zbxsixone34 +five99qccjbklfivevqskhpxzd +seven9four2kzkjbrp +ttdbhd4gqzdlqldnm +9cqcztfourrsfskdjf +njttzmcrchfd4 +r414tzqnfddrbf +4tzbfcjksjsn7eightonelvkjzkch +ls7four +6eightsixrtkcrcbmqq6eight3nine +onesix5five7six1 +dvrqseven5ninegqthree4two9 +fourgdkmbrlgc8 +three7nine +sixqrpzqvxd7xnbkftn5seven +oneonerbpgk5ljpqh5threevtpkpfxtsv2 +ljttxthreefour3three4gxzgsfm +sixttjvhdggbk357 +eightlb4 +fourtwo4twonekzb +8one2cdsnrbfxbsixztcfour1 +ldveight19lg +seventpd84dscfmxj +one34flpg6eight76 +cfninepkscscc5 +flqv5v6twooneprlprlkcbk +qsqlrvmkq5457ninetwosevenm +xlvvtxgspct4gmrgeight +hpbbkqthree4gzbq768five +5dqfsixeightonenine +seven4nfshmhvgqm4 +rhfgvzxtfckbtmxtt9rqms9one +3gsgfbrnkhqrjddvlx59four2jfz +fdl4two +9sevennine158 +five9eight49 +3mfsixnkxdbpdxqdgfdqnk +six9fivefive +fourjdmvlvkrp5seventhreejnqncmktwonev +8cjfqkkgtzlnine +3nnsevenjdbjfp1 +ghthree1mhgtklfqdkqthree7seven4 +4mqsstftj +sixprblqsevendsxvqnk5 +four45one +dxhvj23188xz4 +dcmnr2 +xfoneightsixnine6fiveseven +6cxbbxkrxphsix +5ckkzlzjngvssfx +223zgb +six4qsf +hfxgsfhfhpjlvb329eightone +9zjkckhxoneightbnj +xsdp23seven3four7 +8five53eightthreenljbtgcnfive +fnjn36 +eightkpkxrvssix2lhctc +6ninebqcksevensevenhk +2one98rrtlncrxhllbgthreelgvkdf +sixzdnlfrvvd4 +lltjs8sixqbblmfdhctwo +6twonclq98sscjn +six3niners7eightwokjj +sixeighttwo1onerxrvvbfxxqmxnq9 +conetfpbsrm81sixsgkfqk8six +jbqs5277 +kjbncjlqthxzlznld89bgqgkxfzpqsptwo +onefive1 +pchlnspk52one4sgqj +zd3 +43fsfplhgxtjthree7gs4npllqvll +eight8sixeightone6onexr +six6hqltskzpkgbggjktlzlpktdqhzdbnine9 +eightnpfbmfninevgpjsleightxh3mz +rninenine7nine +fourbbjnjrbzdvshfeight62 +3hzpfsfsdm +2vzhjbv6 +27bpninejhbcjrmz7zfqf4 +ppflreightpmztvhvonetnjmrxdd31one +threeseven7 +srf5hcxvhsmn5five +onersvqvqgkfiveeightqxgrjgfcqj5ntgdzxp3zxdcmbsjqn +mcb643fivetwo +onermbkvmkc9pfvlpdhkzj +3oneeight64 +qtnptg5two36nine2tprkbtb +15lbhtcqfnj1qgjk +eightkzrnlrrnlltdmxlbxfourpbpghtgkb9nvlvsm +26kmmkz +jhnldxdtpseven46oneightnb +4lfftjtbzvppxsix17nxpgvjkxd +vszsbxdzjfourhlxldrthdzpqg6slnj8four +nineone2njsfpcb +5sevenone6five +jrmdhdvrb53onelgvlkd29seven +qqqg7eightseven +sevenm9 +3dfcfcdb9twoqbvxjgt56six +xq88jjmv83pspctxthree +38five5 +six7rbrvjb +eightlvqn335nine +rgmfflzxzd9hs3foureight5 +qm6qvmrone4 +fournine8 +two688qqdtdfbmzn5 +8joneonefourljvbjntkngtskcgfnszpgxt +ninethree5pjzcvntl984five +mfgqzcjbglx7 +ninemxnfcqrbjonek1nineggj +8dcfkfdtwo +4cltttbrlzpgzbdbqsevendtwosspqk +8eight9klmcbninetwozdcznsv +six85pjqldfbqvclntpnqgv +1dgprzx53 +4sixthreeh3fjqpggtjzq +fourone8fiveseven4kgbs7 +seven64npxthreeonefour +xvntvgxv9twotlgcsbgsix4 +hcqtdzthfour2xvqmnmgrncjt51 +qhlpksvnntjq8 +3rtmfngqccktwovpppqfqdlxmk2 +sixfoureight9tqpdln3eightbjnqfldblnine +eight2sixthree +3plpm +6two3two2 +1cfszpnxgtk5fivefive8one +lxrdvls2 +sevenfqszrfhone5dxcqsq +42 +3dmpsix9nhgzhbmknfour19oneightlng +six2dfglxszbjone +eightone88 +9hffzxl7five4 +seven8fknjk +fivefoursevenllljzrvjf7 +eightmsxfkbszh2 +6fiveqhkttbsthreefghn4 +3eight98vsnzbkvzcjfive +spmzsdztzgcfbhvbzqlv5 +fourtwozlsst9sevenjjmbmqk4 +jtmlgrjcpkone2twockgc5four +one35five4 +four8tltpxqfour +57sevenbmhceightbhttrzxfvt +qlvrrlnxgvjgnine1four2two +sixoneseven3sevenm +fivejxfghfp81two +rkp3zbzfnrrqfour4eight +eightnine7tpflkbqpz +28fourlmxlhdzctxkrsix +2fiveeightnineninexhfourseven7 +mnlrszkr18tfive7l +3eight639 +gqpbkntddpeight22lxqjqqone +txxrdbx4bvsfxd +343nsctfvndmp93four2 +9lqjvtjcrrtthree +bsffrmtwo2fivesix +qltdtgl3eighttwo91mjq +rh4rddsfr +fourfive7seven +pbqmx7twoqdk +6onesixclklzfzsq992 +kzxkxvqzjffourdtm4onefive6xoneightsnl +k4snine4three39 +sevenone2xcnscqhcdplnonekcxmgt +seven7ninepmeighthqr8 +xpspdx3twoqpc3881 +5two5four8eightfive +sevenseven2bcbsf +1sevenrjstpdxfiveseven +2zsxfivefivesix43 +eightone5j99nhvbfqhzbvrv5 +onefive35m +2kfnqftkkcxtskj +twoeight8 +1one8bzzsmgvj2kmqcnqjrz4 +1one4sixsixbzbcglm +fiveqqhbmnjgz5ninerlrxkl2seven +4eight4two1xgkb91fdzgxlp +nine8onefive5scxlfrf +gbrqllhnine9 +1fouronesixfiveseven95 +7qjrprpseightshfzfxvn +2vkbbxfrthreenineeight +58three4 +lmfsgdzxnqfdbxtjsnp9 +zlbqglfseventprsqvsmt1one9 +fmksmtlc8dvhbtdvpfgdz +3six1 +mkdthree67jkprftqhdzvjxxftthree8 +bstlpptcfghsrrnine7bz +5m1qfscxncvkqgtf +62four16threeoneightg +twoxlrhpc8n9nine +q5sixfour +ninesix2ninepzvxxlpcbxsfpz28hxtccfzmdq +sevenccq4npgpkkb +k79four9fp +ssqptjqvld1pjfdjnkvsevenkjdzks +2bgpbgqfournine614 +16threeeightwot +five68jnhzdfqp2qlqbmnjmjdtfbj +vplnzg4545seven +two3two +zcbhzsvc68cnppjpqhfl5 +nine68seventwo8pfzgfzbsh +onethreethreeknngnmzhpmlnsd7 +46two +sixhdg748blmlkbdtjbtwobgpzzlhzqrbvl +2smcthmql84seveneighthnmdkmfg +5fourrpscd3 +sppzzjbckgsixone1sixfour +ltkzb3v3ltwo +four61nineeightdkgtcjfvds +eightd5nfcvvdxhkkddhb +four6q7thbpnz +5rknhshlhgnzz7sixone1six +327rkthreesixeight +cnbqtvptwo1qnsevenpzqh +threeqthreepmhgcqhseven2sevenggmpjcldz +ninedlvlgnglqf3 +4two993ninetwo +eightzpfournine72oneseven7 +ninejdfkznz62kflbvgpblcgchpzz +448 +6rktvxxjpfpqtntbsonefive +6lngttwodshgtworkvvsrnfhjmvpvvbseven +eight43gpssneight +6seven3threefourninesevenrnxx +three22rblfvqjr1four5six6 +xtdsqqbv43cxxvfpvtwoklhnqgjlkrrg +threevpvxgddmhl576 +3cxccdsevenmvzhqvpfn3btldbhbmfg +kklcmgptl931threenineeight +vj42ntvkrcjtq7sk6 +llsvqthreefive5 +xspgshknq3kpld2lfour6mhzrzvqf +4bfl38onesix9 +seven1vjzjmcrrvnh +7sixsevensix +gqnkgzmvpsnnzcvldlftrzhnpcbq6hzvbqbmnqvsix +5jvbldxsh +jrmvplfive7mfpbsmklzfivefivelsm +8seven5nppxjfjsevenbxrmzmdjnine +seveneightnrkconeqgjfkxjr532 +m9seven7 +vdn5hdghzvphfour +cpceightwo3 +sixtdxhninesevenmmzrpdqcp24 +tghjrkhltwojgrcnnbbq1 +cfrqlvsevengkthnsbtwo4twovffpv5six +two6pcxj4eightgbctk71 +five93nrqpshmxpbdnzssb2 +jnxjdzm2xcfhnzkxxz948twonejv +sixfive4four5nkdxzvd +twoqvnxzgcg883fivejgvltjq4 +7mzsqvrxlf6kpfjgvdpvj +tzhkjn813six7 +5qjbtklseven +rddmfnjgdlnkx5fourzkxlttqdfourrrjfdd +qtr2qrrqvhrkvmtqgbkdq +five56ninesschfzxone +lkb3 +3zmbbqdqqnineeightlvlfqqxleighttloneightv +7threetwofive168 +njxgnsqcpnine2 +zthreerfnvvone7 +three4one8 +8ppmjj983seveneight9 +p4 +8tshsgmkb516three6four +7seven8 +twosixthreenine6three +gvqz9 +n89ninethreesix8 +ptqrhhvztxsjbxfour81lncqpkjt +8flvhqljqpmlf6fivenine28 +zhbsl7seightwoczd +four1pspgxdvtbzdcd7vsbkzmt +fourj9sdnqtwotwonine3ftzrbzckqk +1fourkkfnndsdxnklrl +zpcdvrszc4ggjcpngkqeight +6twonxhgzcsrgxtwosixvblddxgfmsmqtfcthree +6pltsptthreefive5jjqtzncslmxrmbv7 +sixfourqfxtfour9onefivehsgdvpmdsfive +ksevensevenonebdxdxffive5threeeight +zztvdjzlnqtbrfccctsknppmx5seventhree9 +soneight716 +1fqnntfjhcj2threekmcpzqnbzlqps +twopcftkx8twofourcsixfour +8six2sixgxzzhpkv +four9nine4tgq +htfmtchrx634four5zsmkmdv +45dltlvdvv +dtl848three36 +nine7sixonetwo8vsix +twobxctmqvdnt96mnljbpxtsptjpznrjctgtwooneightqv +peightwosixeightseven4 +1seven8ds4five6pone +zjftdkvpkpfrhzj97nine56 +4sdcdr53beightwocjc +onezxmtfive7ttbbttjeighttwo +rlcjone3sixonezvbmzcgpk4eightwotnm +5ddmcsfzhntpnzntlllthreevqvct +twoeight9 +tfhmxsbf2foursqrrfourmfrzjffive6 +dhhnlbkjmfourthree6 +dxtkbxjlphpqcbmhpdfpqlmreight775bh +sixklvmtjgsevennine33qgvplfourb +gkjmcxsmhtwopkcszlrjd1onesevenseven +8xxvzzqvzszcn1onevmdfsrrtbbjgeighttgpmhh +eightpndprhrf7 +three7fpxtxghx +fivenssevengrrlntzldl87 +484sixjsxcmmtvbftrfive +t8onesevenvqsfc2k +sevenoneoneeightsevenfive71 +sevennvnvbtzsnqggrsrgq35sevenfive7 +feightfive12 +twoc846cf +1mtvlxhhxlsdbphgltlgzpl +xddrlslrdl9 +fiveqvfjvcqlcfour27 +9fjqp9rrkqbtpv3 +23fqccxsvsix94tkzsqmrhsg +6lvrsqnz +9four7hvlfl9 +gbgsnmkrxjxpgnj828 +56grzmb6onekf9six +87bjn4 +sjdzmqkrlkbsmxzsmn3 +seven91eightsix +svhfnxzdzqczc2 +vbnz92chjjfqftxfourqzzxseven +seventwofour5jbqvlmqknbznfbhtonefour +dqdmntkfsnbmjqxxgmkvm6vqpgpnnreight +one1431 +1five4 +twoone8thtxlrrdxbone +qftpltmjd1zpxckthreeeight +9xg +pjpdjrkltnrkkmd9five75rdctppdhjtghrffczdx +mtvbhnpzjfive7nine +thlzdgxcqvsknczrdslsh7 +eighteight4kkt7four5 +71ninekzfntxtjthreeone3 +gzseven2fssqrgmbj +52j +nsv16seven +stwone1 +twodbqgfivegsrrvxvone3 +jckhqbdlvgbgn7vtx3vggrdm +ntzftfhfeighteight2 +48eight6 +flzfqonezvskbf1668one6 +sevensix864eightfour3 +dnsdrsxvcxnsevengxrszqxfnd4fmnine +tjjngfourhdfzpfkh24 +foursmgvlqjxsqmz8ninekthktdhz +three435 +tkfqhpz8zjmcqbxcb46 +mmvstlmln3kxnkvjcmxtrdxp4seven +rmfour13vkgnnmbzbzgd +three6nnbljchmzthreeg +68onep9five1one2 +rbvzvgmkbmdrnmvone7kqtxtrtbone +three13six4 +qksfrmvgztsfournnvp66nine +34three +11fourpzkmqnfmjqkdgrlgqbsixsixcqtgdggbdx +nineone2seven4twoninesix +ninez6qpnnbpmcdhcr +sixbdbkhgntpsevencpn3 +1fivehvlrzpninemkfbfgtvfivesix3 +7kpeightzlvqsgkfjznpfpfsseven66 +c7hxrgkglfivebfctxk +5rfdxgshzmnzqscpqzlbnrhbg9strxdthree8kntkhdpdll +4gfzcjcjsm63fvxpvflv +nine8526 +6scslfpnrveight1seven5bdllknjj +seven94hnxddjv26s +two48seven3four58four +fourseven1smh5 +1zzdzmbjpjfzlhsvzgxf61gvtnklgx6 +ninefour63 +nine3nrfzn +gthreeseventwonine1eights +sdonejzdmtxtpl9onerzztvqr8 +eight15kqnjrggpblhsbdz1 +lkkxnzjrgsixsixthreeeighteight4twonem +d17two44 +6seveneight1fourthreesevenbdpvg +cjgchvhq4386five8 +1threefive426rsxmthree8 +sixnztppjtn9twossfjrdkzkrldztfbbv +threesevenlqrdmvzdcphmqj3four5three +fivethreepcfxdxmc3vdbprghd5sevenszprlbzrbn +threethree88xcgdmrcssevenrlflv39 +eightonezchscllpfone9 +zreight6sevennine +fmrhqrxr7 +sixnlqccjchpxpqg86five5 +sdpxjrxtk4sevenfivetmddbpqgtqffive2 +hrvrgjgvxt7vrsr +2zj8 +35fourspthreeseven3zgddrmbxmsz +four8kkxmtsscf +4six98 +five9four +four5one7pjbninefourbmss +4sixsixt138seven +fourxsevenseveneighthsgmmpdx5 +tonexhgcjxbjn8 +chbkd2183 +six8fivefourglszgngfgqthree +pghkzrftwo6 +fourpfx572 +62zfvzp +sixsixnzvtxdgsixzxsgmpz1zvtwo4oneightpg +425twothreebv4twoxbx +8nineeight55eightflkpggltsr4spl +seven45clkrkrxj +65six594twofive +4ktvpfjeight +nnslpmkqc5five5four +nineonetzmft8jcxqzrk +fivefivethree99 +2l2 +4mhdj +3eight7fivejqhvrszgh3 +5four7mbfz8 +one8sevenmltbgqcbq22 +1zgfnfvt9seven +2lhbfrndhmfiveone +fivekzgch424zbpgxhtkbjdljxkxvnz +1vd6vpmzjmnhhn +vlqcbhskb5onerqbql6 +six3tplqcxthreethreefoureightzldgvgxrthree +4fourtwo4 +cvznvxbxlszjpxvzbqn7gt2fjtxddzmjv +kjqthree67twosixfour4nine +dmjrhflfzslhkjmthreemfgqvzcpm9bcnfbpz +nfpcsevenone3two58 +eight4kdqczz96five1four +1mzfour +57tdcmtmns4 +bdxeightrjvkrddrm3nftmzxlftthree +2three2kvfourgrtvxmrzgdninecseven +threemxpfnthree5onehjdxfntvtzlxhr +8onelqtjpkmtwotwoseven91 +rzhzg1fouronecqkdpfkgdkkftsixhllvphvtjv +vxgrlptk48one14two +kqncz3znmkppxs3hlggbmsfj81 +ddrp3 +three8hjdccgthrtbd6lvhnbfivemzh +twomptzvkqmssix7bjvpsix6nine +phrdjxmzj3xxkmfour7dsix +5threeshtmlsjbmfzgdq +96eight +three6rqqxgzthreejphvs +69seven52kmnpbqmjdhtjvxcnlxfgldbs +veightwozbbcmqrdxv6hxxpdknf +nxbtwone1vktdvlbbhnfour +4five864 +2dn1fiveeightthree +two4twofoureight43 +1eight51 +71fourhjrnqssxqvf +sevenqxkccdxndfgqhctsfsx6 +xqgsjvdmnb31sixfourtksqshz5 +4ghkqfzxceighteight2eightfiveeightwotf +ninelsnldgslfxfqfsrc24six +3seven3ctbf9eightmshd +mbqpfourfive44sixbnmqrmkgxt +flgdrvjj4dks +oneqslfbjgfx8 +jmmssm2 +hjfbzsix1 +bvjdxseven8 +fivenhfccvg9 +four5sevengkvslppponerhlvfms +b9one +89znlhgbnkmmxsix3two +sixsqtjcdfbs87ninejvznvmeightfvst1 +sevenktnzdkcsrzzdqtb9jnbtwotgxsptxcd5 +6mqvbhsddnmb21sixskg8 +threenb2four74five1lcmdzrvq +ftvone7 +5msevenpdqgzncvzxeight +foursixpshnbrpm64 +six2twotwordzf +nine7lbnxsfjtbb1seven4ggt4 +zlnfkkconept36 +9sevenfqlxjmts94xpcxqseven +foursevenseven15ninedqff1kmzfgvnks +xktjdhb115 +threeeightcnlpzrb8 +91six +376kkgmlblrcbthree7jgxvgfcdv +9xpz3 +rrcvpkgtwo2one6vjfone24 +sevenhfour3three +pxfvzltqrg9twotwogqdtzbp +lrgseveneight5pmxvppjdhtwoone +97six +four8bjdhpmszdeightprkgone +mb6lfcdkcn +8fbvxnjone +z9vdthreethreesbsrkzgnsxp8 +sevengftjmm1onegqhpninesnr3 +f4fourrbbngrdm37five +ninerbmdqfvkfx9eightone8eight2 +rxdvclfr714 +oneggchmt2dgh7 +tvbfour9four +four474fourgmdtm +nffourpbxtlcs7ninethree3 +bpjlrztwo2sdttcghc +hfflhmdc18 +4ninepsrmtbqrfeightk3xxxf +433hdvcggkr1xjcntvtnvsc +7nine2nine6 +9zctwo +9vvfjvctgtzpjh7jtdjcrh +qrtgcd5six31khd5 +fourbjshrq845zg +ghconeight35jljdqgtg4fjdtxtsfiveone4 +one7kxscgcxnsx +43threethree54four +vmninetwo2onetqgblrsgcpfkrreightwokg +threefour38 +fivesixeights26three +jtmzzxvmxone2four9jgtxjrvpcthree +fdqgczkq8sevenvcnhpseven8three88 +7ninezone3 +frj4eighttwobgx1threesjckzsvvxlone +oneseven2cspzhqfsix4 +ljmnbbcnxffkmdn5 +tmzlnl8oneseven86ninelbrzjgqn +fthree3seven6sixtwo34 +6two8fivexteight +89seven5twosix63 +63pzsjcjzvbhseven +msqvppsgnfbjrjmdrrhbfxrjqdlkpfourjbrjks3dthree +eight6twoklkdfgvxzteighttctqz +4gjpfmqs233six +onefourninenxcnkgfour8rmmrzln +1sptlpstqb6eightqgfhzzgpgp24 +eightlrjlhqfoureightjvj937 +595oneighthpt +44five +two2sevenbtwo +7fivefivepxonebbrlthreefive +klxnlfjlsrgjcd7eightninefive +threeqzpptnzhjnkqfsixpvk3xxlrpl +mqkhsdtbqqzgjb7149ninesix +1dbrrvjsx34cbdxhqpzbfhtgpm9three +3onesix6eight +five34 +6qcv9nzngtsjv +9lttthreegttzjstt +four47 +95onetwoftdzmhsfmhbnblnine +chcsqhnp72qjdqtjxzc8fourfourfour +fourfive28 +81eighttwoqdjkmnleightdbmzz +vzzqpjx8 +qq1six +qbktqgrjcqq75 +772 +njvnhnzdz6threefivetwonelt +pcfzzjfhqkxhfpztpv7 +fivemztfourqjrtngrkpcbfc3qq +bfjhbm6ghtdpsmlvb86eight +94883 +6onegbxmcqmdfive +sevenonesixcngsrgcz9 +sevenzhxktd22fourgnr9 +tdxpzvggnlpdxxrcpsp3threexjrldrkmp +34kjtbsxppmxfoursixlbzgqxbltv +fivethreezfive2 +7seven1seven +4fhvxbg58eighteightone +631gqtwosix +xqn1chrcjjrqxp4threezjcd +jtssvppxlnsix49rfvjdzntwoone +sevencmpmdnczcfdprgfdbjnzzkgnine26 +hkbnggqfk7mfmfsone68sxpdmf +fourtlhsmksvzg4foursixseven +pprkj3sixseven +kzxjpdczxhxckxtgbbtwothreethree5dztmdfrlfivedgcfmmrt +hjvrdhnckspl5eight3three9 +74two95eightfourdkzzlkxszm +one7tbfour1cpjtrxsqgvbjtpbcct2 +fivefour4hsix8hjsxrmpqqxnkhmjseven +nine8fivehvmnxsfour7four75 +sjfrjr2ds +fivefourqt95vbndnzns665 +sixssbznthreethree6f8lnzcgpprl +ninepfbpfnflrfnpzhq9 +nh9fvrldpkjmq7six5p +75zsixnqbhrcbpmddshjfqthtq +sevennine377fourfrtvpqrseven6 +97eightnine +52fiveonetrq5 +threehgjqt7rvfsljtzkfour +tjkxc1 +jthreerqbpzpzmeightntjlrhdmfour2 +fourmgv2three4one +four91 +9bone +oneseven1sevenpdvdqhlq +xlhbqxcpfp7 +twothreefive43 +1ctjmfn9one2 +htfivesixcdkjrjbr45eightseven +onefour8rrhltfl897 +37ljvmcnjhonevxkqpjk +3891sevencfgjhh45 +twoone5tbznkdmv1fourpltvnnsvk19 +55bcnzbfggd2 +17zpskbgeight2dx3 +vbdshtdkxllttwo65 +tzvmcmltfphztpplrxjxpbnine3qvktlctfrpxncb +1sixppzlfvkbnm +eight1gdvlzrfkc +four74fivefseven +hlzlvnjrp9312jxeightnine1 +sixsevenkjpbz5sevencksb2 +9rtvlgdpfnmgzdzcjggsq7sevendxglftncmbninefive +eight8gxkrbkgcvbxbbxlonefivesevenjnffhjsk +99twobdmcnfthreevr +sevenlpjbbthree58 +eightthree32 +14fhxsqshmjbngrhdzvxvvhxgvqnlxnnvrsgsheightninenine +6twotwo +kr573eightseven78 +9six18 +2seven8six1qdvf +ones9three1lcqj2 +sixbfour6gbd +tfpvtbbjtwormxz6 +49eighttwoonesixeighteight +fcrhntggdvseventhreeeight9foureightxjxqvtb +oneone3rnngppxj8fzpsncjmzn +9fiveonejjdpthreetwo9 +sixsixjzckvmbbszsl1nrrfphj5 +zgjvnttth7sbmtxczggxbbqpzq467 +3mhslltk +9six16three79three +fxprlhbm3zljzd49gdsrtt +6eightoneseveneightfourrfive +fourfive11six +6gmrfxnsmnnljf8ninenlctx +seven5threehninecnhbkgbnvqbsfx +pxzccjqz8 +xgzpzljnfour7threethrxskjlz9 +fourseveneight292eightone +5bjpzjseven21four +xbtf88nine +6nfjllxh4 +67five4c8 +1qbzdkvmlrzgj3rzqczz4 +mjjzblg3 +x3five +jrpxsrqgr9hqsddmscmsrsbhkdc63eightxfscd +6eightsixone +5dggfbgclz7htvpcx1 +onethree46psdlfpgbsix +lqbnine978 +7nrrdzfksbtjlnbgfxttzfourstqkd +mtfptwo9six23hctpbrxtbx +eightfznvmmp7cllpkggknttwoxbbv +rggdrlsgcm2hdljxzjhjrfour83 +vhtmhvjdzzkzmzqgr7fourfourfourgzbqqpz +dfjctmlnkqzzjhhltpvhfmhsixvclfive7vgm9 +nine642sevenseven9mblrhxxktfhdhbcztvx +4rzrdfmtvlpthree86 +qkdoneighttwo1one3 +dnnvkvpcmn2cltbzc6five59s +sixsnzpnfplrn38hthhbfive4 +tsrxkzfxcdgckxrgzkmrctqvrngfnvdscnpc6jgszldglnhsg +vvtfhtgxjbdgznjjzqjjclfg1lvpdcpjsevenseven3 +xrhbrpg8zb8 +4nine5qfxlhmvzsjsbznmklseven +lffl2six733jtrfrs3 +7nbvpkdpzjtc8qckhbqfsqqgz +cfljnthreecninedt2xldzbgl5six +nrggf7four +hbkpxrxonetwo969fivethreegspmzcfr +jjpmzlzfvqbvbzqcz2eightninepfqjkjrkfivebzcthgrpqx +xsccsbmcninefive4kkrvrht +sgnzzschtwotwofzjt9seven +8tworpzncglnmninenjmf368 +2one1zjtgllvsone +7nine4nqqxnvvnsbsevenvddcvfdr +three117 +shcjhvrfourpthree12 +1zxcxninegpdfrfhzlbzg +7eight9gkkfbdhplnmjkksbqzp6htmbhg +sixeight76sixfive +5twonemt +three86 +4three52psgzhnlhgvgcsbzbleight5oneightkj +cnztwone1 +six9sgx +79clrpmeightninepkh39 +rmfplpsixsixlvrdbqgpljgl5onetwo3 +7ninelznqjxjgtwohhk6five +1659two7onefive +rskpnrmfbbghttvklkg773fourczdqeight +xftwo4 +2nine5ccrgsmfcseven9seven52 +8sixseven +k33threehgqtljcdqxkl +hfgdvngttzfivecflmcc31three +eightninethreensjxxlzhgk9b51x +ninejktfhnnphkkgm2dms5dpxrbcd +eight7skzllgxgmkd1three4thhdpsjtvnq +7ninehhhdngbxjvvxldvbrhzrbvntl2 +pxgsixone75llslx +31tgrvtvvlbhnshjfgnqc +knzgkjfckf2sevendfive +bmxcnznineeight9dvkbngzmxz +gzqdjfsxq9pbseven +212 +h3 +9sixfourbrfsfivekttxzhrmdsppps +3vxtbtrzqzxfhgsksbvqd +9lbxdjmckrhfgjqlnsrrfzqxktqkrmmjshfnine +7pjmmxdcffxgspeightgpdcftjtdxjgdrfthree +t84ninefive4 +fgfour63sevendmtrrc9 +64three +btjnc3g6f3one +pm9 +threefourvjmsx5four +14one2rtcccqc +jhcckpv84xntpzdn +rpjrhgddzfvrzpqnfg5twoseven3threehvcmnkreightwotl +74one +six4ninesnbxlonesix5three +kfxjzjone76xppxgddstgfhxphpffrjlone +sixthreedsdccpqff4 +4951 +zszgqjxbx7 +three4pqqvfzf622 +vc77threetd +sixlbglxqhn52 +1sgktgvxp +bdsonekxsevenpgssslcq3fgp7 +pvnxnhdjmndnhthreefive49 +kgvkszsixone4 +3mjvqjpglzhphg67ninehnnine +one6xvvnvkxp4dfcxv +eightfour7threesevenp +7ggdl1 +ztwonethree427ninetnmzntj4 +fttwone258seventwotwo +75sixseven59 +7kmfzqgjpqkpdhthjlseven674xdgmphfk +eighttwo6five7 +3eightwoxg +22434five +khjmcpzvfpr9 +3rrzqzlrljgcvdnxj6four8six +63qrgqklszpgthreefkpzx +574htclbtzfivetwo +jtwofqfpkflzt9 +xnjzxpmmdln4lzlmlk41 +6jdzjjmz7jt7seven8fourkgttztbsktwoneps +72s166zpslq5 +3553lhkdcxvhqbddrfdbc5two +4gktbmone +fouronefives3qhglmzttwoeightone +one87rxkkhfrjfrpdjjt485 +one437nine +119one +5lseven87nmxxqvhmn +pphfmcfhxlsevensqdmtvtpvq1 +18eightfivefour +three98 +4onephzhtq4qc5four +26zglkpjvz3twoeight +7mxkdrbpnk29 +ppeight15 +9jnprvtmscsixbbpsixfivecktgvdpf5 +lbftvcngvkvxf5cmmrqljjb471 +eight3knrvtwo +one6pvbpkqkpdsixbv +eight2onethree6eight +5rztcbtfjkb2twoeight39hxppvpxqg +8threemlllncmfourthree +vhtsmncssixbmlpggvmlzdxbczgc1fxrgvsbhsrbs +ninebnpv7575three +4mthree +fourtwo1qrbfourjrjmlxjr +3jbkcsrqznc8 +pcgrxgf4eight54 +seven5mjk +ninenine6vmcmlxmcrbvq1nine8 +sixone2ninesixrdqfgpxddzthreetcheight +899lfbzhgn151 +46nineone +7one2qthree +nine2hjnfourninesixvblnqbgctwoeight +qkggsnnthrxnrccbgs583 +351zkxqtmbd9sixthreegjjxt +zrchlhmqcthreeninesmxz9 +219fivejrxgbjvvcxkjtwoseven +8threebzzsxdx +nine249ninefmlhj8rfour +16zfljhfdcmkthree +7sixjvdqgpvhmndpmhhzsphceight +two2zjqc4nfd6732 +41threeseven1fourseven +296fourgnq7three +tbzdhbhs7ntshptcgrbkjspjdz +55qcrmclmcck9 +25mhmtb3dscmjbhgv3four +bjmhkxsffourhnxkxv1 +jvntlbn5fivegjdcjl +7gndbbbneight +357623chktvtfzvf +169plhsshseven +nhgsrxcdfktpbzf9vpppxzkznine9 +xrdnlbmtdeightone3threeeighttwo +bnnqzcfoneeight2hhdfkrrqzt +342tlmjgtfcnine +47rvtfqlzgmjlqbqthree +7gnmxplrjbvfour6 +mcgbldbhlh1eightnine +two9eightxnpdj61kzcdpnpnpfgsdrbcflh +6541fourpkdplksnkpvkjxpdnvfttlfdflz +kfour7 +x4tpbnnvnjlseven +55nineninesevenzttsztwo9nlcqjq +1drhjrzsbvpl +mpknzhj9vmqckrpznqthreesj9 +211zqgpdlmpn +4jxzrztg5onehnzvdbtcqdtsnkqtdvsd1fournine +bvcrcz5four4 +4nineninecfhgtdphone9 +zbkjgbshqqkrcb3qmtfmdrdcckcsxshjb2 +1eightrblhbhljvkpshmrxc5 +hjcrrdsvnbqktxrgmq9nqgcztbv +6lzsixl5one +twofivesevenfivesixonenine5seven +fourmldkgnzb8djlsdmjnzxbmmvpf59seven +8hnfkknnsrhm +three2krtqmmxqzs4jbrnrtrxzxsllblbkjmthcrlxxkdlh +mglfmvvnthreefour1 +onehxz4fourhqcfvdlhg +zrzqdgs5jsttkrone +sevenrdmhnldsmdnineqfrgjhmhnnqkztxzm7 +63seven +2seven3mrsltqb17 +fdbtvthmmrb5gbxvcmtwosixt5five +eightlzglvxfone5five7dlqpmseven5 +dmzdkbfive98onefivehhbljrnz +eight8ninefour +24nvmftwofive +seven3onefourrmgkxtcsfour +fgpxmqqsfdrk8eight8zhcrzvrzmdxbbfive +eightonetwo7ninesjsrlr +rrkrrtnkq941sixone +threeffspgv3eightfivesix5 +lthnrlgfcnine2scdcvnineseven +sx86 +cxklrckbz5lsqq28 +5seven298 +933five5cmddfj46 +hrhhs76343 +one3two4fourst4three +nine3three +dhtscvgm9foureight81vp +btpeightpzbtphdlcm8fiverknbrhthreelxndqcv +one96six45tm +fourninetkdrvnbznnine22 +vxeightwothree5cd3jcnine +seven5one4one7ninefive3 +nflkr2dlmtsrkrgkfvsixxvznjbvz3btxkhhqcc +eightrtz6jslqxsixoneeightnine +xmvxn5 +tgnlrmjtkjdpbnpmsixbxfnl7sixone +htwonezcshpqgsix73qlgdqnkjskjthree +nrlkxq6fnfourseven +zmrlngjdhc41four4fourptrhddthreenhzv +n9twogdrzkcsbk8hph6 +436sevens7cnkrrk +6qkdvkhtwo +mztkszm39 +fourtwo4mqhjkkdzgffhqfktwonine +hbthree2hvpbznlgrxfgkthfour8 +34prfzlx4three +29zzfdvghll9three6 +two83 +one982 +36hhgdf7 +seven6ninednnine9mbtzfm1 +one38 +seventhree5lsjxknqtdsbtxrkone +eightmfctkbc9jlxgdnchlq9one8nine +p371b +9ninejszqsnpkfbthree1h5xscpfzvl +three9ljd +fbbv9 +five582 +58dctdbhbninesixczhd +qp4 +6pfqdeight +3onethreekqnnlt +m4fgbmdtwo3 +twodkrmtqs4 +9three6 +six1798nineeightsqpvpsmcbmh +9qxxmrmbnine3fivefourfive3four +one7sevenone78ninetwozqps +973keight9seventwo +keightwothreethreeh6threeeightlnqdzhlt +five94 +mqlltnfive8eighttwoqhztggvqqkcxgvgmch +2kpnsevenfive6 +gtmszpsjmggr3 +pm126one3 +rvcqbtz9zjtndbxlrdcxzf3 +mkninekhmtxzbjpd8threeeight7eight +5274xm636 +bleightfive9vdddzjdntthreerxtvdslrvbcvf +9eight4sixdqzrltgpzlpxtcrzxbhmsmdtwothree +cpneightwofive3fourtwo +one61threejxbjvsltxzpntpv +19581 +six2qllhlxhr1foursixz8 +6278teight3three +8gstxqdngxzlxvnvphlsznr3kknftvzxcqqbrfteightthree +4jlzjvjfltwo7pv +7dvt +blhsm4xcrbrf68ninezvhhtqgphnzxlhl +9dvjvfourtcthree +onethreenfkgrvsevenkczctlgkt7 \ No newline at end of file diff --git a/2023/02/02.py b/2023/02/02.py new file mode 100644 index 0000000..3fed660 --- /dev/null +++ b/2023/02/02.py @@ -0,0 +1,50 @@ +with open("input.txt") as f: + lines = f.readlines() + +def parse_game(line: str) -> tuple[int, list[dict[str, int]]]: + prefix, turns = line.strip("\n").split(": ") + game = int(prefix[5:]) # remove "Game ", yielding just the number + draw_list = [] + for turn in turns.split("; "): + draws = {} + for color in turn.split(", "): + v, k = color.split(" ") # count, then color + draws[k] = int(v) # map color -> count + draw_list.append(draws) + return (game, draw_list) + +part1 = 0 +R = 12 +G = 13 +B = 14 +for line in lines: + game, draw_list = parse_game(line) + possible = True + for draw in draw_list: + red = draw.get("red", 0) + green = draw.get("green", 0) + blue = draw.get("blue", 0) + if red > R or green > G or blue > B: + possible = False + if possible: + part1 += game + +print(part1) + +part2 = 0 +for line in lines: + game, draw_list = parse_game(line) + R = 0 + G = 0 + B = 0 + for draw in draw_list: + red = draw.get("red", 0) + green = draw.get("green", 0) + blue = draw.get("blue", 0) + R = max(red, R) + G = max(green, G) + B = max(blue, B) + power = R*G*B + part2 += power + +print(part2) \ No newline at end of file diff --git a/2023/02/input.txt b/2023/02/input.txt new file mode 100644 index 0000000..c30762a --- /dev/null +++ b/2023/02/input.txt @@ -0,0 +1,100 @@ +Game 1: 12 blue, 15 red, 2 green; 17 red, 8 green, 5 blue; 8 red, 17 blue; 9 green, 1 blue, 4 red +Game 2: 6 red, 6 blue, 2 green; 1 blue, 1 red; 6 green, 1 red, 10 blue +Game 3: 1 green, 2 blue; 7 blue, 4 green; 2 green, 1 blue; 10 blue, 4 green; 4 blue; 1 green, 7 blue, 1 red +Game 4: 16 red, 12 blue, 10 green; 15 red, 5 green, 6 blue; 10 green, 15 red, 12 blue +Game 5: 2 green, 2 red, 9 blue; 1 red, 5 green; 4 green, 12 blue, 1 red; 5 blue, 8 green +Game 6: 17 blue, 3 green, 4 red; 6 green, 16 blue, 3 red; 2 red, 15 blue +Game 7: 4 green, 10 red; 1 green, 4 red, 4 blue; 4 blue, 11 red +Game 8: 8 green, 4 blue; 17 green, 4 red; 10 blue, 5 green, 9 red; 9 green, 8 red, 3 blue; 9 green, 5 red, 2 blue +Game 9: 4 red, 2 green; 7 blue, 3 red, 3 green; 3 green, 7 blue, 3 red +Game 10: 3 green, 2 red, 2 blue; 3 green, 11 red, 1 blue; 16 green, 11 red +Game 11: 2 blue, 18 green; 12 blue, 1 green; 2 green, 6 blue; 1 red, 4 blue, 20 green; 14 blue, 1 red, 4 green +Game 12: 2 green, 1 blue, 7 red; 11 red, 3 green, 6 blue; 1 red, 2 blue, 3 green; 4 red, 2 green, 5 blue +Game 13: 4 red, 17 blue, 5 green; 6 blue, 2 green; 12 blue, 4 green, 2 red; 5 green, 9 blue; 5 green, 3 blue, 3 red; 4 green, 1 red, 7 blue +Game 14: 4 blue, 18 green; 3 blue, 3 red, 13 green; 5 blue, 10 green; 10 green, 2 blue; 1 blue, 14 green; 3 blue, 18 green, 2 red +Game 15: 1 green, 2 blue, 1 red; 1 green, 2 red, 1 blue; 1 green, 2 red; 1 green, 4 blue, 4 red; 6 blue, 2 red, 1 green; 3 blue, 2 red +Game 16: 3 green, 2 red; 4 green, 1 red, 8 blue; 5 blue, 9 red, 3 green; 7 blue, 19 green, 18 red +Game 17: 10 blue, 9 red, 7 green; 16 red, 11 green, 11 blue; 8 blue, 3 green; 12 red, 1 blue, 10 green +Game 18: 11 green, 11 blue, 5 red; 7 red, 11 green, 13 blue; 5 green, 9 red, 6 blue; 9 red, 16 green, 17 blue +Game 19: 8 red, 3 green, 16 blue; 13 green, 8 blue; 7 red, 8 green, 1 blue; 13 red, 3 blue, 7 green; 6 green, 14 blue, 13 red; 15 blue, 9 green, 13 red +Game 20: 1 red, 7 green, 5 blue; 14 green, 4 blue; 10 green, 11 blue, 2 red; 2 red, 3 blue, 1 green; 1 red, 5 blue, 8 green +Game 21: 10 green, 12 blue, 6 red; 17 blue, 6 red, 6 green; 12 blue, 9 green, 4 red; 5 blue, 3 red, 4 green; 6 green, 7 blue, 5 red +Game 22: 1 blue, 3 red, 16 green; 4 red, 1 blue, 3 green; 12 green, 1 blue, 2 red; 12 red +Game 23: 2 red, 6 blue, 1 green; 11 red, 13 blue, 4 green; 8 red, 3 blue, 6 green; 2 green, 8 blue, 2 red; 7 red, 11 blue, 4 green +Game 24: 4 red, 12 green, 2 blue; 8 blue, 15 red; 1 blue, 10 green, 8 red; 1 green, 2 blue, 6 red; 10 green, 8 blue, 5 red +Game 25: 2 blue, 11 green; 17 green, 1 red, 2 blue; 2 blue, 3 red, 1 green +Game 26: 16 blue, 11 green; 4 green; 9 green, 4 blue; 10 green, 5 blue; 1 red, 5 blue, 9 green; 5 green, 5 blue +Game 27: 10 green, 2 red; 5 blue, 1 red; 6 red, 5 green +Game 28: 3 red, 5 green, 10 blue; 1 red, 5 green, 2 blue; 6 blue, 2 green, 2 red; 6 red, 9 blue, 1 green; 3 red; 3 red, 2 green, 2 blue +Game 29: 8 red, 18 blue, 5 green; 1 blue, 8 red, 2 green; 2 red, 4 green, 18 blue; 6 red, 4 green, 7 blue +Game 30: 1 red, 18 green; 11 green; 4 blue, 5 red, 14 green; 3 green, 8 blue, 2 red +Game 31: 1 red, 5 blue, 17 green; 7 blue; 10 green, 8 blue, 1 red; 11 green, 4 blue +Game 32: 5 blue, 15 red, 12 green; 6 red, 8 green, 8 blue; 2 red, 14 green, 3 blue; 4 blue, 15 green; 7 blue, 12 red, 7 green; 2 blue, 9 red, 7 green +Game 33: 13 red, 2 green; 1 green, 7 red, 15 blue; 1 green, 14 blue, 13 red; 8 red, 2 green; 12 red, 14 blue, 10 green; 8 green, 16 blue, 10 red +Game 34: 11 green, 9 blue, 2 red; 4 red, 1 green, 8 blue; 4 blue, 7 green, 4 red; 7 blue, 1 red, 8 green; 9 blue, 1 red, 4 green; 2 red, 10 green, 4 blue +Game 35: 3 red, 9 blue; 11 blue, 3 red, 12 green; 7 green, 10 blue, 2 red +Game 36: 9 blue, 3 green, 3 red; 5 blue, 1 red, 3 green; 2 green, 6 red; 9 blue, 7 red +Game 37: 1 red, 7 blue; 4 red, 1 green; 1 green, 9 red, 9 blue +Game 38: 1 green, 12 red; 4 green, 12 red, 4 blue; 5 green, 10 red; 6 red, 4 green, 3 blue; 4 green, 10 red; 2 green, 5 blue, 4 red +Game 39: 2 blue; 4 red; 4 red, 5 green, 1 blue +Game 40: 7 red, 2 green, 17 blue; 12 green, 1 red, 7 blue; 9 green, 2 red, 8 blue +Game 41: 18 green, 5 red, 4 blue; 20 green, 17 blue, 5 red; 3 red, 7 blue, 7 green; 4 red, 19 green, 18 blue; 20 blue, 20 green +Game 42: 1 green, 6 blue, 1 red; 5 blue, 1 red, 3 green; 3 green, 7 blue, 1 red +Game 43: 4 blue, 6 green, 13 red; 16 red, 7 blue, 8 green; 4 green, 16 red +Game 44: 5 green, 4 red, 13 blue; 4 red, 12 blue, 3 green; 6 green +Game 45: 1 red, 17 blue, 15 green; 6 red, 3 green, 9 blue; 5 green, 1 blue, 7 red; 6 blue, 4 red, 4 green +Game 46: 1 blue, 11 red, 1 green; 2 red, 2 green, 1 blue; 4 red, 1 green, 1 blue; 2 blue, 7 red, 3 green; 11 red, 3 green +Game 47: 2 red, 1 blue; 1 green, 1 red, 1 blue; 5 green, 1 red +Game 48: 9 blue, 1 red; 1 green, 2 red, 11 blue; 2 red, 6 blue +Game 49: 5 blue, 7 red, 17 green; 5 red, 4 green, 7 blue; 1 red, 3 blue; 4 red, 12 green, 6 blue; 6 green, 4 blue, 3 red +Game 50: 11 blue, 12 green, 1 red; 8 green, 7 red, 9 blue; 13 red, 12 blue, 10 green; 5 green, 10 blue, 3 red +Game 51: 8 blue, 1 red; 5 red, 2 green; 9 blue, 6 red, 4 green; 4 green, 1 red, 13 blue; 15 blue, 3 red, 8 green; 6 red, 1 green, 4 blue +Game 52: 2 blue, 1 red; 1 red, 4 blue, 5 green; 3 red, 14 blue, 2 green +Game 53: 8 blue, 10 green, 11 red; 5 red, 4 blue, 19 green; 8 red, 3 blue; 3 red, 3 blue, 2 green; 4 red, 4 green +Game 54: 3 green, 17 red; 7 green, 13 red, 5 blue; 11 blue, 10 red, 10 green; 3 green, 19 red, 4 blue; 11 green, 6 blue, 19 red; 5 red, 4 blue, 9 green +Game 55: 3 blue, 4 red; 1 red, 1 blue, 2 green; 4 blue, 2 green, 4 red +Game 56: 10 red, 3 green, 5 blue; 2 blue, 2 red; 7 red, 3 blue, 2 green +Game 57: 12 red, 1 blue, 8 green; 1 blue, 3 green, 10 red; 5 green, 8 red +Game 58: 6 red, 4 green, 2 blue; 7 red, 6 blue, 14 green; 5 blue, 6 red, 2 green; 2 red, 4 blue; 7 blue, 12 green; 7 green, 3 blue, 8 red +Game 59: 6 red, 5 blue; 5 blue, 1 green; 1 blue, 6 red; 4 blue, 2 red, 1 green; 3 red, 2 blue; 3 blue, 5 red, 1 green +Game 60: 1 red, 12 green, 2 blue; 4 red, 5 blue; 12 green, 1 red; 5 blue, 13 red, 17 green; 15 green, 1 blue +Game 61: 10 blue, 18 red; 4 blue, 1 green, 14 red; 4 blue, 2 green; 2 green, 6 red, 10 blue +Game 62: 2 green, 13 blue, 8 red; 7 green, 5 red, 8 blue; 5 red, 8 blue; 3 red, 5 green, 4 blue; 15 blue, 5 red, 6 green +Game 63: 6 red, 7 green, 2 blue; 2 red, 6 green; 2 blue, 4 red, 5 green; 1 blue, 2 red, 5 green; 4 red, 8 green; 9 green, 2 red +Game 64: 4 red, 4 blue; 7 blue, 5 red; 8 green, 5 red, 6 blue; 2 red, 3 blue, 1 green; 7 blue, 9 green, 7 red; 11 green, 2 red, 3 blue +Game 65: 1 red, 11 green, 9 blue; 2 red, 5 green, 17 blue; 2 red, 3 blue, 6 green; 2 red, 6 green, 14 blue +Game 66: 7 green, 5 red, 2 blue; 5 red, 7 green, 2 blue; 6 green, 3 blue, 15 red; 8 green, 20 red, 4 blue; 8 red, 8 green, 3 blue; 3 blue, 11 red, 5 green +Game 67: 2 blue, 2 green; 6 blue, 1 green, 3 red; 3 red, 7 green, 4 blue; 1 red, 1 green, 8 blue +Game 68: 1 green, 3 red; 2 green, 1 blue, 5 red; 2 red, 2 green, 1 blue; 2 green, 3 red, 1 blue; 6 red, 1 blue +Game 69: 4 red, 2 green, 3 blue; 14 red; 3 blue; 11 red, 1 green; 13 red, 3 green, 2 blue +Game 70: 1 green, 1 blue, 6 red; 1 green, 4 red, 1 blue; 6 red, 1 blue +Game 71: 1 green, 8 blue, 10 red; 6 green, 3 red, 2 blue; 14 red, 3 green; 9 blue, 2 green, 2 red; 7 blue, 5 red, 1 green; 6 green, 5 blue, 10 red +Game 72: 2 red, 10 blue; 1 red, 7 blue, 4 green; 1 red, 3 green, 6 blue +Game 73: 6 red, 6 blue, 5 green; 1 blue, 11 green, 7 red; 10 red, 7 blue, 2 green +Game 74: 4 green, 2 red, 3 blue; 1 red, 6 green; 2 red, 4 blue; 1 blue; 2 blue, 1 green +Game 75: 10 red, 5 blue, 1 green; 12 blue; 2 green, 11 blue, 9 red; 1 blue, 14 red; 2 red, 2 green, 13 blue +Game 76: 9 green, 1 blue; 8 green, 2 blue, 7 red; 4 blue, 7 green, 4 red +Game 77: 14 red, 3 blue, 10 green; 3 blue, 7 green, 2 red; 5 red, 7 green, 3 blue; 14 red, 8 green, 3 blue; 9 green, 5 red; 2 blue, 7 red, 15 green +Game 78: 5 blue, 9 green, 8 red; 11 green, 9 blue, 4 red; 8 red, 2 blue, 10 green; 3 blue, 7 green +Game 79: 4 red, 6 blue, 10 green; 2 blue, 17 green, 15 red; 15 red, 6 blue, 14 green +Game 80: 2 red, 8 green; 6 blue, 6 green; 1 green, 3 red, 8 blue; 5 green, 4 blue, 3 red; 3 blue, 1 red; 7 green, 8 blue, 3 red +Game 81: 5 blue, 1 red; 10 blue, 7 red, 3 green; 4 green, 1 red, 10 blue; 8 red, 4 blue, 3 green; 11 blue, 9 green, 1 red; 6 red, 10 green +Game 82: 1 green, 2 blue, 1 red; 2 blue, 1 green, 2 red; 2 red, 8 green; 3 red, 3 blue, 5 green +Game 83: 3 blue, 4 green, 5 red; 6 blue, 5 red, 5 green; 4 red, 2 blue, 5 green; 2 green, 6 blue, 5 red; 1 red, 2 green +Game 84: 14 blue, 1 green; 9 green, 3 red, 1 blue; 5 green, 10 blue, 3 red; 9 green; 6 green, 18 blue; 2 red, 8 green +Game 85: 1 blue, 7 red; 12 green, 7 red, 5 blue; 9 blue, 6 green, 7 red; 10 red, 7 green, 1 blue; 3 green, 6 blue, 7 red; 10 red, 16 blue +Game 86: 9 red, 10 blue, 2 green; 2 red, 12 blue, 9 green; 11 green, 2 blue, 3 red +Game 87: 1 blue, 7 red, 9 green; 1 red, 6 blue; 3 blue, 12 green +Game 88: 1 blue, 4 green; 4 red, 13 blue, 1 green; 7 green, 4 blue, 3 red; 2 blue, 4 green, 5 red; 4 red, 7 green, 10 blue; 1 red, 7 green, 13 blue +Game 89: 5 blue, 8 red, 1 green; 7 blue, 2 green, 7 red; 2 green, 8 blue, 11 red +Game 90: 5 blue, 1 green, 11 red; 6 blue, 8 red; 2 red, 3 blue, 4 green; 2 green, 4 blue, 7 red; 3 blue, 8 red; 6 red, 3 blue, 1 green +Game 91: 2 green, 13 red, 9 blue; 12 blue, 6 green; 14 green, 10 blue, 3 red; 13 blue, 7 green, 5 red; 1 green, 9 blue, 14 red; 10 green, 8 blue, 17 red +Game 92: 10 green, 3 red, 17 blue; 13 red, 7 green, 15 blue; 9 blue, 8 red, 4 green; 1 blue, 8 red; 9 red, 1 green, 19 blue +Game 93: 1 blue, 7 green, 4 red; 2 blue, 8 green; 10 red, 10 green, 1 blue; 10 green, 2 blue; 3 red, 3 blue +Game 94: 5 red, 8 green, 14 blue; 4 red, 7 green, 20 blue; 11 blue, 4 red, 13 green; 18 blue, 1 red, 3 green +Game 95: 5 red, 8 green, 11 blue; 12 green, 5 blue; 4 blue, 14 green; 7 green, 9 blue, 5 red; 3 red, 4 green, 7 blue; 3 red, 12 blue, 3 green +Game 96: 10 red, 12 blue, 9 green; 4 green, 8 blue, 4 red; 8 blue, 3 red, 4 green; 6 green, 10 red; 2 blue, 3 green, 15 red; 12 red, 2 green, 2 blue +Game 97: 13 green, 1 blue; 9 green, 1 red, 1 blue; 6 blue, 10 green; 1 red, 6 blue, 11 green +Game 98: 2 blue, 14 green, 2 red; 7 green, 1 blue; 1 blue, 1 red, 3 green; 2 red, 1 blue, 15 green; 1 blue, 2 red, 10 green +Game 99: 3 green, 8 red, 7 blue; 6 red, 13 blue; 12 red, 4 green, 4 blue; 12 red, 8 green, 3 blue; 11 blue, 11 red, 4 green +Game 100: 2 red, 13 blue, 1 green; 1 green, 12 blue; 1 red, 5 blue, 1 green; 3 blue, 3 red \ No newline at end of file diff --git a/2023/03/03.py b/2023/03/03.py new file mode 100644 index 0000000..5e63a8b --- /dev/null +++ b/2023/03/03.py @@ -0,0 +1,61 @@ +from re import finditer +from collections import defaultdict +from math import prod + +with open("input.txt") as f: + lines = f.read().split("\n") + +### part 1 + +symbols = { + (i,j) + for i, line in enumerate(lines) + for j, c in enumerate(line) + if c not in "1234567890." +} + +part_numbers = [] + +for i, line in enumerate(lines): + for match in finditer(r"\d+", line): + j1, j2 = match.span() + number = int(match[0]) + window = { + (i+x, j+y) + for x in (-1, 0, 1) + for y in (-1, 0, 1) + for j in range(j1, j2) + } + for _ in window & symbols: + part_numbers.append(number) + +part1 = sum(part_numbers) +print(part1) + +### part 2 + +potential_gears = { + (i,j) + for i, line in enumerate(lines) + for j, c in enumerate(line) + if c == "*" +} + +parts = defaultdict(list) + +for i, line in enumerate(lines): + for match in finditer(r"\d+", line): + j1, j2 = match.span() + number = int(match[0]) + window = { + (i+x, j+y) + for x in (-1, 0, 1) + for y in (-1, 0, 1) + for j in range(j1, j2) + } + for cell in window & potential_gears: + parts[cell].append(number) + +gear_ratios = (prod(p) for p in parts.values() if len(p) == 2) +part2 = sum(gear_ratios) +print(part2) \ No newline at end of file diff --git a/2023/03/input.txt b/2023/03/input.txt new file mode 100644 index 0000000..886ff17 --- /dev/null +++ b/2023/03/input.txt @@ -0,0 +1,140 @@ +.........................3.......................................94...............806....................596.........793...........186...... +.../..........*574.587..*........161......904.......412.........*.................*.................................=.....637.%......*...... +..614..831..33.....*...........@....*398..&.....690*............183.........503..916..790................................*.....256....632... +.........*.................332..374......................%184...........467..........*....969.632.......26....457......440.........@........ +..........535...541=........*.......696..@..323..................93=.......*.......30......*....*......-........+.222$.......458.817....66.. +....*.......................885.....*...123.=...641...&188..577.......339..688.........287.684..219.........................+...........*... +...61........397...#386...=........313........-...&............*......*................@.............../.........621+....................169 +..............*.........34..................934..........17..168..320..263.........412.......$......966.....................303.....554..... +...............353.447.......@.....251............54....*........#.............149....*...871..964.................714.....*....403...*..... +...805......$......*.......632.....#...+514.944.....*....48..........*133.959.*....814...........-.521...........................*.....398.. +..../.......906.289...238.....................*................772........*...591......260.122......*........309...677...357.....790........ +........#................/.........450.....594.................*.......705............*....&.....676...@954.%....@....&.*................... +.....310..928...+.............488.*.............790.........286..982.........416*944..103.........................351...519...705........... +..............872.....+........*..820.....5....*.....529.........*...........................@..884......356*449................*..596...... +...................780......507.........$..*...936.............406...........*560..704....931...+....618..................%243.817...*...... +.386.....937.+904......*.............540...320............702.............118.........*............../.....445.....291.............899...... +........*...........930............*......................&......204...............243....*948.....*..........*...*.......512$.............. +......956....................$..788.487...........894.955..............................479.......709.........57....374................930... +............/534..260*33..680...............324...*....*......574......219................................................../934.......-.... +..261...........................*813....=...*..........378......&....-..%...198............................885.........666.................. +...*....../........905$......706......281...314...642......701....736.......*.................................*..........*...532............ +..235..400....670.........-........................../......................849...204...197..646...............548.......61.*.........538... +.............*.............927....340...........641..............................&......*...*.........137..144...............513............ +..400./285...16.......704............*896..836.....*..........738......102.&190..........89.137............*...$582....................&.... +...*.............763...#....541....................629...........*646.............295............368@....&..62........990...@428........955. +....218...650.....*.........%................269............669...........709.......+..810.............52........447...@.........784........ +.............=.....313.............*........+..........444....*.%.........................-.....225.......684...*.........../107...*........ +..66...643.......................87...770.........=.......@.122.495.......177.....226.974.........*.580..*......921....216*.........724..... +...*..*....................328.........../...460.325.....................+...........*.........198.....-.316...............912.............. +..882..421.......%766.........*..............................978*..........124.110.......$.....................467..............780......... +...........732.........531.....439...%...........................230..........*....396..126........................508...........*.......... +............/..........*.............401..69.........$.................630............*.....114.......959...81.............515..664......43. +......-............491..929.363*.............178..686.....546...................628...4.......%......+..............106...*.........*....... +...456....154..659...+..........111.*...........-.........*...............66.%...*......%...................583../1.*.....206.......439..... +...........&...$..........548.......560................431......752......@...574.534....303...843../.................844.................... +.........%.....................320%.......871*.....647..........*....................89.............981..................................... +.92....832.....194.804.270.992................388..................%..583*..........*......255..730.............................138..121.... +.../................%..../..*.........58.106......*..373.........107......964...52.910.465..*..*........15...@.....*14.=847...........#..... +......850...503......................*......*....411....*....674...............*...........532.124.......*.471..380......................... +......*........*...390..641......99...997..688..............-......403...6.....156.....................320................*721.............. +.......471....555..*.....*......*.../................749...........*......*..........92*756................336.....241.581.................. +...................904..762..681..695.&639..903&......*.........753........936...................683-..........921..*......654....7.470..... +.........16*494.....................................395..112...........=..................601..........+..........*.901.......*....*........ +................45...........77............$..636.........*...@593...670.........*796.270..*.......%..835.501...190......369.618.%.......... +......918..@....*....597...........758..550...$...895...688...................952.....*...761...176........%..............*......261........ +.....*......957.108.....+.....788................&..........221..........-308.....$..567..............562-.............963...833............ +....431.484...............35.+.....476.902.....................$.....495.......137...........880.199.......306+................*..725....... +..........*..............*.....312...=.....50-...687...274..........................-........%.....*.................*......930...*....349.. +.....197...748.........639........=................*..*.........601*.......19....995..............470.....81.954..684....82......872...*.... +....=................................996........457..208.403........379...=...............193..........61...*...........*....37.........248. +........155...................%........*.......................................689.211...+..........52*..................969..*....922...... +......*.........151......698.723.....175..10...........&............................*......852.486......442...900....934......60.....+...... +...103.896..142*.................430.....*..........-...743.........346&.................#..*...&........*.............*.........197........ +......................811........*..................813........802.............#333...167...916...856.....590..........658....-....-...563.. +..............838.275...-......529.............718.......502....*.................................*................284.....967.............. +...8....64.......*............................*....870......*.901......606.226...................534........773....*...............*43...... +....*.........57............338*142.......589.525....*...563...................745#......152..............%..*..298..206.................... +.....311.....=............................&.........309........630.....238................*.....345......701............*.....235....541.... +..................288...596...45...............953.............%.................@....379.746......-..%.........937....571...........=...... +161@................&......*.....47.=.........#......586.....&...281............764....*...............903.=810..-............837........... +............................944..&...650.............&....918.......*..74...............369....437&............................*........777. +......146...*..................................772*.................52...@......*895.@.......................371.......*76.....282.......... +......*.....278...696...........365....=334........786........879.=..........983.....877......@38........784..*.....255....&................ +.....132.............*.849........*........................%......783...553.................................&..663......297........419.440.. +.977...........839&.......=.393&.77....895*770............636..........................-803..353+......-.......................406*.....*... +...*.=....376......................................69..........&.....116*949.......................186..295............%.................833 +261...853...*...81........993.191.810...731..........*575......636..................306...........*............129....691....999*.+712...... +...........319...&..........*..*....*....-..903*187....................890....875......@........557............&............................ +...........................840..403.255.............*.......138.........*......../.841..................257........499.........*........%... +....430.....283.........................897......566.74..11...........705.641...................71*104.*...........*........197.782......290 +.....................605..........401..../....................690....................633...............957........739....................... +.280*135...706...........709.........*................388..............813............*.....906....%..................606................... +..............*.=965...............669.......944$..............................288.131.........-.183..594...............*..852..819......... +.......#513.676......667...............93..........#.....$.......984.............#.....511.....................172.283.323............+426.. +......................%....826........$...........709..91...........*....919..........*......................./....*..........%............. +....................$.......*....829........656......................400.*....................995.798.203..........107.994.....598.543...... +.........88.../..568.......194......*931.......*654..............*........533....................*.....*................+................... +............844................491.......642..................839.603.125.....777...96..24.312.........272................671.394.....532... +........85............/...@........*339..%......914...601.............+........*.....-....*......251.......29.....962.......+........@...... +...969...............916.265....630........791&....*.*..........$.........-166..307.................*........*543.&.............445......... +..........811.457...................942.........755..944.......108..254...................322.....695....250................86..*........290 +..........+....@............-871.......*....602......................*.......................*........15.=...........274.......637.......... +.....................&810........894-..130...*..........................................315...76.....+...............*.....55............... +..........................261.................894..582.....................................*............14....%...737.....*.........+....... +..375.987........803..69.*........&....80#................685.....386.....................602....10.....%......65........932./..742.24...... +.........@.608..*......*........563........630..947.................*..........234...728..........*..........................92..*.......... +.....89.......+.550....43........................*....471......286..517.510....../......*..........966...795............$.........813....... +.....*...651...............#.../573..569..........239.*..................*...........591.....935..........*...........536...536............. +.....344.*.............681..90........*........./......43.........../...473.....................=.....679..545.................*843......... +..........610.72.952..................850.......81.........733......895.....975..........132..........*........+898.......583.........656... +790=.@179...........*........$...............................&..............@....935.......#...270..621...................#.............*... +...................618....366...776..................143.......115.../..............*....*.......=...........306.........................369 +..............258................*...97........./967.-........*.....281...%............32.65........43.721.....*...........738...462*....... +..606........*................713.....*..................513............114..746...............................86.............*......507.... +......402.....200...983...............746...335......938........488.........*......$.649.............................214.......493.......... +........*..............*32.....................*381..*....46.......*..205..16...100....*.444#....&..522........896..*...............411..... +.......583........./................734..19..........795..*.....219...*.............804.......391......*............881................&.... +..............93....228............%.......*...985........936.......%..........=..+........................361.692................784....... +.....219.................808..........755..........233............348.......463....147..............162.....*.......464$.................... +.......+....&...876...+....*..461$...$.............*.....550...........456.............826.330.........*997..657.................763........ +..../......143....%...87...............225..160*8.66.......+.....#623..*..................*.......612............709...679*........$........ +.....271..................#.....610.....................................799......*....866.....965...=.456........*.........530......./...... +.........10...#495..508.521.......+......746.........165.........-978.........638.145...*.576*...........*......926.............468...267... +...........*........*.................&....$...........*...294..............$.........822.................535.........727.351............... +...671..233.......903....541.....421..760..............299.*..............570..............540.......947.............*....*...802........... +.....#........920.........*..455*...............942.........953..390..................365.....+.........*..........779...55.......293*...... +.................*........40......50..827........*..............*......................*..&.....-....374..............................80.... +......#...........636.274...............=.......72.............785...+596.............36..59...843............206..+625....%................ +......767.......*......*..........948..............*.345..................#..........................927..861....%........701...........64.. +.242.........476.363...936....347.*.........@.....41...............31...362.447...+902.....538........*.....*......+...........262&......... +......#.........................&.517..*911..791...................*......................=....187.....926.800...54......108................ +.593..829..............................................166.524=.....................+381........+..*.................468*.............&..... +..........766*......273...347.........347..........$...............836......436............843=....473..@.....=344...............573.675.... +..............279...%........*...786..........-..100.860..........*........*....421.....................414.................616...#......... +...322....496............334.648..*....75...520......*......881....87....120....$..............*.............79.............*..........*.... +.....*......*.....................367.............704.............................&..........59.542.........*.......-992..53...811..192.556. +...308....485...948.......................383*559........282.......15.........298.774.......................377...................*......... +...............+.......348........................&.809.-.....249.......699../............740..650...584...............801*563..721..470.... +.........343..........................970...324.782................324..*...........380...*...*......*....-.........................*....... +...627$....*...713#.....799...420........*....*......................*...24..........$..131.......148......245....94*781...%.......302...... +........698.........635.+...............644..593.%......784.....-....644......................409........&.....*...........952.............. +.999.................*............................627.........866..........418..........483*.....$....227...248.665...265.......222...&..... +...*...............320...396......%......................77........186........*991..................*.................*...232....*....255... +..363..35...=39............*.......831.......892.........@...=..+........268..................513..373.....875.......48....../....680....... +.........................259.............374*...............137..482.432...&...276....132........*.....798...&.................16........... +..669*246.......................491.............+...+..492...........................*.........=..603.@..........849........................ +...............429.220......-......*..........928..304...*......177................741...482.204.........*.........+....=........36......... +...218..449.......*..........214...620.................827.252..@...689...................*......598..460.473...........341.704../...434.... +......*....*548.....-679.149.................................%......*...371..........998..815...*...................................&....... +.......403................=.........166............................741.....&........%...........329.............62..............*........... +..706*......991*738..347.....571...*....983..........+..208...319...............406..................175#......*.................891........ +......392...........*...........*.409.....*........72......*.-.........233.......*...........................478.............256............ +...................559..................-.540..734........6....*.......-......771............398.729.............928#..+.................... +.....603.......472................%...892..............=....314.684.......712............206......+.....657.%..........844.584.456...=...... +......*..........*..#..........801...............738...524.................*........817.......+........*....57.............*..........749... +648..799........517.999...............#...........$..+.....................742..516*....939=..694...945..................863...480.......... +..........700........................994....314......214....105.............................................#....137............*...522..... +...153.....*.........685..283................*...151........*....#....232......$.......99.92...863....*.....567.....*.285.....69.....*...... +............205.........*..*..............275....*.........220...644...*....293.........$..%..*....337.91...............*.............963... +.......................844.32......449..........932....................869....................77......................288................... \ No newline at end of file diff --git a/2023/04/04.py b/2023/04/04.py new file mode 100644 index 0000000..eef14e4 --- /dev/null +++ b/2023/04/04.py @@ -0,0 +1,29 @@ +with open("input.txt") as f: + lines = f.readlines() + +part1 = 0 + +for line in lines: + _, card = line.split(": ") + winning, yours = card.split(" | ") + winning = {int(n) for n in winning.split()} + yours = {int(n) for n in yours.split()} + how_many_wins = len(winning & yours) + worth = 2 ** (how_many_wins - 1) if how_many_wins >= 1 else 0 + part1 += worth + +print(part1) + +cards = [1]*len(lines) + +for i, line in enumerate(lines): + _, card = line.split(": ") + winning, yours = card.split(" | ") + winning = {int(n) for n in winning.split()} + yours = {int(n) for n in yours.split()} + how_many_wins = len(winning & yours) + for n in range(i+1, i+1+how_many_wins): + cards[n] += 1 * cards[i] + +part2 = sum(cards) +print(part2) \ No newline at end of file diff --git a/2023/04/input.txt b/2023/04/input.txt new file mode 100644 index 0000000..b5b8942 --- /dev/null +++ b/2023/04/input.txt @@ -0,0 +1,218 @@ +Card 1: 9 32 7 82 10 36 31 12 85 95 | 7 69 23 9 32 22 47 10 95 14 24 71 57 12 31 59 36 68 2 82 38 80 85 21 92 +Card 2: 16 35 95 22 59 82 76 60 19 88 | 63 91 16 35 26 82 95 51 53 60 94 59 56 73 28 76 12 44 22 62 8 7 19 38 88 +Card 3: 1 88 48 52 70 19 11 78 94 28 | 19 92 70 18 34 78 83 8 82 87 3 97 66 31 63 17 69 4 75 94 52 54 77 24 45 +Card 4: 72 14 2 92 65 62 16 28 55 91 | 73 8 35 4 9 86 83 51 47 53 3 7 15 52 96 54 49 88 85 30 6 59 81 33 99 +Card 5: 60 61 24 41 30 77 94 50 38 75 | 47 93 82 98 96 5 9 53 17 6 10 21 2 91 80 4 14 71 29 69 62 1 7 87 88 +Card 6: 21 4 16 41 58 68 66 22 64 94 | 72 69 60 62 34 21 75 66 38 25 63 17 81 23 71 73 78 64 89 24 26 56 68 79 51 +Card 7: 10 90 4 56 14 26 7 23 57 19 | 62 10 60 51 46 34 23 49 44 8 53 50 2 56 21 81 69 89 87 91 16 63 38 36 22 +Card 8: 36 27 38 47 16 57 96 31 43 76 | 62 99 87 68 76 44 49 63 47 16 58 81 84 48 45 88 64 34 54 42 72 24 26 12 50 +Card 9: 92 9 35 2 26 97 79 88 43 45 | 89 96 62 1 39 98 72 66 28 78 64 68 42 63 15 25 22 60 31 91 69 94 21 81 29 +Card 10: 40 17 3 9 47 23 82 90 13 87 | 51 2 36 85 34 27 11 53 71 38 8 57 58 17 24 20 54 23 31 37 35 70 9 83 99 +Card 11: 2 21 9 53 45 19 91 74 23 25 | 29 26 91 39 58 18 96 53 31 63 46 21 32 54 22 66 17 25 94 74 4 41 77 35 23 +Card 12: 13 84 68 67 99 97 73 49 86 65 | 97 49 35 40 42 80 45 11 94 53 99 29 72 73 23 77 62 3 38 90 83 68 59 20 95 +Card 13: 70 9 7 11 95 46 69 91 22 71 | 30 56 31 90 91 69 17 71 25 46 66 9 62 89 70 98 36 57 45 94 21 40 75 95 24 +Card 14: 54 37 89 14 18 1 60 34 7 80 | 83 98 11 85 50 35 61 29 18 67 33 63 32 92 68 65 95 56 74 96 27 73 81 47 15 +Card 15: 25 82 90 66 50 40 15 43 32 62 | 49 77 96 36 89 70 50 29 26 1 20 71 37 30 9 91 7 52 5 82 51 55 72 38 12 +Card 16: 26 46 79 29 52 10 87 75 45 49 | 52 25 2 42 73 44 58 85 10 37 4 17 8 86 95 65 35 31 16 12 99 51 70 80 45 +Card 17: 17 96 64 38 73 11 32 24 25 65 | 83 37 25 81 59 18 4 15 98 87 2 1 3 60 5 53 67 46 6 20 79 84 95 50 62 +Card 18: 48 50 90 87 40 71 59 61 30 85 | 85 19 13 39 76 55 72 29 5 84 22 91 67 63 74 73 61 90 62 42 30 9 69 87 48 +Card 19: 4 99 93 55 22 37 41 75 32 79 | 95 7 65 50 40 49 42 64 89 1 59 33 9 53 20 44 23 98 60 30 39 12 66 84 45 +Card 20: 14 34 73 91 30 48 35 44 50 8 | 48 33 35 40 65 29 9 42 18 79 43 89 92 68 75 97 87 69 85 80 98 14 6 25 76 +Card 21: 33 15 83 71 94 61 87 54 36 72 | 56 52 83 46 32 99 36 67 12 47 38 13 14 2 7 26 20 63 90 40 37 6 84 42 92 +Card 22: 66 45 79 71 92 57 47 43 62 9 | 45 89 9 5 53 84 80 19 77 61 68 40 98 23 56 36 6 60 93 1 11 49 71 52 29 +Card 23: 29 53 13 4 76 62 25 94 82 98 | 24 45 85 59 41 11 13 78 54 67 74 21 50 75 16 37 63 86 14 26 92 31 57 33 40 +Card 24: 16 66 90 39 24 92 53 76 52 31 | 21 7 57 65 58 2 10 61 35 73 68 95 84 43 12 18 76 71 83 15 82 88 30 55 5 +Card 25: 9 45 17 42 64 93 54 33 77 62 | 35 81 82 18 47 92 2 20 95 1 6 58 40 73 43 37 15 48 23 75 26 13 50 63 79 +Card 26: 1 99 92 73 57 29 18 97 34 5 | 82 89 61 3 95 39 14 98 15 87 45 48 49 60 22 28 65 16 9 58 4 53 38 56 51 +Card 27: 87 45 35 93 62 1 66 91 6 3 | 51 60 96 84 35 91 6 28 32 40 3 57 29 90 73 12 81 89 31 69 97 66 70 36 18 +Card 28: 72 89 51 45 10 21 84 23 6 94 | 26 45 23 13 68 51 89 66 34 99 83 70 44 56 72 57 73 94 30 84 61 80 85 29 6 +Card 29: 58 80 96 47 13 44 71 38 55 54 | 58 35 3 61 81 96 71 44 43 14 36 54 20 69 63 13 75 28 80 18 73 11 38 55 47 +Card 30: 44 17 81 16 13 65 85 60 34 46 | 60 71 72 13 10 51 65 56 34 59 80 75 18 64 35 92 58 50 97 46 81 37 44 16 17 +Card 31: 84 55 99 95 42 83 26 33 43 87 | 78 59 45 26 28 94 63 17 2 73 38 84 96 34 99 19 75 65 8 92 58 20 11 82 57 +Card 32: 57 67 49 76 15 84 27 39 24 14 | 20 15 21 14 67 97 76 19 17 38 23 41 24 32 27 57 26 81 99 49 34 96 9 84 39 +Card 33: 96 76 23 95 5 37 8 62 65 63 | 59 23 67 51 40 68 70 38 8 36 41 53 62 65 96 76 66 57 37 5 46 34 95 19 69 +Card 34: 52 13 90 81 94 62 91 40 53 42 | 82 90 35 13 55 95 93 74 44 70 89 87 62 5 80 22 53 94 21 77 54 20 18 52 40 +Card 35: 1 75 37 64 17 12 57 18 58 3 | 65 74 89 12 72 64 93 23 51 73 44 80 21 7 35 87 42 82 25 53 71 38 79 43 61 +Card 36: 15 49 18 30 20 90 69 3 60 59 | 14 63 53 86 5 62 69 52 21 9 18 48 13 34 2 67 60 55 10 98 15 81 88 83 94 +Card 37: 48 39 43 81 40 59 70 22 62 61 | 48 14 79 26 12 56 3 89 66 17 87 9 43 27 73 23 47 1 18 97 96 65 59 42 6 +Card 38: 35 94 15 31 22 55 8 2 11 45 | 78 53 41 13 37 64 36 90 26 97 16 99 57 54 20 59 82 24 58 81 14 74 95 93 79 +Card 39: 74 25 37 8 53 36 86 68 91 79 | 48 45 24 80 20 49 86 42 47 28 17 22 93 38 35 34 85 21 18 14 97 61 27 41 88 +Card 40: 41 16 26 14 79 27 62 55 80 99 | 52 83 5 38 69 11 89 6 35 58 4 74 99 97 63 30 90 33 46 60 95 59 22 76 40 +Card 41: 57 77 60 66 35 4 13 89 14 40 | 78 4 97 58 9 65 94 44 89 95 80 7 47 59 37 26 19 76 91 18 45 6 56 3 90 +Card 42: 83 19 31 59 78 54 22 16 44 88 | 53 84 90 39 56 29 44 55 58 13 72 80 49 6 28 97 25 18 99 89 40 43 10 33 71 +Card 43: 81 94 73 42 85 45 28 61 88 19 | 84 86 36 44 51 40 82 72 39 57 13 53 87 83 38 76 63 35 47 15 2 95 79 26 1 +Card 44: 78 28 92 59 51 37 61 55 58 98 | 49 6 30 89 61 98 58 78 31 28 48 92 60 56 59 51 29 14 37 63 38 55 24 42 21 +Card 45: 23 59 74 5 81 53 3 93 54 68 | 68 15 38 45 66 61 87 54 3 81 74 43 5 25 59 23 93 78 44 72 53 52 89 97 48 +Card 46: 79 17 74 72 84 44 3 59 66 76 | 3 44 95 84 66 79 62 97 63 48 76 10 75 72 6 17 74 94 80 59 30 12 20 83 87 +Card 47: 98 18 11 52 66 14 68 89 80 19 | 66 67 23 52 80 89 95 44 60 11 55 34 18 59 19 53 98 82 14 38 63 65 90 68 77 +Card 48: 84 64 87 81 54 61 31 57 53 79 | 99 74 9 45 54 14 96 38 7 82 4 17 43 69 62 83 66 81 41 86 55 75 30 10 21 +Card 49: 95 4 89 38 67 71 70 75 35 39 | 39 71 22 80 75 43 35 89 17 38 4 29 7 69 94 63 85 6 5 95 70 58 67 50 68 +Card 50: 18 59 9 34 83 68 80 21 61 78 | 10 96 19 11 74 15 26 8 65 56 35 79 32 44 55 36 94 95 53 86 3 27 88 67 85 +Card 51: 17 79 69 92 39 51 46 81 14 21 | 49 92 48 29 47 74 76 81 69 85 86 98 73 43 24 45 21 84 25 10 17 44 1 31 28 +Card 52: 39 31 1 21 7 27 85 59 35 67 | 84 29 91 89 70 5 94 23 21 65 71 12 26 41 15 11 61 73 14 52 76 9 16 24 75 +Card 53: 93 21 1 18 54 87 35 98 9 48 | 44 30 79 82 23 43 51 46 34 35 9 75 12 60 77 36 27 86 32 47 85 98 87 1 13 +Card 54: 51 95 69 73 66 61 9 28 75 24 | 42 28 87 69 24 19 56 98 57 66 95 73 9 51 61 50 64 75 76 27 86 1 29 30 79 +Card 55: 73 99 56 8 10 97 26 64 52 2 | 79 47 80 89 5 53 37 63 41 48 12 96 1 25 84 70 9 76 58 75 72 31 20 17 46 +Card 56: 71 43 8 50 95 1 2 77 45 81 | 43 85 24 59 46 15 36 81 3 50 9 45 95 77 71 12 65 1 60 2 8 5 7 20 88 +Card 57: 10 76 62 41 58 67 80 39 9 21 | 58 10 42 60 37 27 51 1 25 18 56 23 67 88 62 50 87 80 9 54 41 81 26 21 7 +Card 58: 41 80 74 71 10 63 58 26 38 21 | 63 66 80 65 12 68 72 10 20 91 88 44 11 70 36 71 3 61 74 7 21 41 67 43 38 +Card 59: 41 60 82 94 90 7 76 69 28 95 | 35 69 77 9 81 65 11 90 19 22 36 75 12 52 98 55 92 79 14 67 47 83 39 74 94 +Card 60: 44 82 36 55 94 72 99 70 6 50 | 35 29 95 62 97 11 33 92 19 91 10 54 56 53 98 1 39 16 64 52 73 66 30 4 43 +Card 61: 55 19 82 18 24 91 99 36 54 98 | 68 58 99 51 79 1 7 50 4 28 59 8 19 14 10 40 57 34 60 82 88 47 52 80 54 +Card 62: 14 20 49 2 94 59 33 72 86 34 | 35 33 54 94 5 14 7 6 60 41 40 38 20 26 72 22 49 13 83 98 36 3 51 82 74 +Card 63: 73 78 8 64 52 7 86 30 98 27 | 95 4 48 24 45 72 60 31 25 18 59 90 51 14 50 65 2 16 3 33 94 11 93 6 32 +Card 64: 26 71 76 85 70 80 81 61 58 77 | 87 10 24 38 4 40 42 96 47 63 99 7 20 68 78 66 53 12 46 90 75 59 60 88 5 +Card 65: 26 37 35 44 45 10 13 85 6 8 | 39 80 93 79 60 89 58 96 44 85 59 94 24 23 48 86 22 42 6 5 25 57 43 90 21 +Card 66: 62 45 67 18 36 84 66 90 98 95 | 1 71 68 54 76 48 42 35 19 94 39 69 80 17 41 20 93 59 29 30 15 37 14 12 88 +Card 67: 33 10 5 94 72 86 84 80 19 85 | 76 26 61 3 93 17 74 42 23 16 18 2 14 46 1 38 72 13 28 29 91 21 12 7 48 +Card 68: 70 73 2 79 88 36 35 13 16 6 | 75 47 30 7 89 78 39 69 96 91 19 83 61 4 10 77 81 44 90 50 29 38 32 53 60 +Card 69: 60 20 40 38 6 49 5 85 84 80 | 38 12 59 94 27 15 85 17 65 69 82 36 7 43 47 99 5 87 61 77 4 83 81 90 40 +Card 70: 85 96 73 11 22 33 9 61 37 42 | 27 70 96 74 9 75 60 88 22 86 13 63 37 80 83 73 42 85 17 33 35 82 61 65 11 +Card 71: 41 47 37 52 73 97 77 69 5 45 | 47 95 78 41 74 54 5 88 63 87 34 18 37 85 26 73 52 50 28 77 97 86 1 69 45 +Card 72: 90 88 85 71 5 59 65 52 30 13 | 5 29 68 62 24 12 90 30 85 18 76 25 40 60 77 14 19 33 61 88 70 17 95 73 2 +Card 73: 44 98 60 49 51 9 21 88 87 70 | 63 3 46 65 49 70 44 7 74 88 35 45 17 24 51 60 25 9 98 87 21 10 81 83 61 +Card 74: 31 23 80 11 13 72 63 57 29 70 | 57 28 70 45 3 94 5 80 14 11 2 29 20 47 72 63 10 31 66 19 79 38 74 13 23 +Card 75: 82 54 62 8 30 7 88 20 71 85 | 83 65 74 44 79 3 29 64 51 35 98 56 41 22 27 13 26 34 39 59 24 4 33 14 63 +Card 76: 16 24 87 73 17 71 69 26 4 76 | 59 71 32 3 56 64 24 41 66 26 12 36 87 65 73 4 75 16 8 17 57 69 49 46 76 +Card 77: 98 57 96 56 39 12 69 37 54 65 | 21 48 87 97 29 27 56 31 18 88 7 79 70 35 64 38 91 15 14 43 3 84 20 85 32 +Card 78: 5 62 37 51 73 78 18 64 42 48 | 35 82 85 62 23 66 3 14 19 64 79 18 93 53 69 58 96 63 90 24 41 65 94 40 95 +Card 79: 8 73 46 15 99 29 96 34 59 75 | 48 65 57 99 63 33 37 73 79 28 72 56 34 3 25 75 70 95 58 27 43 30 54 8 87 +Card 80: 91 81 96 55 44 82 31 23 11 74 | 24 51 96 77 40 28 56 44 54 89 78 38 76 74 17 92 3 23 36 63 80 65 55 7 11 +Card 81: 81 77 30 26 93 28 97 10 84 88 | 57 28 36 33 54 11 96 58 18 99 30 1 5 79 12 24 56 93 25 78 10 40 76 84 81 +Card 82: 31 67 3 90 28 76 55 6 29 26 | 75 34 82 73 38 17 67 91 86 40 43 45 42 60 37 63 55 87 93 84 58 78 80 20 11 +Card 83: 8 97 43 88 62 34 68 50 82 71 | 8 68 2 96 85 36 10 14 35 32 73 16 26 29 67 60 37 89 52 98 74 22 78 1 59 +Card 84: 77 97 5 33 12 73 90 57 31 19 | 97 46 48 57 4 10 94 85 59 31 17 60 81 49 62 58 25 8 79 78 50 36 55 51 32 +Card 85: 74 85 97 19 76 99 21 47 20 50 | 50 69 72 39 45 26 13 7 92 21 63 58 84 9 94 53 43 81 89 49 62 32 70 82 10 +Card 86: 81 96 82 76 97 77 40 3 68 98 | 4 26 69 88 43 15 78 64 79 92 62 30 49 89 37 59 95 63 58 98 75 99 80 51 6 +Card 87: 80 73 51 20 41 67 31 66 97 27 | 16 59 75 86 24 83 95 44 85 13 11 77 70 14 2 39 88 89 93 55 52 6 53 94 98 +Card 88: 18 38 66 87 56 25 46 63 37 15 | 86 22 17 96 10 49 80 21 15 77 66 3 20 95 36 87 16 74 46 26 79 76 38 43 6 +Card 89: 51 55 41 3 20 60 99 70 23 43 | 51 81 99 32 50 96 41 53 80 76 43 3 83 65 20 46 70 60 38 35 57 55 7 74 23 +Card 90: 94 19 23 81 44 15 74 73 22 71 | 83 66 54 43 23 55 69 81 85 71 62 96 19 86 78 22 15 58 94 74 44 73 57 17 8 +Card 91: 72 77 21 83 82 75 1 56 99 43 | 42 77 56 90 68 96 39 72 83 97 21 17 66 70 49 43 69 63 82 75 47 99 87 11 1 +Card 92: 62 58 71 78 38 80 52 94 48 92 | 11 7 56 4 77 59 62 49 14 94 52 80 92 64 71 58 13 1 48 12 78 9 17 38 35 +Card 93: 98 45 63 46 48 97 91 29 90 15 | 95 31 41 15 43 80 24 44 75 83 30 87 98 12 27 36 74 16 86 35 33 85 54 94 78 +Card 94: 27 60 36 26 76 65 86 89 10 54 | 80 78 95 36 88 82 6 46 73 58 22 40 12 50 76 14 65 26 70 60 54 17 27 89 93 +Card 95: 18 62 66 98 24 16 80 58 53 97 | 93 9 15 61 51 19 81 8 21 36 6 71 80 13 52 87 5 37 86 75 68 60 97 54 10 +Card 96: 6 55 40 79 3 67 13 96 91 34 | 54 13 63 17 52 72 7 81 82 69 6 91 90 57 14 2 8 74 75 40 96 21 3 38 55 +Card 97: 40 33 3 59 8 88 99 14 41 74 | 99 48 41 35 69 64 18 50 3 96 40 8 36 63 17 90 59 33 49 26 88 93 74 27 14 +Card 98: 63 44 52 11 32 46 62 19 30 6 | 71 51 48 70 82 44 8 60 92 21 77 62 53 95 31 73 80 96 55 34 86 97 76 88 6 +Card 99: 66 46 22 44 94 50 68 59 25 75 | 40 46 56 32 64 89 80 22 60 87 77 9 59 25 75 38 44 48 8 50 94 68 66 72 20 +Card 100: 15 8 13 93 80 58 66 10 76 32 | 58 68 34 54 53 79 69 18 71 33 66 13 92 77 93 40 80 94 76 75 15 10 83 8 70 +Card 101: 22 25 48 97 63 81 7 84 60 43 | 58 91 10 85 59 76 16 36 96 39 42 50 72 34 86 61 67 11 79 27 83 73 98 57 70 +Card 102: 1 35 10 28 59 2 74 45 25 13 | 47 56 90 19 20 95 64 72 88 28 27 18 31 7 55 61 48 2 10 81 70 25 96 73 74 +Card 103: 28 5 31 23 76 83 25 94 35 18 | 10 85 72 18 23 60 17 50 30 76 35 83 8 42 65 4 34 84 28 39 5 98 25 94 92 +Card 104: 32 45 61 94 5 44 3 15 77 87 | 37 15 84 94 19 33 11 51 1 81 16 61 87 68 74 97 62 88 8 98 45 44 92 70 83 +Card 105: 32 89 96 15 67 83 9 64 60 44 | 76 38 75 54 44 67 3 88 89 46 15 40 96 19 7 36 55 64 1 83 78 72 31 18 21 +Card 106: 78 7 12 67 54 29 76 66 17 35 | 53 19 78 86 36 33 84 63 16 43 64 46 31 58 66 11 39 38 76 14 49 94 47 67 56 +Card 107: 95 91 53 27 12 51 29 1 36 9 | 43 70 74 89 52 12 82 97 96 4 45 37 14 68 15 58 63 51 59 34 50 81 3 6 83 +Card 108: 68 79 91 36 9 55 21 81 2 17 | 26 21 63 91 27 45 73 92 29 24 74 57 43 61 4 82 20 50 84 88 54 89 81 8 15 +Card 109: 68 37 88 22 26 53 67 43 62 35 | 24 19 46 44 49 7 17 51 21 81 96 30 59 3 72 99 71 58 22 28 60 52 43 65 86 +Card 110: 95 66 14 29 71 44 35 73 15 63 | 2 87 82 39 55 92 33 98 51 20 16 89 24 12 64 8 85 41 37 77 42 45 22 48 52 +Card 111: 83 21 90 50 91 82 73 19 41 25 | 47 74 77 86 84 33 3 99 30 93 37 98 42 59 24 12 69 36 61 68 55 17 32 53 18 +Card 112: 72 29 25 73 15 93 4 36 78 56 | 35 80 62 12 88 59 30 17 51 76 70 64 21 42 79 31 96 83 63 57 1 68 52 53 75 +Card 113: 39 52 17 98 34 9 72 53 47 51 | 70 72 17 48 83 98 64 9 15 94 57 68 87 14 27 55 40 38 53 8 47 51 16 28 67 +Card 114: 18 1 14 61 17 28 24 34 63 5 | 62 64 68 67 8 88 18 73 28 17 14 34 65 95 47 1 31 5 24 99 61 89 63 42 80 +Card 115: 31 76 94 50 65 52 21 53 5 43 | 93 38 97 35 2 82 1 45 65 50 43 59 21 27 94 5 31 53 61 52 10 76 99 44 47 +Card 116: 2 13 64 10 14 29 33 55 19 6 | 91 68 22 47 5 65 23 64 20 18 70 21 45 1 42 31 59 17 61 58 30 73 81 14 2 +Card 117: 52 22 10 59 25 80 48 28 99 82 | 93 52 25 19 94 80 85 28 46 90 74 65 48 99 22 66 87 49 83 57 3 10 59 78 67 +Card 118: 22 98 56 42 95 5 62 50 26 71 | 42 50 56 98 41 92 71 69 60 22 59 64 62 27 30 26 21 87 2 51 40 89 24 95 5 +Card 119: 25 61 90 69 15 3 33 14 59 21 | 61 30 25 44 18 90 74 64 33 73 51 3 14 60 45 82 23 69 46 59 27 21 49 15 7 +Card 120: 99 83 2 21 85 47 45 34 58 31 | 18 34 47 91 58 97 40 60 71 85 24 45 83 21 10 53 56 99 32 38 77 31 2 79 23 +Card 121: 91 63 88 9 66 25 48 94 44 51 | 42 24 19 83 43 9 25 28 18 88 91 35 63 69 66 55 3 14 54 75 80 51 73 94 44 +Card 122: 4 32 37 25 8 13 3 67 39 5 | 94 99 11 5 93 60 29 37 45 28 3 8 32 66 98 25 36 97 34 96 80 67 63 71 31 +Card 123: 93 89 1 53 15 98 21 26 82 42 | 17 25 40 63 15 21 28 42 30 46 13 53 81 74 93 85 98 57 39 65 60 38 12 36 92 +Card 124: 14 12 90 59 56 54 94 80 51 63 | 5 7 14 33 86 94 34 3 80 25 40 56 90 65 63 59 71 67 54 12 82 66 46 51 44 +Card 125: 52 37 74 28 4 96 92 40 3 64 | 23 44 64 71 22 34 35 17 10 74 93 37 40 42 52 96 53 91 92 70 28 4 75 3 12 +Card 126: 40 70 12 23 61 99 47 96 77 24 | 58 32 96 66 44 21 83 84 43 11 94 13 99 62 87 1 31 10 71 53 39 14 95 97 56 +Card 127: 9 40 39 4 19 3 25 96 5 95 | 86 9 31 25 14 19 40 55 5 84 66 4 28 3 88 95 27 1 34 52 97 29 12 96 15 +Card 128: 56 35 9 95 93 66 38 85 39 65 | 92 14 12 79 86 95 66 1 38 93 6 94 77 2 34 62 56 87 46 39 65 72 40 10 45 +Card 129: 77 19 10 24 25 68 67 5 38 29 | 73 59 50 39 37 24 58 56 70 72 74 3 20 66 26 92 71 29 83 15 96 79 2 28 27 +Card 130: 19 42 20 87 76 41 83 47 99 51 | 85 27 63 1 55 9 49 28 25 14 76 51 36 34 53 57 73 12 58 66 78 16 22 84 26 +Card 131: 33 82 49 90 74 24 53 48 12 51 | 48 29 52 12 31 99 81 33 80 76 37 32 96 28 8 51 79 56 26 62 53 10 15 42 58 +Card 132: 51 90 31 49 77 64 20 76 91 45 | 77 93 27 16 45 53 57 84 63 42 25 44 4 64 71 8 70 66 95 34 23 85 35 31 87 +Card 133: 76 84 3 16 25 79 35 8 50 60 | 32 97 7 51 49 12 37 54 59 60 27 87 40 64 38 78 8 53 43 39 81 66 68 44 18 +Card 134: 77 36 47 40 44 14 94 91 39 5 | 95 25 45 99 59 27 64 12 15 9 22 4 50 62 73 39 34 6 8 72 56 96 89 90 35 +Card 135: 33 49 25 71 39 75 30 16 46 55 | 94 82 64 10 16 73 79 68 4 12 1 87 6 53 34 98 66 99 78 59 58 2 36 77 52 +Card 136: 53 22 58 94 49 25 6 64 69 73 | 42 23 3 76 77 83 8 1 89 2 33 78 46 12 34 95 26 96 41 93 97 35 5 82 55 +Card 137: 64 25 86 72 6 39 48 95 73 62 | 52 4 29 18 11 84 79 87 19 32 96 71 61 35 17 15 44 27 68 70 98 45 22 51 85 +Card 138: 60 30 89 73 76 11 23 90 86 80 | 11 89 23 86 66 5 80 13 67 73 59 96 90 76 49 20 84 30 82 29 72 87 63 60 92 +Card 139: 82 6 17 76 72 5 70 45 90 7 | 12 50 25 41 9 16 29 20 63 70 28 10 53 90 76 5 7 82 17 15 45 93 72 97 6 +Card 140: 3 88 95 62 81 35 92 16 21 87 | 92 42 18 35 21 12 30 25 27 17 87 71 81 95 88 40 16 29 69 70 14 62 3 2 31 +Card 141: 2 36 5 53 22 30 40 94 84 52 | 86 67 38 32 90 33 18 26 13 2 96 49 25 74 83 31 54 42 52 36 97 55 63 44 47 +Card 142: 84 77 81 89 56 61 39 2 22 7 | 79 40 62 91 39 20 13 80 81 63 7 22 84 77 6 5 2 42 89 61 53 52 56 75 88 +Card 143: 90 86 6 75 67 76 18 41 36 55 | 25 7 30 21 40 65 47 42 77 34 53 60 97 10 49 39 45 57 8 94 83 93 32 80 98 +Card 144: 26 5 82 70 75 88 53 47 29 93 | 23 40 49 74 62 93 60 75 86 98 53 45 47 29 97 67 8 88 4 5 26 37 71 82 70 +Card 145: 8 62 96 13 21 82 42 54 41 61 | 87 13 23 96 29 27 6 14 53 75 5 24 31 60 90 12 82 51 64 65 70 58 9 74 47 +Card 146: 57 20 68 46 52 36 49 48 14 34 | 52 45 92 33 49 57 61 54 44 18 47 59 46 34 63 32 65 53 50 14 20 80 38 42 15 +Card 147: 47 86 79 34 64 91 57 21 1 89 | 14 79 31 91 44 11 89 75 40 97 81 92 63 73 21 49 93 86 64 22 35 8 13 99 57 +Card 148: 83 62 84 25 96 13 30 99 24 82 | 64 2 65 63 60 98 91 76 81 94 23 22 88 85 28 92 15 38 35 72 52 32 47 69 31 +Card 149: 62 32 13 59 96 78 11 73 34 52 | 89 73 13 1 52 24 71 83 53 97 62 85 78 20 17 11 59 96 74 19 32 29 34 43 9 +Card 150: 76 14 58 69 8 21 49 60 29 6 | 29 86 82 88 3 91 72 71 55 57 51 95 9 61 12 79 23 33 19 20 50 37 62 30 4 +Card 151: 68 93 22 66 81 77 16 75 47 34 | 47 76 34 52 25 68 9 26 29 66 37 57 10 54 99 46 77 95 81 93 53 13 97 22 7 +Card 152: 2 9 24 70 11 42 44 98 79 27 | 18 72 91 78 44 77 35 17 79 21 9 5 4 98 43 54 70 42 2 6 76 11 24 68 27 +Card 153: 36 28 10 9 69 25 87 50 77 11 | 7 54 25 40 85 33 15 20 87 71 96 99 77 53 94 9 67 28 69 32 26 18 63 29 43 +Card 154: 41 15 97 7 50 92 9 66 20 6 | 91 53 3 15 66 92 72 67 85 9 20 1 28 32 14 95 81 34 79 8 7 59 82 52 6 +Card 155: 8 1 15 14 44 81 89 37 55 43 | 76 62 83 79 37 24 56 30 34 58 45 64 23 41 84 71 14 22 60 27 18 9 42 54 85 +Card 156: 1 44 85 92 7 35 52 50 72 26 | 62 69 85 60 80 73 94 37 12 63 99 70 17 51 23 8 95 29 32 55 47 41 6 36 25 +Card 157: 12 49 19 14 28 64 17 76 34 8 | 33 87 95 61 84 55 86 19 92 44 3 42 24 96 94 36 38 13 10 51 15 81 27 75 67 +Card 158: 29 88 66 19 41 57 52 30 46 47 | 16 1 36 91 8 70 27 3 38 32 89 84 90 31 88 49 60 22 18 9 62 67 47 7 34 +Card 159: 99 87 7 36 67 23 14 92 52 82 | 93 41 76 15 8 63 50 40 30 85 92 48 1 99 87 53 46 70 34 5 44 79 16 35 17 +Card 160: 40 35 56 38 93 47 42 72 80 79 | 77 90 83 4 65 61 27 41 21 13 25 68 34 11 84 40 94 42 69 64 14 70 58 97 63 +Card 161: 57 54 92 91 51 37 93 55 59 41 | 2 78 35 85 23 41 74 33 8 21 72 94 63 90 95 64 71 12 65 27 38 18 19 9 60 +Card 162: 51 37 4 45 15 59 71 23 61 77 | 72 81 19 35 53 60 11 93 54 2 31 70 40 28 57 63 6 46 89 96 30 36 12 20 29 +Card 163: 52 53 7 23 29 89 86 43 97 77 | 79 18 34 45 80 61 30 41 68 7 52 89 8 49 29 86 67 17 81 98 97 78 26 48 70 +Card 164: 98 61 60 4 5 28 70 37 41 10 | 22 58 68 41 98 53 30 99 60 61 17 12 4 25 49 10 70 92 5 83 36 28 13 37 56 +Card 165: 16 12 15 73 22 31 20 63 42 95 | 26 53 40 17 97 15 8 25 78 46 44 45 54 39 61 23 51 11 90 95 2 35 68 24 18 +Card 166: 14 89 75 8 90 29 18 27 64 19 | 74 76 7 75 23 72 45 54 59 90 80 44 29 27 20 64 12 89 14 52 79 8 83 11 15 +Card 167: 16 78 33 67 66 63 69 59 36 94 | 89 70 42 47 92 34 14 69 37 83 19 25 57 36 3 44 77 26 73 85 18 59 13 65 76 +Card 168: 33 76 58 94 34 84 79 69 60 2 | 49 54 80 51 68 84 71 17 44 12 82 69 4 88 76 8 98 34 93 5 52 95 13 75 39 +Card 169: 2 63 48 44 25 75 51 36 29 52 | 24 84 56 37 17 60 74 36 77 48 62 32 16 2 80 41 15 35 88 72 30 58 20 49 12 +Card 170: 98 14 67 30 5 15 89 28 74 12 | 99 88 7 35 19 27 81 50 70 97 98 61 2 67 92 46 75 30 53 4 59 1 74 26 45 +Card 171: 4 26 44 61 5 75 76 20 56 33 | 34 97 62 70 83 35 23 78 13 3 86 58 56 65 72 59 76 20 39 32 36 71 33 30 46 +Card 172: 47 15 51 8 77 74 7 41 30 35 | 8 30 45 15 99 80 75 52 74 28 49 81 16 2 66 62 32 10 69 65 92 77 38 73 13 +Card 173: 65 57 60 74 69 55 21 59 10 50 | 32 28 78 16 17 79 67 76 35 66 9 63 80 58 62 20 89 88 92 26 64 10 12 97 3 +Card 174: 40 66 82 30 61 27 78 54 8 48 | 73 45 28 49 52 91 25 20 55 34 33 7 23 4 5 56 74 44 9 75 2 24 71 3 70 +Card 175: 49 42 2 59 41 38 32 83 89 23 | 25 57 90 46 99 54 67 40 73 87 9 27 82 58 53 63 22 7 13 37 52 68 15 81 88 +Card 176: 22 81 29 71 28 4 94 32 19 98 | 53 47 84 63 45 73 7 79 52 31 75 49 55 21 96 38 23 58 1 15 40 83 2 90 41 +Card 177: 44 43 42 73 56 74 64 61 29 89 | 91 15 96 77 65 23 84 20 94 45 95 6 33 13 63 50 53 18 12 24 41 47 54 9 14 +Card 178: 12 16 77 20 89 41 55 94 13 50 | 78 36 67 75 55 12 20 28 94 63 45 81 53 26 43 41 16 89 50 68 77 22 32 62 13 +Card 179: 41 64 96 46 85 5 11 79 89 51 | 98 62 92 55 49 93 90 91 41 64 94 17 48 46 70 31 51 74 34 33 75 12 28 35 84 +Card 180: 27 13 89 84 45 16 77 86 72 83 | 55 89 12 83 5 37 38 53 98 77 16 27 22 78 45 87 35 64 68 93 41 84 13 34 88 +Card 181: 79 31 12 61 49 11 68 56 78 54 | 58 23 21 59 62 72 69 17 12 34 68 87 26 98 67 16 1 3 11 38 31 78 89 27 91 +Card 182: 52 55 4 31 57 5 23 66 78 68 | 52 31 87 50 98 83 66 4 26 25 68 63 14 70 54 29 7 22 85 42 17 27 67 32 5 +Card 183: 71 9 31 84 59 32 74 26 85 36 | 5 9 58 26 50 74 80 37 59 16 44 27 98 11 21 48 43 77 57 62 33 86 24 28 63 +Card 184: 47 16 69 11 99 34 79 65 49 9 | 92 97 64 83 49 73 17 36 29 46 1 15 78 25 58 81 51 23 84 39 60 91 67 3 56 +Card 185: 84 21 9 64 45 19 51 90 91 76 | 91 83 76 26 8 6 21 70 32 42 11 51 19 39 9 69 4 67 82 49 61 68 64 45 57 +Card 186: 69 5 36 53 16 65 64 32 62 50 | 8 4 2 92 18 13 33 9 42 78 59 25 68 79 19 28 38 32 16 36 71 69 65 63 17 +Card 187: 37 58 19 57 26 21 55 92 68 50 | 95 61 58 35 6 55 31 45 76 23 22 96 18 30 86 15 94 70 53 13 80 26 68 87 36 +Card 188: 46 30 47 87 12 68 84 51 90 42 | 71 61 95 42 60 14 22 84 83 48 23 20 27 69 47 18 85 94 96 35 66 93 87 5 50 +Card 189: 36 31 8 73 83 14 39 90 67 74 | 89 21 37 74 36 19 8 14 53 32 17 39 23 96 95 38 46 78 90 3 35 52 26 56 84 +Card 190: 41 75 39 18 97 85 30 24 83 40 | 81 95 22 33 97 40 98 48 30 47 37 39 75 78 46 27 59 85 82 41 6 56 24 12 29 +Card 191: 39 29 11 97 41 63 57 87 10 53 | 14 68 22 52 75 35 97 42 13 38 54 23 24 3 71 20 4 43 86 56 34 70 51 94 47 +Card 192: 18 88 98 45 41 71 32 87 29 99 | 99 85 91 7 21 86 5 12 87 35 95 94 65 57 17 58 39 78 22 49 32 2 8 19 97 +Card 193: 5 31 29 36 40 65 95 74 9 69 | 79 64 74 44 9 95 73 65 70 18 48 58 33 22 88 81 26 57 67 46 42 11 30 5 15 +Card 194: 45 87 50 51 64 69 13 83 40 52 | 54 82 76 85 32 61 70 81 44 33 9 77 99 23 39 60 19 35 31 52 65 78 79 34 95 +Card 195: 48 35 73 17 39 44 91 70 45 66 | 76 3 23 30 15 20 22 40 25 8 90 75 24 42 21 46 10 7 77 72 29 64 55 49 28 +Card 196: 45 95 66 40 83 68 96 84 15 89 | 51 86 89 90 70 88 36 53 14 18 22 74 46 17 56 1 9 65 87 24 30 32 38 66 92 +Card 197: 92 25 8 82 33 4 52 55 95 83 | 75 50 53 28 14 76 61 65 90 29 81 39 27 33 15 56 24 97 80 40 70 13 21 78 37 +Card 198: 30 94 70 37 58 66 8 78 71 18 | 97 64 16 13 77 57 87 74 54 92 1 52 35 23 82 9 72 22 80 27 75 10 15 20 43 +Card 199: 20 30 64 54 88 32 16 59 43 48 | 88 2 11 27 21 52 68 99 75 80 84 62 23 37 56 82 89 8 1 24 48 98 7 15 72 +Card 200: 86 18 84 48 80 11 30 72 1 88 | 16 48 55 32 41 51 18 2 76 72 81 84 58 22 88 27 11 89 8 66 30 53 93 20 19 +Card 201: 35 12 66 89 38 67 14 64 51 7 | 6 88 40 49 86 96 47 67 70 71 23 7 32 42 12 51 30 81 20 74 28 34 35 14 15 +Card 202: 89 13 72 16 67 26 37 46 66 33 | 56 95 63 93 67 97 44 74 83 60 36 78 30 45 87 24 90 70 99 88 80 48 82 68 54 +Card 203: 94 55 82 24 41 48 28 14 42 80 | 28 22 78 14 80 41 42 58 48 13 44 57 61 55 15 47 53 11 21 19 29 82 63 65 94 +Card 204: 54 66 41 71 2 91 73 85 78 69 | 24 82 41 38 45 91 4 68 77 18 54 78 85 73 71 2 69 44 76 80 63 89 9 34 66 +Card 205: 76 2 81 21 16 64 10 6 30 45 | 72 38 8 84 64 21 81 45 69 3 22 5 60 23 18 63 74 9 6 29 82 4 46 30 16 +Card 206: 62 17 63 99 1 31 48 89 22 53 | 28 74 78 47 48 97 73 31 68 23 42 14 2 99 49 37 39 8 35 64 66 92 44 54 11 +Card 207: 69 76 21 35 49 91 77 75 72 53 | 88 57 58 16 91 84 21 99 53 70 19 29 3 56 55 22 49 41 1 72 10 35 9 20 60 +Card 208: 33 97 67 76 69 63 13 41 54 21 | 84 69 9 11 21 50 12 45 97 67 54 42 18 63 62 81 96 33 31 95 26 48 17 68 76 +Card 209: 66 35 6 71 82 16 14 97 68 50 | 58 50 82 71 97 90 96 49 16 84 91 21 98 63 76 31 65 51 1 80 52 30 47 93 33 +Card 210: 56 53 62 97 78 68 27 16 50 10 | 48 71 80 87 8 39 22 9 53 58 54 1 11 14 96 6 41 65 37 34 98 17 85 24 20 +Card 211: 52 6 85 59 80 96 77 26 65 36 | 38 77 86 29 98 27 58 51 8 75 87 50 63 2 82 1 41 92 97 53 33 14 16 93 49 +Card 212: 82 69 16 77 49 12 19 29 30 31 | 42 81 22 94 32 78 61 29 11 1 64 87 19 57 88 82 24 8 7 46 5 28 30 77 26 +Card 213: 71 48 25 24 37 40 77 88 44 74 | 51 92 62 34 33 93 54 78 6 25 10 96 70 63 81 82 85 20 48 12 99 40 86 8 58 +Card 214: 12 43 97 95 19 39 98 13 41 93 | 69 89 10 36 50 20 51 33 67 88 73 59 81 29 17 34 85 28 92 55 5 63 79 72 52 +Card 215: 21 31 62 69 74 97 40 45 20 35 | 25 18 1 52 86 84 68 44 15 47 91 99 57 87 98 17 66 56 73 42 33 93 30 8 95 +Card 216: 94 71 33 51 86 70 60 78 12 17 | 98 68 80 56 47 53 41 55 70 37 46 43 8 22 74 48 62 9 10 65 7 60 39 29 97 +Card 217: 70 98 21 38 77 68 67 39 45 72 | 63 57 37 21 94 64 8 96 69 80 84 25 71 26 83 99 81 31 48 42 41 73 54 60 22 +Card 218: 92 44 79 17 16 34 55 78 19 9 | 52 39 85 98 93 46 21 91 20 45 1 89 66 27 4 88 99 41 86 72 38 40 84 81 69 \ No newline at end of file diff --git a/2023/05/05.incomplete.py b/2023/05/05.incomplete.py new file mode 100644 index 0000000..11ed502 --- /dev/null +++ b/2023/05/05.incomplete.py @@ -0,0 +1,3 @@ +with open("input.txt") as f: + text = f.read() + diff --git a/2023/05/input.txt b/2023/05/input.txt new file mode 100644 index 0000000..0132518 --- /dev/null +++ b/2023/05/input.txt @@ -0,0 +1,250 @@ +seeds: 28965817 302170009 1752849261 48290258 804904201 243492043 2150339939 385349830 1267802202 350474859 2566296746 17565716 3543571814 291402104 447111316 279196488 3227221259 47952959 1828835733 9607836 + +seed-to-soil map: +3680121696 1920754815 614845600 +1920754815 3846369604 448597692 +193356576 570761634 505124585 +2369352507 2535600415 31531965 +2400884472 2567132380 1279237224 +0 459278395 111483239 +698481161 97868205 361410190 +1059891351 0 15994868 +111483239 15994868 81873337 + +soil-to-fertilizer map: +1633669237 1273301814 72865265 +2398515176 2671190790 99210785 +2397916384 3018946373 598792 +4034325916 3061716397 20017393 +3298612516 3793795301 14249501 +4030007411 3051046904 2833129 +1906984482 224872691 14620134 +864506893 1590633724 149044542 +1029530319 442871336 36727018 +1921604616 770934113 68546178 +3560536321 3114405501 28822192 +1019762634 1263534129 9767685 +3852235341 3579014714 60339892 +2385228698 1577946038 12687686 +2234322470 239492825 150906228 +0 170310676 54562015 +3208946111 3808044802 89666405 +1209615399 839480291 424053838 +4032840540 4041982568 1485376 +2497725961 2174737461 293042810 +2002543511 1346167079 231778959 +3312862017 3475611771 103402943 +318739997 1739678266 354749094 +1013551435 3012735174 6211199 +4014277153 4160859076 15730258 +3589358513 3143227693 230682158 +1990150794 2467780271 12392717 +3051046904 3081733790 32671711 +3820040671 3761600631 32194670 +148429321 0 170310676 +673489091 2480172988 191017802 +1066257337 627576051 143358062 +2790768771 2770401575 242333599 +3091554979 4043467944 117391132 +3416264960 3897711207 144271361 +3912575233 3373909851 101701920 +4072291714 3639354606 104297620 +3083718615 3053880033 7836364 +54562015 3019545165 13557205 +1759006785 479598354 147977697 +68119220 2094427360 80310101 +1706534502 390399053 52472283 +4054343309 3743652226 17948405 + +fertilizer-to-water map: +0 1095885172 129797665 +2661548513 1044284418 17872363 +3282164642 3678907615 214830258 +1440687421 2218635146 325889720 +3496994900 4208791298 25912548 +3253828209 4136945159 5561683 +1797056017 864689597 109403664 +3259389892 4186016548 22774750 +2578517508 1225682837 83031005 +3193832718 3618912124 59995491 +3695649169 3214450646 211194594 +820325042 974093261 70191157 +1284591017 1074888739 20996433 +2929761569 3893737873 85668135 +1305587450 2605461705 73959171 +2168339930 1062156781 12731958 +2465234843 2135490203 52666067 +3522907448 4108091872 882860 +3523790308 4255675252 39292044 +2517900910 1308713842 60616598 +3563082352 3176039879 38410767 +3015429704 3979406008 128685864 +1913427402 2131043562 4446641 +2235159285 1419841841 190190495 +3673886186 4108974732 21762983 +891504291 1610032336 393086726 +3927815169 3425645240 193266884 +4121082053 3002154636 173885243 +2084864581 2004107154 83475349 +1917874043 557612753 69524983 +890516199 2003119062 988092 +766355924 2551492587 53969118 +1379546621 0 61140800 +3187625274 4130737715 6207444 +528804063 627137736 237551861 +1987399026 230411125 97465555 +1906459681 2544524866 6967721 +2184647884 1369330440 50511401 +2425349780 2091158499 39885063 +2181071888 2087582503 3575996 +3144115568 4142506842 43509706 +1766577141 2188156270 30478876 +359533738 61140800 169270325 +129797665 327876680 229736073 +3906843763 4234703846 20971406 +3601493119 2929761569 72393067 + +water-to-light map: +2375927917 1595026882 126334140 +1307603095 818620477 43777869 +2050676589 1855896418 112224406 +3618302244 2909504698 119958941 +3078570200 3088215627 6211083 +3084781283 3094426710 141266337 +524666822 53020621 149058240 +673725062 862398346 147671362 +2364320682 2577001713 11607235 +1941578413 1584221500 10805382 +2162900995 2536766467 40235246 +162015400 237365123 4480592 +821396424 241845715 141336168 +166495992 1138498800 212882164 +4277433486 4220367555 17533810 +3226047620 2229635217 307131250 +2909428734 1968120824 34606070 +1885573816 3954749082 56004597 +2711875933 2868267590 41237108 +0 726306378 92314099 +2944034804 1721361022 134535396 +1584221500 3392008740 301352316 +962732592 34415039 18605582 +2235705153 2101019688 128615529 +4252936467 4237901365 24497019 +92314099 202078861 35286262 +981338174 400041457 326264921 +379378156 1010069708 128429092 +3591930858 3693361056 26371386 +3785017329 3719732442 235016640 +2502262057 4010753679 209613876 +3533178870 3029463639 58751988 +3738261185 2821511446 46756144 +4020033969 2806534555 14976891 +1952383795 2002726894 98292794 +127600361 0 34415039 +2753113041 3235693047 156315693 +507807248 383181883 16859574 +2203136241 4262398384 32568912 +4035010860 2588608948 217925607 + +light-to-temperature map: +2137189745 1335050925 100355790 +639139367 2440321747 987829 +1663612748 1778059435 153830272 +1122754252 1950103191 82536600 +1929621334 1199531530 135519395 +1286703174 2032639791 207137687 +245313533 981575774 217955756 +2597564380 2824691125 293777778 +895004176 331442633 25226735 +1493840861 236388681 616173 +1494457034 764560381 107637728 +1817443020 1435406715 112178314 +1205290852 356669368 33552643 +474799702 0 164339665 +2341054397 2260378974 100255179 +1043066658 2360634153 79687594 +125852143 390222011 119461390 +3924383937 3130691909 13614218 +2467721984 3747288823 76649669 +2065140729 164339665 72049016 +920230911 1673437172 104622263 +640127196 509683401 254876980 +1024853174 1931889707 18213484 +2331983314 2251307891 9071083 +2237545535 237004854 94437779 +3912160931 3118468903 12223006 +1238843495 933716095 47859679 +3326002417 3517222025 230066798 +3556069215 3144306127 241363224 +3797432439 4180238804 114728492 +1602094762 872198109 61517986 +2544371653 4127046077 53192727 +2891342158 3823938492 303107585 +463269289 2239777478 11530413 +3194449743 3385669351 131552674 +3937998155 2467721984 356969141 +0 1547585029 125852143 + +temperature-to-humidity map: +2687600833 2313887435 187105587 +3281196981 2291603041 22284394 +1771250828 1899269239 314167725 +784031720 478456148 306959384 +2605226464 1771250828 58348072 +2085418553 3793564740 111907603 +1090991104 785415532 575136195 +3437652344 1829598900 69670339 +2874706420 2500993022 389039942 +3303481375 3905472343 134170969 +305575572 0 478456148 +3263746362 2890032964 17450619 +2527060387 2213436964 78166077 +2428623843 3695128196 98436544 +2663574536 4270940999 24026297 +3507322683 2907483583 787644613 +2197326156 4039643312 231297687 +0 1360551727 305575572 + +humidity-to-location map: +1919184105 1156349110 51114849 +4031284281 3411510751 25609498 +0 171183359 79004094 +1253227229 2072782209 122019778 +4056893779 3437120249 136289693 +3402931364 4156827458 101778985 +84557792 1207463959 134801591 +635909965 1371746366 266495395 +4029464617 4127764171 1819664 +4193183472 2857352625 101783824 +1375247007 2200355685 41445634 +1996492203 0 171183359 +3601595563 3699895117 427869054 +2218993186 1133540977 22808133 +3217192942 2959136449 140385316 +2987922009 4258606443 9236491 +2628749093 2543337773 86365212 +2167675562 369831582 51317624 +3504710349 2446452559 96885214 +902405360 421149206 108869392 +3357578258 2811999519 45353106 +1196458443 1638241761 56768786 +1178674352 693035436 17784091 +1970298954 530018598 26193249 +2868723842 3099521765 91954544 +1522874936 895259169 18612073 +2841599480 4267842934 27124362 +1880563756 1695010547 38620349 +1011274752 913871242 137918784 +219359383 556211847 136823589 +1785350971 250187453 95212785 +2960678386 4129583835 27243623 +540622614 1977494858 95287351 +356182972 710819527 184439642 +1498443592 345400238 24431344 +1416692641 1051790026 81750951 +1541487009 1733630896 243863962 +79004094 2194801987 5553698 +1149193536 1342265550 29480816 +2997158500 3191476309 220034442 +2715114305 3573409942 126485175 +2446452559 2629702985 182296534 \ No newline at end of file diff --git a/2023/06/06.py b/2023/06/06.py new file mode 100644 index 0000000..405c811 --- /dev/null +++ b/2023/06/06.py @@ -0,0 +1,36 @@ +with open("input.txt") as f: + lines = f.readlines() + times, distances = lines + times = [int(t) for t in times.split()[1:]] + distances = [int(d) for d in distances.split()[1:]] + races = zip(times, distances) + +def distance(t, t_max): + """ + Calculate the distance traveled if you charge for t seconds + """ + return (t) * (t_max - t) + +def part1(races): + answer = 1 + for race in races: + t_max, d_max = race + results = [ + (t, distance(t, t_max)) + for t in range(t_max) + if distance(t, t_max) > d_max + ] + answer *= len(results) + return answer + +print(part1(races)) + +def part2(times, distances): + t_max = int("".join(str(t) for t in times)) + d_max = int("".join(str(d) for d in distances)) + for t in range(t_max): + if distance(t, t_max) > d_max: + break + return t_max - 2*t + 1 + +print(part2(times, distances)) \ No newline at end of file diff --git a/2023/06/input.txt b/2023/06/input.txt new file mode 100644 index 0000000..4f96786 --- /dev/null +++ b/2023/06/input.txt @@ -0,0 +1,2 @@ +Time: 48 87 69 81 +Distance: 255 1288 1117 1623 \ No newline at end of file diff --git a/2023/07/07.py b/2023/07/07.py new file mode 100644 index 0000000..250238d --- /dev/null +++ b/2023/07/07.py @@ -0,0 +1,156 @@ +from collections import defaultdict, Counter + +with open("input.txt") as f: + hands = f.read().split("\n") + hands = [(hand.split()[0], int(hand.split()[1])) for hand in hands] + + +def rank(hands): + ranked = defaultdict(list) + for hand in hands: + r = get_rank(hand) + ranked[r].append(hand) + return ranked + +def get_rank(hand): + c = Counter(hand[0]) + counts = c.most_common(2) + # extract counts + first = counts[0][1] + second = counts[1][1] if len(counts) == 2 else 0 + # discriminate based on counts + d = (first, second) + match d: + case (1,1): + return "HC" # high card + case (2,1): + return "1P" # one pair + case (2,2): + return "2P" # two pair + case (3,1): + return "3K" # three of a kind + case (3,2): + return "FH" # full house + case (4,1): + return "4K" # four of a kind + case (5,0): + return "5K" # five of a kind + +def order(hand: str): + """ + Convert to base-15 for proper sorting + """ + # A = ten + # B = jack + # C = queen + # D = king + # E = ace + return hand.replace( + "A", "E" + ).replace( + "K", "D" + ).replace( + "Q", "C" + ).replace( + "J", "B" + ).replace( + "T", "A" + ) + +def part1(hands): + ranked = rank(hands) + ranked_hands = [] + ranked_hands += sorted(ranked["HC"], key=lambda hand: order(hand[0])) + ranked_hands += sorted(ranked["1P"], key=lambda hand: order(hand[0])) + ranked_hands += sorted(ranked["2P"], key=lambda hand: order(hand[0])) + ranked_hands += sorted(ranked["3K"], key=lambda hand: order(hand[0])) + ranked_hands += sorted(ranked["FH"], key=lambda hand: order(hand[0])) + ranked_hands += sorted(ranked["4K"], key=lambda hand: order(hand[0])) + ranked_hands += sorted(ranked["5K"], key=lambda hand: order(hand[0])) + answer = sum( + [ + hand[1] * (rank + 1) + for rank, hand in enumerate(ranked_hands) + ] + ) + print(answer) + +part1(hands) + +### Part 2 + +def order2(hand: str): + """ + Convert to base-15 for proper sorting + """ + # A = ten + # B = jack + # C = queen + # D = king + # E = ace + return hand.replace( + "A", "E" + ).replace( + "K", "D" + ).replace( + "Q", "C" + ).replace( + "J", "1" # jokers are worth less than 2 + ).replace( + "T", "A" + ) + +def get_rank2(hand): + c1 = Counter(hand[0]) + c2 = Counter(hand[0].replace("J", "")) + jokers_count = c1.get("J") or 0 + counts = c2.most_common(2) + if not counts: + counts = [('', 0),('', 0)] # prevent index error when 5 jokers + # extract counts + first = counts[0][1] + jokers_count # convert jokers to highest-scoring card + second = counts[1][1] if len(counts) == 2 else 0 + # discriminate based on counts + d = (first, second) + match d: + case (1,1): + return "HC" # high card + case (2,1): + return "1P" # one pair + case (2,2): + return "2P" # two pair + case (3,1): + return "3K" # three of a kind + case (3,2): + return "FH" # full house + case (4,1): + return "4K" # four of a kind + case (5,0): + return "5K" # five of a kind + +def rank2(hands): + ranked = defaultdict(list) + for hand in hands: + r = get_rank2(hand) + ranked[r].append(hand) + return ranked + +def part2(hands): + ranked = rank2(hands) + ranked_hands = [] + ranked_hands += sorted(ranked["HC"], key=lambda hand: order2(hand[0])) + ranked_hands += sorted(ranked["1P"], key=lambda hand: order2(hand[0])) + ranked_hands += sorted(ranked["2P"], key=lambda hand: order2(hand[0])) + ranked_hands += sorted(ranked["3K"], key=lambda hand: order2(hand[0])) + ranked_hands += sorted(ranked["FH"], key=lambda hand: order2(hand[0])) + ranked_hands += sorted(ranked["4K"], key=lambda hand: order2(hand[0])) + ranked_hands += sorted(ranked["5K"], key=lambda hand: order2(hand[0])) + answer = sum( + [ + hand[1] * (rank + 1) + for rank, hand in enumerate(ranked_hands) + ] + ) + print(answer) + +part2(hands) \ No newline at end of file diff --git a/2023/07/input.txt b/2023/07/input.txt new file mode 100644 index 0000000..e84bbe2 --- /dev/null +++ b/2023/07/input.txt @@ -0,0 +1,1000 @@ +467K3 95 +JK5QK 838 +44664 725 +8QAK3 134 +53A3A 945 +7QQJ7 164 +J8J89 236 +38QAT 166 +Q7944 755 +35333 526 +5J787 482 +4K769 829 +37773 960 +QJ78K 282 +3J39Q 326 +TJ2QQ 255 +J4338 337 +QK3KK 187 +5K8KQ 380 +93785 500 +795JT 382 +Q399Q 391 +99J99 206 +T5555 716 +Q7Q8Q 990 +QQJJQ 346 +34344 332 +K4J44 763 +2A36T 974 +77757 461 +55446 907 +99JJ9 962 +K29KQ 177 +99666 961 +688KK 249 +5A558 767 +TT6K2 630 +5Q4A4 872 +JTKQ4 969 +A5AAA 421 +JAA4Q 680 +55K69 29 +96ATJ 144 +3Q462 523 +73646 203 +5A96A 550 +K84TQ 4 +7278T 406 +KQQT5 395 +54567 197 +T53TA 355 +AQA99 601 +88KQQ 968 +55J5J 727 +73TJ9 466 +99799 843 +324QQ 36 +84AAA 190 +7J366 511 +JK938 667 +KKQJQ 762 +722J4 110 +9TKT9 84 +33JJ3 458 +6K444 498 +4279T 23 +K5T28 467 +3KKKK 871 +KQAQK 492 +44AKK 865 +5638T 932 +A89AK 24 +29K92 403 +A69K6 596 +KKK84 400 +QA748 616 +55AAA 504 +9255Q 684 +56646 330 +6J6J7 222 +A59J5 370 +3AA4J 940 +K9K38 302 +2AK58 735 +68K4K 422 +95599 324 +8K88J 987 +845Q5 478 +72KQ7 263 +8TJ83 751 +96TTQ 935 +AQ6AQ 445 +QKQQA 321 +A5644 769 +QQ5QJ 801 +AA574 436 +333QQ 605 +J5982 71 +QT8A5 956 +2Q46A 982 +J3773 317 +3KK93 485 +3A76A 926 +338JJ 502 +8KAQ6 737 +KKK28 520 +644Q5 850 +2T6TT 397 +34JA7 549 +743J7 747 +34843 103 +6KKKK 204 +Q2J22 548 +JKKKK 995 +42446 704 +8732A 238 +TT9J2 109 +4758T 33 +TTTT7 914 +787J7 647 +59T59 62 +9Q989 985 +T886J 554 +543QJ 75 +77637 857 +8888T 83 +92T52 939 +9832A 620 +3TT39 81 +84353 18 +A8Q8A 824 +T4597 425 +K3635 949 +KAAA2 320 +42224 243 +AA8A3 565 +KK63K 114 +TT3TT 133 +33T77 141 +J868J 774 +422QT 369 +24T2K 344 +KK3Q3 8 +424J2 967 +8J6J6 666 +K6927 887 +36666 366 +78KT8 867 +AT66T 761 +72AT6 155 +2Q6QQ 440 +64J64 594 +A2JT8 578 +QQAJQ 383 +8Q333 963 +9A22A 503 +K86K6 55 +66899 899 +4744J 210 +72K54 860 +KQKK4 723 +6TK62 607 +9J955 652 +A45A5 766 +4J333 744 +5K555 277 +7777J 657 +7853A 147 +75QQQ 356 +T6T93 818 +8T342 643 +498A7 232 +96A2A 471 +J55KK 583 +KJ7Q6 849 +36A36 707 +23655 290 +K444K 371 +5858K 688 +KJK8J 258 +Q3699 910 +79T64 864 +KAQ44 536 +T4TJ5 239 +8KK88 589 +42AA4 127 +QQ4Q4 746 +J9868 472 +95493 170 +JK6T5 428 +KAATA 775 +TK3KT 886 +36633 858 +67767 590 +86A2Q 175 +J7J7J 659 +7J457 796 +55335 65 +9288A 664 +88899 499 +7TKTA 327 +6QJ36 701 +K7KQK 943 +QQAQ2 681 +Q9948 444 +85923 335 +82832 283 +TQ5QT 92 +TK8A3 191 +A957K 614 +8877T 623 +5JTT9 253 +2K626 248 +757Q7 817 +JJ6T5 827 +KJ796 367 +895AQ 608 +AA666 950 +TT4T2 135 +QQQKK 600 +A9KK9 925 +49AA7 972 +73TAT 60 +5K49Q 74 +AAJ6A 753 +42222 470 +J99KK 722 +A9AA9 514 +36636 581 +7T5Q9 690 +TTK7K 496 +277J4 665 +782TQ 662 +3AK57 734 +29KJ7 343 +72726 378 +67656 541 +22A29 229 +JJ5AA 336 +QTTJQ 979 +J73K6 473 +55AK9 19 +46466 610 +8AAK4 408 +27227 181 +55525 214 +444Q4 505 +65K55 506 +KJ84T 529 +82225 250 +59TKA 32 +83J53 178 +599K4 988 +55TTT 759 +59999 431 +T44A4 828 +A888T 874 +J3533 619 +9979K 981 +KK998 101 +64965 799 +9A999 934 +9A299 942 +5KKKA 862 +4A865 802 +64QQ4 837 +ATATA 98 +6TJQ7 807 +K6997 585 +57T5T 457 +JT66T 938 +JJQK9 105 +JJ278 804 +JJ5AQ 661 +Q2597 930 +AAQAQ 31 +5A974 427 +TTQQK 868 +7KT7T 730 +K4999 112 +A8KAQ 672 +6AQQ6 447 +32J32 297 +4QA2J 915 +T2Q3Q 712 +34KQT 121 +98379 617 +487QK 44 +55TAJ 909 +6686T 28 +22922 805 +T846A 556 +J5A6A 399 +55Q55 347 +8488J 593 +JKKTT 708 +8288J 768 +JKK66 1 +22999 586 +85398 334 +77KK6 782 +K34JJ 674 +39K4K 653 +QA6K3 720 +78878 715 +QA9Q4 745 +3333J 226 +3TT32 686 +44999 401 +A2J32 531 +Q65A9 905 +J6AA7 194 +8J888 163 +7JT74 624 +JKKAK 568 +239J2 919 +AA4AA 52 +222JJ 184 +546AQ 894 +K2KK9 631 +45TQ2 375 +TTTT2 146 +26Q77 989 +9866K 851 +T3332 292 +66469 758 +48J48 889 +4A4QA 185 +J6626 68 +46T4A 660 +83T52 151 +7T7T7 407 +73758 479 +63A44 291 +66QT6 875 +6645J 738 +94Q97 638 +T5KT5 411 +TJ3J3 866 +QT6TQ 842 +A448A 433 +556JJ 533 +T3TKT 161 +6JT43 265 +T5TTT 393 +K7KK4 386 +53J6A 845 +K7777 756 +63399 685 +J85AQ 87 +88585 906 +QJTQQ 270 +TKKTK 131 +3J3JQ 797 +K7Q34 836 +K4499 362 +53555 651 +9888T 435 +2J299 557 +8J999 964 +96TQ2 293 +8KTJ8 137 +KA6Q7 442 +2J6KQ 900 +446A4 294 +AJAA3 671 +Q427T 116 +9JQ99 398 +59929 392 +822J8 192 +Q92Q7 420 +KKJK6 171 +TAJ37 487 +8A2J5 10 +22TTT 220 +33623 111 +7Q7AJ 491 +A3JJ2 650 +J4J23 299 +396KA 896 +K3K3J 486 +QKKKK 20 +9A2AJ 713 +746K4 56 +96996 885 +JTK77 312 +Q8888 826 +3T4AJ 771 +97977 219 +9354K 788 +5Q5KK 455 +T3734 325 +TK26A 156 +7AAAA 924 +KJ622 183 +5QTAQ 642 +AAAAQ 488 +TTTJT 953 +Q2222 145 +4A9TJ 245 +TT3JK 588 +J5555 284 +94AQT 193 +97325 196 +74A8J 37 +24AAA 847 +22A32 381 +4KJ59 542 +T6QK4 673 +77877 922 +Q2Q66 49 +66688 792 +9T9T9 918 +J8878 552 +6A63A 221 +AA559 780 +9T47Q 300 +AKKA4 501 +33QQ4 64 +6K375 965 +T7Q43 82 +3689Q 569 +A6A3A 462 +T5Q3J 689 +49Q99 895 +KA262 490 +87497 13 +4449A 973 +92453 430 +5QA5A 149 +69666 247 +K6AJA 992 +A4444 729 +44494 298 +J5993 927 +26662 555 +4J6A5 613 +KK77K 855 +73222 315 +2A2J2 719 +K7KT7 43 +98T64 998 +23282 528 +449T7 130 +6QK24 424 +AAAA3 179 +JA42K 53 +6A6KK 211 +J55JJ 742 +J5T93 304 +TQA23 358 +8J257 240 +39393 522 +68A38 450 +QQAK8 970 +J77QT 341 +T68AA 242 +99933 310 +425KA 69 +99A9J 535 +J35JK 113 +4A37T 360 +63333 791 +78J5T 34 +46T46 883 +T8JQ3 50 +KKKK5 519 +T29J8 640 +KKK88 646 +3A32A 228 +7A77T 57 +2QQ2J 971 +7Q777 438 +5J545 21 +T4AAJ 432 +QQJAA 570 +KJ79J 853 +T3JKA 359 +676K6 724 +4TATT 931 +JKKT2 629 +J338T 469 +9939J 743 +85A93 241 +945TA 363 +5JK5A 493 +Q5JT5 815 +76378 12 +T3T53 157 +JAA24 732 +55757 200 +K727J 115 +259KK 510 +2J739 786 +288AA 598 +QJ233 100 +QQ56Q 25 +6333J 702 +86797 839 +47T77 361 +K4823 3 +6K446 54 +94J75 543 +QQQQA 980 +55J66 923 +AQT55 645 +55593 314 +J6776 379 +J23T6 102 +7K7K7 911 +JQ5A3 227 +KK66K 279 +AJJAQ 396 +JA252 39 +555KK 714 +KJ56K 637 +KJ64K 928 +6Q66Q 85 +TJTT2 273 +K634J 854 +66662 576 +6Q6J6 212 +KAAT2 696 +76663 793 +T3AQ3 632 +2J994 966 +TTTJA 63 +4QJQ4 165 +AAAJ8 331 +TT666 158 +2KKA2 453 +54444 563 +7KK88 675 +47777 832 +6JJQ9 475 +55275 876 +63489 794 +7K7Q3 208 +6J585 820 +3Q89T 524 +92AK2 6 +66JK9 655 +7J4KQ 139 +666A5 711 +4JTK9 117 +88AJA 368 +34T5T 602 +9933J 278 +97Q63 448 +A5555 892 +QJ7A2 726 +5KKJ2 917 +A5238 108 +33343 663 +K33T3 285 +6Q655 937 +38383 880 +47834 252 +QJA49 692 +A6926 547 +48Q8Q 288 +72J86 107 +5T5T9 449 +2JK25 305 +667T6 136 +7JJ88 429 +Q5KQK 394 +ATAAA 952 +66949 296 +TT222 933 +AQ4AK 948 +KQJJ7 209 +3465K 709 +74775 126 +8TJ6T 402 +82Q3J 816 +Q7855 354 +JJ3KK 9 +22223 351 +2K7TA 831 +555AA 984 +83539 168 +444T4 140 +4A8Q4 693 +JA8AK 890 +29QTQ 308 +KJKKJ 389 +A86AK 649 +J898T 14 +A6AAA 352 +2J222 176 +A4669 958 +333K8 635 +T4269 844 +J4Q54 603 +44AAA 349 +QT575 413 +AA2J2 859 +7T395 648 +K3Q68 251 +7T2T2 790 +QQQ33 446 +428A4 879 +36J2Q 434 +69955 991 +7J5A4 812 +QQ445 789 +7A69A 93 +4K979 537 +K6K73 518 +45555 79 +45A6A 833 +KAAA5 307 +48887 80 +KK2KK 38 +ATJJ5 11 +5K325 388 +42TJA 353 +66J3T 611 +A758A 728 +TJT77 644 +5JQQ2 898 +9KQT2 404 +K42A2 303 +Q6QTA 124 +58Q5J 670 +K6JTJ 409 +T3333 731 +J73JK 463 +4A288 452 +79AAJ 41 +2K7T7 15 +7AAA7 888 +44J94 286 +8938K 328 +TKKKA 633 +22JT7 577 +QQQQ7 683 +66665 89 +T72J4 955 +J66J6 877 +99433 509 +9K92J 776 +JQ7Q2 78 +A6T2Q 122 +69Q6A 153 +J5JQ5 218 +25KAJ 416 +7A47A 513 +62T26 1000 +96449 281 +KKTKK 977 +35642 921 +9K4K9 778 +J4244 993 +JJAAA 573 +7AA27 626 +A685T 376 +4JA9A 957 +T886T 267 +737J7 538 +999KK 579 +75KK7 76 +Q737Q 809 +Q3393 901 +2734Q 754 +J2T9K 216 +89859 695 +63343 35 +7JK7K 700 +8828A 765 +29AT5 615 +Q838Q 410 +A3235 622 +TKJKQ 810 +45454 224 +77737 869 +JA9T9 333 +2772K 276 +5535A 350 +TT5QT 821 +46JKJ 986 +9T8KK 125 +6JAJ7 595 +74647 464 +499A4 612 +4KT7A 22 +J3233 891 +44555 959 +8KQ8A 271 +33443 182 +37373 27 +88828 997 +Q2Q22 189 +3635A 373 +T66TT 717 +A4469 207 +2T2KT 749 +4244Q 90 +9234T 348 +33TJ3 289 +QAA63 562 +2A2A2 199 +J6JK7 929 +TT99J 234 +T3JQ2 798 +65Q66 154 +JTTJT 975 +22699 705 +Q6Q6Q 618 +99929 811 +389J6 920 +585Q5 852 +A2255 477 +TJTJJ 30 +K5AK5 772 +2QQ3Q 323 +6888J 454 +7J8K3 609 +J463J 572 +32323 223 +686J6 534 +Q25J4 47 +29996 882 +TTQ8Q 944 +42265 480 +2JQ96 287 +QQ868 517 +AK447 994 +8J3Q3 897 +42QK5 489 +A8A88 384 +3AT3A 941 +44T8T 88 +QQ8QQ 787 +488TJ 996 +6KK66 313 +2J262 764 +K6KK5 275 +K572T 893 +7T7QQ 215 +76965 773 +59575 800 +586QJ 309 +QQQQ4 721 +9A9A4 40 +8JJJJ 128 +QATA6 162 +K6TAQ 415 +95JJ8 72 +9TQ97 319 +2AK22 61 +T2TJ2 465 +T5274 195 +Q4587 266 +J97QT 441 +52384 17 +Q7J77 414 +QQQ6Q 903 +4444J 532 +QQKQQ 904 +QJ467 16 +25525 785 +ATA8A 205 +65542 261 +9QKKK 512 +48844 231 +JTJAK 99 +QJ8AT 571 +68A88 878 +5353J 94 +2Q33Q 311 +KJJ69 946 +J83A8 634 +QQT6Q 884 +KK74J 374 +77474 781 +38888 527 +29457 329 +52452 73 +2K776 256 +QJQQQ 268 +J24K6 913 +42K88 861 +29QQQ 733 +4J546 806 +K2K98 841 +Q4644 697 +44K94 834 +QAAQT 830 +J666T 750 +3T335 437 +9594T 694 +8QQQ3 682 +88887 269 +J3KKQ 641 +99993 551 +2K437 699 +75775 710 +5963J 870 +TTKT5 582 +2Q82A 439 +KJ4Q9 301 +Q3558 152 +32333 999 +T77TT 599 +3T6JT 627 +2J3T5 560 +25442 86 +8888K 257 +5QJ45 96 +QQ7AA 658 +88JJ8 863 +98948 202 +2QJ3J 803 +J6488 66 +59559 160 +JJKK7 484 +7J223 254 +68889 364 +555J9 822 +KKAAA 525 +K7557 5 +3Q33A 814 +2384J 587 +KK8Q2 777 +494K2 426 +2TJ22 507 +QQQ2Q 698 +7229T 954 +JJ757 142 +2882A 530 +KKTQT 539 +72222 621 +99A5A 736 +22887 936 +3377Q 779 +6A6J6 740 +A7AAJ 840 +44JJ4 2 +QQTQT 51 +6666A 669 +T9279 908 +K9J7Q 856 +2AAAJ 748 +J3K25 947 +TT65T 377 +KK2K6 752 +K7KKK 150 +9J6J8 120 +72AK6 656 +TT6TT 757 +QQ9TT 412 +3AA3J 365 +84477 783 +KK4K2 591 +AK79J 654 +J77J7 951 +Q7664 606 +7QQ59 59 +J2725 795 +96989 417 +7TT64 387 +47JJK 91 +228AA 201 +AJJ63 902 +A5AKJ 123 +37Q33 741 +8J358 483 +Q88QQ 508 +43A33 340 +Q9QQQ 516 +232JT 148 +666J6 159 +38363 97 +42285 322 +4Q944 233 +TT4TT 342 +K8TQA 566 +KJKK2 213 +QJQJJ 339 +5K932 559 +86888 494 +2QQJQ 70 +7A772 167 +5659T 881 +T43A6 186 +A2Q22 739 +55K95 679 +2T5QQ 262 +47797 419 +52522 357 +2J734 597 +AA3Q3 678 +3Q9A3 567 +KJAAJ 813 +K8794 495 +7JT77 198 +4KT2A 564 +55QQ5 497 +5K558 272 +T2A25 318 +K58Q2 825 +7KKJK 628 +6A6A7 676 +J7T96 706 +A4A96 625 +6KTQ7 372 +JAAJ3 916 +99699 106 +Q7Q77 468 +8Q88J 545 +2A2J8 983 +777A7 246 +329TA 546 +38388 48 +KKKQQ 316 +KKKK8 460 +33K8Q 77 +A9A29 691 +8J859 237 +A9599 540 +23J67 390 +JT43J 668 +8J8JQ 338 +JQQQ8 456 +K9KKK 129 +8KJ8K 67 +7555Q 169 +9QJQ9 459 +7A8Q9 718 +7J765 760 +94744 173 +AA35A 264 +QKQQ5 423 +A6JJ9 819 +4AA44 848 +88385 180 +A4T7Q 259 +7J757 584 +A96T3 474 +JJJJJ 42 +9K372 604 +J333Q 118 +J7A37 451 +Q4447 515 +QQ77Q 274 +73333 553 +6747J 521 +J56K2 405 +KKJJQ 575 +QT86A 592 +75A73 476 +29925 295 +A778A 823 +AAAAJ 580 +TT99T 636 +QQ3JQ 235 +A8778 244 +K6638 784 +87Q5A 574 +99499 46 +AK7Q7 172 +KKK33 443 +38J88 345 +7976K 58 +59669 558 +6659J 217 +7557J 143 +5549K 306 +J3982 639 +J249A 677 +55955 418 +QQQQT 7 +77A47 770 +66K4K 104 +Q9T5A 976 +2673Q 230 +Q75TK 26 +JKJ9K 225 +9TAAT 188 +55JQA 119 +9Q9Q9 385 +24K42 260 +T9222 873 +99989 45 +88448 544 +T9784 808 +43454 846 +TA674 174 +3T3AT 687 +38929 561 +22QQK 912 +KQJQQ 978 +23223 481 +J7772 835 +3999Q 703 +74K44 280 +4K444 138 +KJ53K 132 \ No newline at end of file diff --git a/2023/10/10.incomplete.py b/2023/10/10.incomplete.py new file mode 100644 index 0000000..4f9440f --- /dev/null +++ b/2023/10/10.incomplete.py @@ -0,0 +1,17 @@ +with open("input.txt") as f: + pipes = f.read().splitlines() + +def part1(pipes): + start = [ + (i, j) + for i, line in enumerate(pipes) + for j, char in enumerate(line) + if char == "S" + ][0] + + distance = [([0] * len(pipes[0]))] * len(pipes) + + x, y = start + d = 0 + + \ No newline at end of file diff --git a/2023/10/input.txt b/2023/10/input.txt new file mode 100644 index 0000000..d1ce0ab --- /dev/null +++ b/2023/10/input.txt @@ -0,0 +1,140 @@ +F|7.F|-F|777FJ7FF77-F777F7F|7..FF-77FF|--JJFJ7-J-F77.FF-F7F-F-FL7|--7---F.FL-7-7J.FFF7|-FFJ7.7.LF-LLJ77|F7FJJ-JFF|-.|FFF7F7..FFL7F-FJ-7-LL77 +|-J-JL.LL7-7-J|FLJLJ.L|7|F-J-|-FL7L-7-J-LJFJ-77FF-LL-FJFLLJ7L.L.||..7FJ7J7FJFL-LJFLJL--.|7JL||FLJLL|JLJ.LL7J.FF|-J.L---JJ.F77L-LLF7L|F77LJ|J +LLJ|FJF-F--7LFL-J|7F--F--JJ|-JF-7|F-JJJ..FLJ.LFJJ.FJ-|J|J7.JFFJ-7---LLJL7FJ.J-FL-FLF7|LLJJ|L-J--7JJ|77LJ.FJFFFJL7J7|-|-J.FL7JL|LLJL7L7JFF.JJ +7-L-J7|LJJ-7-JLLF77J7.LF77LLJJL7|||F7J.|-FJ|FL7|-|7|JL7JLF|--JJJ|J7..|LL|J7-|FFJ|LJ.7--L|L7.L|F7.FF||L..FLJL-JF-JFLFF77.FFLLJL7F|F-J-L7JFJJ. +-7JL|7L-||F7|F|JF-F---7|L77F|-FJLJ||L7-J7|7F7.L|7L|JL---7-|7LJ|-|.F7--.|.L-FJ7JJLL-7|LF-7F|FF77JF7JLJ7.|.|-|7J|.L-.|JL--FJ7--7|-FJ7|J|LLL--J +L77JLJ-FJ-FJJ-|7JF77LF-7LL-F7FJF-7||FJF7L|J-J7JL--||FJJ-|..J..F-7--FJ|77.L7|L7-7..FL-.L7|-L|J|J.FJ7|F-FJ--.J7F-LFJ--J.FF|-7--7--|-F-FJ.LL7|J +LLF7-7F7.-L|JLJ|.LJ-.F7|FF.||L-JFJ||L7F7L|J.L-77-77-JJ.-J77.F.L7|F|L77|L-7F--J|--LLJ|.F||J-LFLJFF7--|L|..|-|L|JFJ77|.L--77.LJ-JLL-7F|-7|LLL7 +|.||.F-...FLF-7L7-7FJ|FJ||FJ|F-7L7||FJ||F77.-7L||.|-|.LLL-7.F-7||J7-LJ77L||J--||.|JFFJF|L-7F7JF-J|7J|||-LL7|.|F7LJ-|.F7FL7F7J||LL7LF--77-L|7 +FFJ7.||.--7.JJF.7.F-J7|F7FL7LJFJFJ||L7|||L7.|L7|J-F777-|L7-7L7LJ|JL7-L-77L-.7L|7FF-|J|-L7FJ||F7.FLL77F-.FLLF7-||7LFF-LF|.|-J7FL-7|...-77F-LJ +||L|7F7JJ|J...F.777JJL7||F7L-7|FJFJL7||||FJ7-F7||-||-F-J|..FLL7FJ7JF-7L|7-L--FJ||7-J.F7FJL7|L7LLJJ7LFJF|J7F|L-JL7-7|.|||FL7LJ7LJ-|-77.LFJ|.. +LJ7FJ-J|-JFF|-J7L-.|JFFJ||L--JLJFJF-JLJLJL7F7F7-7F||7|-F7-FFF7||F-7J-7-L|7J7.||F7.J|.||L7FJ|FJ|F|7LL-|7L---L--7FJJJF7F|JF-7--|7||||F-F-||L|7 +|.LL|J.L-JFLJF7|.|7.F-L7LJF--7F7L7|F----7FJ||||-F7||FF7F7F--JLJLJFJ||F.|J.LF-LFJL7JF-JL-JL-JL7-F.|JF-|F77F|||FJL77.-JF7.LF7LFJ-|7-||FL-|-JL| +JFF-7.FFLFJ7-FLJ7L7F|7FL7FJF-J|L7LJL---7LJFJLJL7|LJL-J|||L----7F-J|FFJ--F77.|.L-7L7L-7F------JJ.FF77--J|7FF7FJF7L7-.LL--FJ|||L-LJ.LJ7.|J.L|J +|FJJ|.---L-JJLL||L|LF-7FLJ7|F-JJL-7F---JF7|F---JL--7F-J|L7F-7FJL7J7LJL-L||L-7F7FL7L7L|L---7F7J-FF7F777F-7FJLJFJL-J7F77J7.L|F|J|LJFL7F7L-7-7- +L77FJ-||7FF7---LJ-7.LJF7F-7LJF-7F-JL-7F7||||F7F7LF-JL7FJFJL7||F-JF77J||L||7LFJ|F7L7L7|F---J|L-7F|LJ|F7|FJL--7||F7F-J|F-77F-|J77LF|-JJJ.J7.LJ +||LJ..L-LJJ-7-7L7.L.FF|||FJF7L7|L-7F-J|||||||LJL7L7F-J|FJJFJLJ|F7|L7F-7.|L7FJFJ||.L7||L--7||F-J-L-7LJ|||F7|FJL7|||F-J|FJJ-.|L-7-|L|.|L.L|77. +F7-LJ7|JFL|7LFJ|L7.FF7|LJ|FJL-JL--J|-FJLJLJLJF--JFJL7FJ|F7L7F7||LJFJL7|-L7|L7||||F7|||F--JFJ|F7F7LL-7LJLJL7L7FJ|LJL--JL7J.-|-L--F-7F|--|J|7L +J77F.JJ.J-7J-L7F77F7||L-7|L-------7|FJF------JF7|L-7||FJ|L7LJ|LJF-JF7||F7||FJL7|LJLJLJL-7|L7|||||FF7L7F7F-JL||FJF7F----J---J|.|7L7L7|.FLF|77 +FL-JF|FL-7.|7LLJF7||||LFJL-7F7F7F7|LJFJ-F--7-FJL7F-J|||L|FJFFJF7L-7|||||||LJF-JL---7F7F-JF-J||LJ|FJL7LJ|L-7L|||FJLJF7F7J.|-|FL.L--7FJ---|JL7 +FF7L-|L|.L|||.FFJLJLJL7L--7||||LJ|L7FJF7|F7L-JF-JL-7LJL7|L--JFJL7FJ|||LJ||F-J-F-7F7||LJF7L-7||F-JL-7|F-JF-JFJLJL7F7|LJL77FFJLL|.L.JJL-J7J-J| +|-7FFJL|.|||..FL-----7L---JLJ|L-7L7|L7|LJ||F7FJJF-7|F7FJ|F--7|F7LJFJ|L-7|||F-7L7LJLJL--JL7FJ||L7F7FJ|L7FJF7L7F--J|||F--JF77L-7J.|L.|.LL|-7J7 +7F77|J7|F--FF-7JLF7F7L------7S77L7LJFJ|F-JLJLJF7L7|LJ|L7LJF-JLJL77L7|F-JLJLJFJFJF---7F---JL7LJFJ||L7|L|L-JL-JL7F7||||F-7||LL|LF--J.L7FL|L|-| +L7|LJ|F7L.J.L7|FL|LJ|F7F----JFJF7L-7|FJL7F7F-7||FJL-7|FJF7L-7F-7L7FJ|L---7F-JFL7|F--JL----7|F7|FJ|FJ|FJF--7F--J|||||LJFJ||F7|F|F|FJLJ7.7J|LF +F-FJLJLL---FFJL7LL-7LJ|L-7F-7L7|L--JLJF-J|||FJ||L--7LJL7||F7|L7L-J|FJF-7L|L--77LJL--7F----JLJ|LJFJL7|L7|F7LJF-7|||LJF-JFJL--7-JL77||.|7LLL7L +FJ|J-|J-FJ.FL-7|-F7L-7|F7LJFJFJL--7F-7L-7||||7|L7F7L-7FJ||||L7L7F7|L7L7|FJF--JF7-F7FJL--7F-7FJF-JF7|L-JLJL7FJFJ|||F7L--JF7F-JFLLJ|L-.|FF.FJJ +L7.LF777FFF7F7||.|L--J|||F7L7|F7F7LJJ|F7||LJL7L7|||F7|L7|LJL7L7||||FJFJ|L7|7F7||FJLJF---J|FJL7|F7||L-7F---J|FJFJLJ|L----JLJF77--7-7.L-JLF|J. +FJ7LJJL--LLFJLJL-JF--7LJLJL-JLJ|||LF-J|LJL-7FJFJ||LJ||FJL-7FJ.|||LJL7L7L-JL7|LJ|L--7L7F7FJ|F7|||LJL7FJL7F7L|L7L-7FJF--7F7F7||JLFJF|7LLF--J.| +|JL.J7-|J|.L-7F---JF7L--------7|||FJF-JJF-7|L-JFJL-7||L-7FJL-7|LJF--JJL-7F-JL-7|F7FJFJ||L7|||||L-7FJL-7LJL-JFJF-JL7|F-J|LJ|||-FJFF7--J..||-| +JLLFJLFJFF--7LJF--7|L7F7F7F---JLJLJFJ7F7L7||F--JF-7|LJF-JL-7FJL-7L7F7F--JL7F7L||||L7L7||FJ|||||F7||F-7L7F---J7L-7FJ||F-JF-J||F7F-J|.|F|-L7.7 +|.|.FJL-FL-7L-7L-7LJFJ|||||F7F---7FJF7||FJLJL-7FL7LJF7L7F7FJL7F7|FJ||L---7LJL7|LJ|JL7|||L7LJLJ||LJ|L7|7||LF7F7F7|L-JLJF7L--JLJLJF-JFF-|L|77F +L77.|7FFF--JF7L7FL-7|FJ|||LJLJF77|L7||||L--7F-JF7L--JL7LJ|L7FJ|||L7||F7F7|F--JL-7L7FJLJL7L7F--JL-7L7|L7|L7|||||LJF----J|F7F-7F--JFJ7|F--7L|J +F||7L-77L---J|FJ7F-J|L7|||.F--JL7L7|||||F--JL7.||F-7F-JF-JL||FJ||FJ|||||LJ|F7F7FJFJL--7FJFJL---7.L7||FJ|FJ|LJLJF7L----7LJLJLLJJJ-|-LL--7J-LJ +L|-FF7LF.FF--JL-7L-7L-J||L7L-7F7L-J|||||L---7L7||L7|L-7L7F-J||FJ||FJ|||L-7|||||L7L7F7FJL7L7F---JF7|LJ|FJ|FJF-7FJL-----JF--7F7.FLJ|L|.|JL--JJ +F.LLJF.|F7L----7L--JF-7|L7|F7LJ|F-7LJ||L7F7FJFJ||FJ|F7|FJL-7||L7|||FJ||F7|LJLJL7|FJ|||F7|FJ|F-7FJ||F-JL7LJFJ.LJF7F7F7F7|F-J||-||F|.|FL7L|..L +J.L|.L-FJL-7FF7|F---JFJL-J||L7FJ|7L7FJ|FJ|||FJ-||L7|||||F7L|||FJ||||.||||L7F---J||7||||LJL7||FJ|FJ||F7LL7FJF---J||LJLJLJ|F-JL--7-J7-|F7-L.|. +F----FFJF-7L-J|LJF7F-JF--7|L7||FJF7||FJL7|LJ|F-J|FJ||||||L7|||L7||||FJ|||FJL7F--J|FJ||L-7FJLJ|FJL7||||F7||FJF7F-J|F--7F7LJF7F--J7F7-F7J-7|LL +JJ-7L-L-JFL7F7L-7||L7FJF7||FJ|LJFJLJ||7L||F-JL-7|L7LJ||LJF|||L7||||||FJ||L7FJ|F--JL7|L7JLJ|F-J|F-J|||||LJ||FJLJF-JL-7LJL--J||F7LFJ|FJL7J7|F| +|L|LFLJJ.F7LJL-7||L7LJFJLJ|L7|F7L--7|L7FJ||F7F7||FJF-JL7F7|||FJLJ||||L7||FJL7|L-7F7|L7L7F--JF7||F7||||L77LJL---JF7F-JF-7|F7LJ||-L7||F-JLFFJ| +|-|..|J-FJL----J|L7||FJF-7L-JLJL---JL-J|FJ||||||LJFJF-7LJ|||||JF7||||7LJ|L7FJ|F-J|||FJFJL7F7|||LJ|||||FJF-----7FJLJF7L7L-J|F-JL--JLJ|J7||F.J +F-FL--7L|F---7F7L7||FJFJJL--7F7F-7F--7FJL7|||||L-7L-JFJF7||||L-J|LJ||F--JFJL7|L7FJ||L7|.FJ||||L7FJ|||LJFL---77LJF7-|L7|F--J|F----7F7|-|F-|7J +|FL|.|FFJL7F-J|L7LJLJFJF----J|||FJ|F-JL-7||||||F-JF7FJFJ|||||F-7L-7|||F-7|F-J|FJL7||FJL7L7||||FJL-J||F-----7L---JL7|FJ|L7F-JL---7LJLJ|LJ||.| +L-J.FFJL--JL--JFL---7L7|F7F-7|LJL-JL---7LJLJ||||JFJLJFJFJ||||L7L7FJ||||FJ|L-7||F7|||L7FJFLJ|||L7F--J|L7F--7L------J||7|FJL7F----JL|-L7FJ-|-7 +|.F-J|L|7F---7F-----JFJLJLJ.||F---7F---JF7F7LJ|L7L7F7|-L7|LJL7|7|L7||LJ|FJF-J|||LJ|L7|L-7F-J||FJL7F7L7LJF-JF7.F--7J|L7||F7|L-7FF7F7.F-J|.LFJ +F-|7LJ-JFL--7|L7F7F-7|F7F7F7LJL--7|L----JLJL-7|FJJLJLJF-JL7FFJL7|FJLJF-JL7L-7||L-7|FJ|F7||F7|LJF7||L-JF7L--JL7|F-JFJFJ|LJLJF-JFJLJL-7JFFFJ|J +JFL-L7.F----J|JLJLJ||||LJLJL--7F-JL------7F7FJLJF7F-7|L7F7L7L7FJ|L-7FJF7FJ-FJ|L-7||L7||LJ||||7FJ|LJF77||-F---J||F7L7L7|F---JF7|F----J|||F--. +|FJF-|.L----7L-7F7F-J|L7F7F7F7|L--------7LJ|L7FFJLJFJF7LJL7L7|L7|F-JL7|||F-JFJF-J|L7|LJF7|||L7L7L--J|FJL-JF7.FJLJL-JFJ||FF7FJLJL----7-J-|.|7 +J|.|L7FF7F-7L-7LJLJF7L7||||LJ|L-------7FJF7L-JFJF7FJ.||LF-JFJ|FJ||F7|LJ||L-7L7L-7L7|L--J|LJL7|LL---7LJF---JL-JF----7L-JL-JLJF---7F--J.||J-L7 +|-F7-LL||L7|F7L7F-7|L7|||LJF7L-------7LJFJL7F-JFJLJF7|L7|F7L7|L7|LJL7LFJ|F-JFJF-JFJL7F7FJJF-J|F----JF7|F---7F7L---7L7F--7F-7L--7LJ7.J.LF-F-7 +7-7L|.||L-JLJL-J|FJ|.||LJF-JL-------7L-7|F7|L-7|JF7|||FJLJL7||FJL7F-JFJFJL-7|-L-7L-7||||7FJF7|L7F7F7|||L-7.LJ|F-7FJ.|L-7LJFL7F7L--77FJ.|-7J. +--L7F-F|F-7F---7|L7L7||F-JF7F--7F--7L--J||LJF-JL-JLJLJL---7|||L-7LJF7L7L7F-JL-7-L7FJ|||L7L-JLJFJ|||LJ||F7L--7LJFJL-7|F7L---7|||F7FJ-J.-F-J.F +||L7|7JLJ-|L7F-JL7L7|LJL--JLJF7LJF7L---7||F7L7F----7F-7F--J|||F7L--JL7L7|L-7F7L7FJ||||L7L-7.F7L7|LJF7LJ|L---JF7L7F-JLJ|F7F7|||LJ||JLJFL||..| +FJFFFL.FLFJFJL7F-JFJ|F-7F7F--JL-7||F---J||||J|L---7||F||F-7|||||F7F7FJFJ|F-J|L-JL7L7LJFJF-JFJ|FLJLFJ|F7L-----J|||L--7FJ|LJLJ||F7LJF7|7FL7-FJ +L7L77JFFJL-JF-JL7-L-JL7LJLJF7F-7LJLJF7.FJLJL-JF---J|L7|LJFJLJLJLJ|||L7L7|L-7L---7L7|F7|FJF7L7|F7F7L7LJ|F------JFJF-7|L7L77F-JLJL7F-FL|L-F.J. +FJ-|||F--|F7L7F7|7LF--JF--7||L7L7F-7||FJF7F-7FJF--7L7||F7L7F-7F7L|||FJFJ|F-JF7F-J.LJ||LJFJL-JLJLJL-JF7|L-7F7F7JL-J7LJ7L7L7|F7F7FJ-FLFJLLJF.7 +FJ|LJ-L7.FJL-J|LJF7L---JF7LJL-JLLJFLJLJFJLJL|L-JF-J|LJ||L7|L7LJL7LJLJFJFJL-7|LJF----JL-7L----7F7F7F-J||F7LJLJL---77F-7FJFJLJ|||L77-.L-7LF|-7 +|-F7-|J|-L7F-7|F-J|F7F7FJL-7F7FF-------JF7F-JF--JF--7-LJFJL-JF7FJLF7LL7|F--JL-7L-7F7F7FJ-F7JFJ|LJLJF-JLJL---7F7F7L7L7|L-JF7-LJ|FJJ-FJ.F--J7| +L|LF7|-LL-LJFLJL-7||LJLJF-7LJL7L--------J||F7L7F-JF7L-7JL7F7FJLJF7|L7|||L7F7F-JF-J|LJ||.FJL-JFJF7F-JF------7LJ||L7L7|||F7|L--7LJ7-LF7-7F7LL7 +FJ-L77777LFJ-F---J||F7F7|FJF7FJF----7F-7FJLJL7LJF7|L-7L-7LJ|L---JLJFJ-||-|||L-7|F7|F-JL7L----J-|LJF-JF7F7F7L-7LJ-L-J|L-JLJF--JJ.77.L7..F7-J| +|||L|J.77-L|FL---7|LJ||||L-J|L7L-7F7LJ7LJF7F-JF-J|L-7L--JF7L7F-7F7FJ.FLJL|||F-J||LJL7F7L--7F7F7L--JF-JLJLJL--JF7F7F-JF-7F7L--7|||-LF7FFF7.FJ +|FF-JJ7LF7-LF----JL7|LJLJ7F7L7L-7LJL7F---J||F7L-7L--JF7F-J|-LJJLJ|L--7-F-||||.LLJF-7LJL--7|||||F7F-JF-----7F7||LJLJF-JJLJL---J7F||LL-LFJ|F7J +LL7.J.LFJ|.FL-----7|F7F7F7|L7|F7|F7FJ|F---JLJL-7L7F--JLJF7L---777L7F-J--JLJLJ7..FL7|F7F--JLJ||||||F7|F----J|L7|F7F7L7F7-F7F7F7F-77.|.||L-LJJ +LL77.L7L7L7F7F7F--J||LJ|||L7|LJ|LJLJFJL---7FF-7L7LJF7F7FJ|F7F7L--7|||J-JF||LL7FFF7||||L-7F-7LJ|||LJ||L-7F7F|FJ||LJL-J|L7|||LJ||FJ|F--J|JJJFF +LL|||L7.L7LJ||LJF-7|L7FJ||FJL7FJF--7|F----JFJFJ-L--JLJLJ7LJLJL-7FJ||-J7FJL7|7.FFJLJ|||F7LJ.L-7LJL7JLJF7LJL-JL-JL--7F7L7LJ||F7LJL-77.|LFJJLJJ +.|LL-J.7|L-7|L--JFJL-J|FJ|L-7||FJF7LJL-7|F7L7|JF7F---------7F7-LJ.LJ.LF-7-J7-7JL--7LJ||L--7F7L7F7|F--JL-7F7F------J|L-JF7LJ||F7F7L7777|.FFJJ +FL-|LFF--7.||F77FJF7F7LJFJF-J|LJFJL-7F7L7||F|L7|LJF-7F7F7F7LJL---7|.7JF-JJLJFFF7F-JF-J|F-7LJL7||LJL----7LJ|L--7F---JF7FJL--J||||L7|7-J7FFL-7 +||.|J|L-7L-JLJL-JFJLJL-7L7L-7L7FJF-7LJL7LJL-JFJ|F-JJLJLJ||L------JJ7-7LF|JJJF-J|L-7L-7LJ7L--7LJL7F7F7F7L-7L7F7LJF-7FJLJF---7||LJ-LJJ|.|LF-7| +FF|J.F|JL----7F7FJF---7L7L--JFJL7L7L-7.L7F-7FJ-||F7F---7|L--77L|LJ-F-L-L-F77L-7|F-JF-JF7-F7J|F-7LJLJLJL--J7LJ|F-JFJL---JF7FJ|L7|.|.F77-J.|FL +J.FJF7LLF--7.LJLJ|L--7L-JF7F7L-7L-JF-JF7LJFJL--JLJLJF--JL-7FJ77.|.|J.J-JJ|L--7||L-7|F7|L-JL-JL7L------7F---7J|L-7L7F7F-7||L7L7L7FL-FJJL7-LJ| +|F|F|7FLL-7|F7|-F----JF--JLJL7FJ7F-JF-JL7-L7F7F-7F-7L----7LJJLJFFFF--7|LLL7F7LJL--JLJLJF7F7F7FJF7F7LF7LJF-7L7|F7L7LJ|L7LJL-J7L7L7J.L|.LFJ.FL +FJLFF7F-7FJLJ|F7L-7F--JF-----J||FJF-JF--JF7|||L7LJFJF7F--JF|7.LFJF-JF-JJLLLJL-7F7F-7F-7|||LJLJFJLJ|FJL-7L7L-JLJL7L7FL7L7F7F7F7L-J.FFJ|.|.7-L +77F7|||FJL--7LJL7|LJF-7L7F-7F7L-JFJF-JF--J||||FJF7L-J|L---7F7F77L7-L|J...-F--7LJ|L7LJFJ|LJF---JF-7LJF-7L7L--77F7L7L-7L-J|||LJL----7JL|F|FL-| +F-JLJLJL---7L--7|F7-L7|JLJ.LJ|F-7L7L--JF7FJ|||L-JL--7L----J|LJ|7.|FL|.FL.FL-7L--JFJF7|FJF-JF7F7|JL7FJFL7L---JFJ||L--JFF-JLJF--7F--J7.LJ-7JF| +L-7F-7F-7F7L---JLJL-7||F-7FF-J|FJFJF7F7||L7LJ|F-----JF-----JF7L77-JL|77FL77|L-7F7L7|LJL7L--JLJ||F-JL7F-JF--7-L7L------JF7F7L7JLJ|F||F|-J.F|| +L.LJ.||FJ|L-7F-7F7F7LJ|L7L7L--J|FJFJLJLJL-JF7LJF----7L7F--7FJL-JJ|FFJ|L7--L||FJ|L7||F-7|F-----J||F7FJL--JF-JF7|F------7|LJL-J7-F--7FF77.--77 +.FLJFLJL-J7FJ|FJ||||F7L7L7|F7F7LJJL7F7|F7F7|L--JF--7|FJL-7|L-7F7-FFJL7-7|.LLFJFJFJ||L7LJL-----7|||LJF7|F7L--JLJL-----7|L-----7-L7FJ7|L.FJL|| +FF7-FJF--77L-JL-J||LJL7L-JLJLJL7JF7LJL-JLJLJF---JF7LJ|F--JL--J||F7L7-|7L77.FL7L7L-JL-J.F--7F-7LJ||F-J|FJL-7F7F-------JL------JF7|||JL7F|.|L| +LFF7||L-7L7F-----J|F--JF7F----7|FJ|F---7F7F7L---7|L--JL--7F7F7||||F7F|J-||F7J|FJF-----7L-7|L7L-7LJ|F7LJF-7LJ|L7JF7F7F7.F7.F7F7|LJL-7.F-F-J.| +.FJL--7-L7|L------JL-7FJ||F--7||L7LJF-7LJ||L7F-7LJF------J|LJ||||||L7J-F7J7LFLJ7L----7L--JL7|F7L-7||L7FJFJF7L-JFJLJLJL-JL-J||LJF---J-J|L-7LJ +FL---7|F7||F7F---7FF7|L7||L-7LJ|JL-7|FJF7LJFJ|7|F7L-7F7F7F|F-J|LJLJFJJ.||||||F-7JF7F7L---7FJLJ|F-JLJ|LJ-L-JL---JF-----7F7F7LJF7|F--7-FJ7L7.| +7-LLFJLJLJLJLJF-7L-JLJFJLJF7L-7L-7-LJL-JL-7L-JFJ||F7LJLJL7||F7|F--7|JLF|L77--|FJFJLJL----JL7F7||F77F----7F------JF---7LJLJL--JLJ|F-J-|.|7LJJ +L--L|F-7F-7F7FJ-L-7F-7L77FJL7FJF7L------7FJF7-|FJLJ|F-7F-J|LJLJL-7||7LFJFJ.F7|L-JF7F------7LJLJLJL7L---7LJF7-F7F7|F-7L7F7F7F----JL-7FJ-J|FJ| +|-|.LJFJL7LJ|L-7F-J|FJFJFJF7LJFJ|F-----7|L-JL7|L--7|L7|L-7|F--7F-JLJF-JFJ|F-7L---JLJF-----JF7F-7F7L7|F7|F-JL-JLJ|||FL7LJ||LJF------JJ|LL7LF- +L--L-FJF7|F7L7FJL7FJ|FJJL-JL7FJFJ|F-7F-JL-7F7||F7FJL7|L-7||L-7|L--77L-7|F7L7L7LF7JF|L---7F-J||L||L7L7||LJF7F7F--J|L-7|F-J|F-J.F--7|JFFJ.7-LJ +.|-|.L7|LJ|L7|L-7|L7LJF---7FJL7L-JL7|L-7F7LJ|||||L-7|L-7LJ|F-JL---JF--JLJL7|FJ7|L7FF7F7JLJJFJL7LJ7L7LJL--JLJ||7F7|F-JLJ|FJL7F7|F-JF7-F7FJJ.. +F.FF-FJL-7L7LJF-JL-JF7L--7|L--JF---J|F-J||F7LJLJ|F-JL--J-FJ|F7F--7|L----7FJ||F7L7|FJLJL----JF7L7F7-L7F-----7||FJLJL7F---JF7LJLJL--JL-JL77FL7 +77-|LL-7FJLL-7|F-7LFJ|F7FJL7F7-L7F-7||F-JLJL7F7.LJ-F7F7F7L7||||F-J7F-7F7||FJ|||FJ||F--7F---7|L7||L--J|F---7|||L-7F-J|F---JL-7F---------J-FJ. +L7.L7LFJL7|FFJ|L7L7L7LJ|L7FJ||F7|||||||F---7LJL---7|||LJL-JLJ|||F-7L7|||||L7LJ||FJLJF-J|F--JL7||L----JL--7LJLJFFJL--JL-----7|L-----7|FLJJ|J. +|L--J-L7FJ77|FJLL7|JL-7L-JL-J|||LJFJLJ||F7FL------J|||F--7F--J|LJFJFJLJ||L-JF-J||7F7L--JL---7|||.F7F7.F-7L7F7F-JF7F7F---7F-J|F-----J777JL|.F +J7..|-FLJ|F7LJF--J|F--JF-7F-7LJL7FL77FJLJL7F------7||LJF-JL--7|F-JFJF-7LJF--JF7|L7||F7F---7LLJLJFJLJL7L7|FJ||L7FJLJ|L--7LJLFJL--------7J.JF| +FF--|-7FFF||F7L--7LJF--JJLJ|L--7L-7L-JF--7LJF--7F-J||F7L7F7F-J|L7|L-J7|F-JF7FJ||FJ||||L--7L-7F7FJF--7L-JLJF||FJL--7|F--J-F7L-7F-7F7F--J77.J| +FLJ-L-F7FF|LJL7F7L-7L7F-7LF7F-7|F7L--7L-7|F7L-7LJF7|||L7LJ|L7FJFJF7F7FJL--J|L7LJ|-||||FF7|F-J|LJFJF7L-7F---JLJF7F7||L7F--JL-7LJFJ|LJJLLFJ--7 +7J7.L|LL-JL7F7LJ||FJFJL7L7||L7|LJL-7|L7FJLJL--JF-J||||FJJFJFJ|FJ.||||L-7F-7L7L7FJFJ||L7|||L7FL--JL||F7LJF---7FJLJLJL-J|F---7L-7L7L7||FFF7|J| +F-F7LFF7L-FJ||F7L-JFJF7L7LJ|FJL----JF7LJF7FF-7.|F-J||||F7L7|FJL7FJ||L-7||JL-JFJL7L7||FJ||L7L7F7F--JLJL7JL--7LJF7F7F7F7|L--7|F-JFJFJ-J---LJF| +L-.LJ|L77LL7|||L7F7|||L7L-7LJF------JL--JL7L7L7||FFJ||LJL7|||F-JL7|L-7LJL7F7FJF-JFJ||L-JL7|FJ||L-7F--7L7F-7L--JLJLJLJLJF--JLJF7L-J-7JJJ.L-L- +|-|LF7.LF7LLJ||FLJ|L7L7L--JF7|F-----------JFJFJ||FJFJL--7||LJL7F7||F7L--7LJ||FJF7|FJL---7LJL7||F7LJF-JFJL7L--------7F-7L--7F7|L-7JF77-JF.LL7 +7|L|.||.J77J.LJ-F-JFJ7L--7FJLJL--------7F77|FJFJLJFJF---J||F--J||||||LF-JF-J||FJ||L7F7F7L-7FJ||||F-JF7L-7L--7F7-F7JLJ.L7F-J|LJF7|FJ|7FFL7-LJ +|7F|F7|7JF7-FJF|L--J7F---JL7F---------7LJL-JL7L7F-JFL--7FJ|L7F-J|||||FJF7|F7||L7||FJ||||JFJL7||||L7FJ|F7L--7LJL7|L-7F7JLJF-JF-JLJ|FJF-7-F.FJ +F-LJ|J7|--JF7-F7FFF--JF--7FJL7F7F7F--7L-7F--7|FJL--7F-7||FJFJL-7|||||L-J|LJLJ|FJ||L7|||L7L-7||||L7||JLJL--7|F-7LJF-J|L7F7L-7|.F7FJ|FJFJ|JFF7 +|-|LJF7||.J-|.||FFJF-7|F-JL7F||LJLJF7L7FJL-7LJ|F---JL7||||FJF7FJLJLJ|F7FJF---JL7|L7|||L7|F-JLJ||FJLJF7F---JLJLL--JF-JFJ|L-7||FJLJFJL7|F7F7LJ +L7L7|FJL-7.-JL|L7L-J|LJ|F7FJFJ|F---JL-JL---JF-JL--7FFJLJ|||FJ|L----7|||L7|F7F7-|L-J|||FJ|L--7FJ||F--JLJF-7F7F-----JF-J||F-J|||F--JF7|LJLJL7J +LJFF---|.|7FF.L7L--7F-7LJLJJL-JL----7F7F7F7-L-7F--JFJF--J|||FJF7F-7|||L7|LJ|||FJF-7|||L7L-7FJ|FJ|L-7F-7|FJ|LJF7F-7FJF--JL--JLJL---JLJF----JJ +||LJ..LL-.J-FF7L--7|L7L----7F7F7F---J|||||L7F7||F-7L7|F-7|LJL7||L7|||L7LJF-J|LJFJ7LJ||FJF-JL7LJFJF7|L7||L-JF-JLJF|L-JF7F--7F--------7L--7JL- +|J7..||.|FJFFJ|F7L||-L----7LJLJLJF---JLJ||FJ||||L7|FJ||FJL--7|||FJ||L7L-7|F7|F-JF7F7||L7|F7-L7FJF||L-JLJFF7L----7L7F-J|L-7|L7F-----7L7F7|.|| +|.LF-F7FLJLLL7LJL-J|F-----JF-----JLF----J||FJ|||FJ||FJ|L7F7FJ||||FJL7L7FJ||||L-7|LJ|||FJ|||F7|L-7|L7F7F--JL7F---JFJ|F7L7FJL7LJF7F-7|FLJLJ-|7 +F7JL|.|||J..LL7F--7|L------JF------J|F7F7|||FJ||L7|||-|FJ||L7|||||.||FJL7|||L7FJ|F-J||L7|||||L7FJ|FJ||L---7LJF--7L7LJL7|L7FJF7||L7LJ-LJFL|.. +-|-F-F-|77-7FFLJF7||FF7F7JF-JF7F-7F7FJ||||||L7||FJ|||FJL7|L7|LJ||L7FJ|F7|LJL7||FJ|F7|L7|||LJL7|L7|L7|L7F-7L--JF7L7L7F-J|FJ|FJ||L7L7JJFLJ---| +L-.F-7L7|LF-7F7FJLJL-JLJL-JF7||L7LJ|L7|||||L7LJ|L7||||-FJL7|L-7|L7||FJ||L7F7|||L7|||L7||||F-7|L7LJF||7|L7|F7F-J|FJF|L-7||FJL7|L7|FJF7-F--J.7 +-J77FF7L7FL7LJLJF-----7F7F7|||L-JJFJFJLJ||L7|F-JFJ||||FJF7||F-J|FJ||L-JL7LJ|||L-JLJL7|LJ||L7LJFJF--JL7L7|LJ|L-7||F-JF7|LJL-7||FJLJFJJ||7.|F| +FJ|LLJF-J77L----J|F7F-J|||||LJF---JFJLF-J|.LJ|F-JFJ|||L7||||L7FLJ7LJF7F-JF-J||F-7|F-J|F-JL7|F7L7L--7FJFJL-7|F7|LJL7FJLJF7F7LJ|L-77||LFF-F-FL +77J|FF|JL|F-------JLJF-JLJ||F-JF--7|F7|F7|F--JL-7|FJ|L7||||L7L--7F--JLJF7L-7LJ|FJFJF7||F7FJLJ|FJF--JL7L7F7||||L-7FJL-7.|LJL-7|F-J-J|-FJFL7|7 +|J-F--J.FFL-7F-7F7F7FJF7F-J||F7|F-J||||||||F-7F-JLJFJFJ||LJFL7F-JL--7F7||F7L--JL7|FJ|||||L7F-JL7L7F7FJJLJ||LJ|F-J|F-7L7L7F--J|L7..L7||J|FJLJ +J--7.|7.JFF-J|-||||||FJLJF7|LJLJL-7LJ|||||LJFJL--77L7|FJL-7F-JL---7FJ||||||F7F7FJ|L7|||||FJL7F-JFJ||L---7||F-JL-7|L7L7L-J|F77L7|-L.|FF7|LL|| +L-|.-J7-F-|F7|FJ|||LJL7F7|||F--7F7L7FJ||LJ|FJF7F-JF-J|L7F7|L7F7F--J|FJ||||||||||FJFJ|||||L7FJL-7L7||F-7FJ|||F7F-JL-J.|F7FJ||F7LJ7F--7JLJ7LF| +|JL7J||.J-LJ||L-JLJF7FJ|||LJ|F7LJL-JL7||F--JFJ|L-7L-7|FJ|||FJ||L-7FJL7LJ||||||||L7|7LJLJL7||F7FJ-LJ|L7|L7|||||L-----7LJLJFJ||L--77|J|-FJF-L7 +J-|7LJJF7FJ-||FF---JLJFJ||LFJ|L7F7F7FJ||L7F7|FJF7L7J||L7|||L7||F-J|F-JLFJ|||||||J|L---7F-J|||LJF---JFJ|FJLJLJ|F7F-7FJF7F7L7LJF-7L7-F..L7F7|J +|LL-.LF-77.-LJFJF-7F7FJ.||FJFJFJ|LJ|L7LJFJ||||FJL7L7|L7|||L7LJ|L-7|L--7|FJLJ|||L7L7F7FJ|F7||L-7|F-7FJ||L-7F7FJ||L7LJL|LJL-JF7|LL7|.LF|-J|JLJ +L.-J.FJ|LF77-FJFJ-||LJF7||L7|.L7L7FJFJF7|FJ|||L7||FJ|FJLJL7|F-JF7||F-7|||F-7||L7L7LJ|L7||||L7FJ||FJ|-FJF7LJ||FJL7L---JF7F7FJ|L-7LJ7--JF|LF7J +F7J|F7J7---7FL7L7-LJF-JLJ|FLJF-JFJL7L7||LJ7LJL-JFJL7|L-7|JLJL-7||||L7||LJL7LJL7L7|F-JFJLJ||FJL7||L7L7|FJL--JLJLLL7F-7FJLJ|L7|F7L7JL-J-F--|-J +FF.FLJL-7.LJ-LL7|7F-JF7F7|F7FJF7L-7L7LJL----7F--JF7|L-7L7F7F--J||||FJ|L--7L-7FJLLJ|F7L-7FJ|L7FJLJLL7||L------77F7|L7|L--7|FJ||L-J7-L-7|L-J|| +-|7-|.-7J-7-FJFLJ-L7FJLJLJ||L7||F7|FJF------JL-7FJ|L7|L7|||L--7||||L7L7F7|F-J|-F7FJ||F7|L7L7|L7F--7LJ|F7F---7L7|LJFJL---JLJFJ|JLLJ--7L|-7F-- +|L7F77FJF-J.||FJF|J||F---7|L-J|LJLJL7L----7F7F-JL7L7L-7|||L---J|||L7||LJLJL-7L7|||FJ||||7|FJL-JL-7L--J||L--7L7||F7L-------7|FJJ7LJ-FJFLL-|J. +L-7FJ7F7F|77.77LJJ|LJL--7LJF7FJ-F---JF-7F7LJ||F-7|FJF-J|||F7F-7|||FJL---7F--JFJ|LJL7|||L7|L-7F7F7L-7F7|L7F7L7LJLJ|F------7|LJJLF.|F-777.L-J. +||JLJ-L7LJL7-JJ-|-LL-F7-L-7||L-7L---7L7|||F7|LJFJ|L7L-7||LJ|||||LJ|F7F7FJ|F7FJFL7F7||||FJ|F-J|LJL--J||L7||L7L---7|L-----7||JL|LF7|7.LL-7-7.F +L|7FL||L|L7||J7.L7LLFJL---J||F7L7F--JFJLJ||||F-JFJFJF7|||F7LJFJL7FJ|LJ||JLJ|L--7||LJLJ|L7|L7FJF7F7F7|L7|LJFJF7F-JL7F-7F7|LJ|-F--L7JFLJJ|||-7 +.|--FL|FF7L---|..|FFJF---7FJ|||FJL-7FJF-7||LJL-7|FJFJ|||||L--JF7|L7L-7LJF--JF7FJ|L---7L7||FJ|FJ||||||FJL7-L7||L--7|L7||LJJ-L-L7JJJ.|J|F77.|| +F|.LJ.F-F7J||.L77--L7|F--J|F||LJ|F-JL-JFJLJF---J|L7||LJLJ|F--7|||FJF7|F7L--7|LJ-|F7F-JFLJLJ.LJ-LJ|||||F7|F-J||F7FJ|FJ|||L|J7|7||J.77||LLL7-L +FF-77.L7LL--|-|L7-77LJL--7L7||F--JF-7F7L7F7L-7F7L7|L7F7J|LJF-J|||L7||LJL-7FJL7F-J||L--7|.|JF|J-FL||LJLJLJ|F7|||LJFJL7LJ7FJ---77JF|||7|7.|..J +|LL777.--F-7J7|J.FJL7LLF-JFJ||L--7|FJ|L7LJL7FJ||FJL7LJL7F77L-7|LJFJ||F---JL-7|L7FJL-7FJJ-L7LJ-77-LJJ|LF--J||||L-7L-7L---77|L|LJ7FLJ|7..F7F|| +L-J||J.J.LJ|L77.FF--|FL|F7|.LJF--J|L7L7L7F-JL7|LJF7L7F7|||F7-||F-JFJ|L--7LF-J|FJL--7LJ|JF-77FF|F-|LF-FJF-7|||L7FJF-JF-7FJJ7.L-F7-JLL7--7---L +L|LL7FF.F|F.|||7L7JJ|FJLJ|L7F-JF-7L7L7L7LJF--JL7FJL-J||LJLJL7||L7FJFL7F7|FL-7|L7F7FJ-L7.JF|F-|J||JF7|L-J.LJ||FJ||L7FJFLJJ.FF7F7JLFJL-..LLLJL +.7J-|-F7F77FJJJ7.|JF||LFFJFJL-7|FJFJLL7L7J|F-7FJL7F-7|L7F7F-J||FJL7F-J|LJ7-FJ|FJ||L7J-L7||-7.--J7FJL-JL|7LFLJL7L-7LJ|LJJ|J7|FL--7J7J-J.||L7L +.L.7.LLF-JLF|-77-|-FLJ.FL7L-7FJ||FJ|-|L7L7||FJ|F-J|L|L7|||L7.LJL-7|L-7L7-7-|FJL7||FJ.L-L||.|---J|FL-7.FJJ-F---JF-J|FJJJ||FF77.|L|LJ.7F7-|J7J +|.FL-F-JJ.FL--JF.L7|JJF|LL7FJL7||L-7F-JL7|LJL-JL7FJFJFJLJL-J.|J|.||J.L7L-7JLJ-L||LJ||JF7|F-FJ-.FF-JFL|7JJ-L7F-7L7F-7-F-JLFJ|LL77LF7|F7LL|L7- +F-J|.||7F7LJFL7J..FJ|L7J|.LJFLLJL-7|7|L|||F-7J.||L7L7L-7.||-7J.L-LJ7-.L--J7|JJFLJJ.JJ-L-J-7L.L|7JLF|J||7.F7LJLL-J77JFJ-JLL7.7.--.LJ|LJ--7.|| +7JJFF-J|-7-7|FJLJ-J.F7..FLL|7FL|J.||LF--JLJFJJ-F|FJFJF7L7--F--||FJJ||-JLJ7LJ..FLL--J|..|-LLJ7L||7LF7L|.--L-7|F|||LJF-JL7.FJL7-L7.F|F7||L|JLJ +|JF-J-LJL|.|L-L7..F--7-L7|L-7FL|LFLJFL--7F-JJ-FFJ|-L7||FJJFLJ7.7LL|FJ7F7J|7FF-J|J.|.-J-F--L7L-----|JFLF.L-L-L7|L--|LJ.7-FJJ-|7.FF|7J|F--FJ7J +|-LL7|L|FJ-JF|L|77||JJL||FL7L77|-FLJ||LLLJJLL7FL7|F-J||L7FJ7-FJJ--7|-7|F7LL7LL7L-|.-.|-|J7.LJJ|J..L.J-J7.FFF.L|..FJFL-|.LLF--J-FJJ.-LL-7|.F7 +LF.|-F.-7JJF7.|J|F---7-L--J77JL--J.FLF.J-JF77F77LJL--J|FJJ|L-L|-F7L.7L-L77F7.F7|7|--7JJ.F-L-FF7JFF77.|.--FFJL-LFF77|..L7JLJ..LLL.F7.JL--7F-F +FF.J7LL-7.FL77F-|777LJ7||--JJF||FLF-F.L-|FL7-|-LJ-|L|L||JLJL7F----|-J|.LLJLJ7F|LFLJ.-J-F|.|JLJJF|LJF7-7.F||7|J|...FL-7-JJFF-77.L77F|F7||LL.| +|LL|-.L-J7JLJ-JJLL7--J----LJ.|L-L-L-L-LJLJ-L-|J.J.|.-JLJ77.LL|J-|-LF-LJ.L-|7LF--|JLJ-L---JJ.FLLLJ7-FJ.L.LLJ-|L|.LJ-LJJLL7.LJLJ-LF-7LJ-JJJ--. \ No newline at end of file diff --git a/2023/15/15.rs b/2023/15/15.rs new file mode 100644 index 0000000..881702d --- /dev/null +++ b/2023/15/15.rs @@ -0,0 +1,15 @@ +fn hash(s: &str) -> u32 { + let mut value: u8 = 0; + for c in s.chars() { + value = value.wrapping_add(c as u8); + value = value.wrapping_mul(17); + } + value as u32 +} + +fn main() { + let input: &str = include_str!("input.txt"); + let steps = input.split(","); + let part1: &u32 = &steps.map(hash).sum(); + println!("{:?}", part1); +} \ No newline at end of file diff --git a/2023/15/input.txt b/2023/15/input.txt new file mode 100644 index 0000000..0b1a994 --- /dev/null +++ b/2023/15/input.txt @@ -0,0 +1 @@ +hbrg-,vc-,jlls-,cvmq=5,cpm=9,hgct=4,bnblt=7,ccmd-,fs=2,cttxtn=6,bsn=5,rmj=8,rkxg-,ps-,xf-,gnhm=7,nbcg=7,xx-,gph-,hrc-,ppl=9,ng-,cxjsr-,jd=7,jmq-,zj=8,nnmj-,glplq-,zdd-,mk=6,fj-,qx=5,vj=1,jf=3,hrh-,jqc=4,dq-,nnmj=9,tvz-,xltm=5,msz=2,fnn=2,dnjdn=1,bkc-,lc=6,cpk=3,lmxv=8,gph-,mx-,gcfl=8,kk=5,cxfrpr=6,zpj-,lpbrxv=2,dv=8,fj-,fdcl-,rvvv=5,jqqkmd-,hrg-,cqg-,ljrdxk-,dhq=1,hpr=3,gsq-,zj-,ghf=1,rdt-,hrg=5,qqh=3,tcv-,xtm=5,drp=3,jkv-,qjgqb=6,smsh=1,zrcqs-,hgct=5,qx=1,xvd=3,rc=9,kknkjz-,cvq=4,sq=3,qvkv=7,prk-,ktp-,xln=3,cnm-,vct=5,xc-,cs=6,prtnpg=6,ttvl-,kknkjz=7,dgtn-,zv=4,ctqtk=3,mdv=6,rc-,zl=9,trq-,qfp-,pmgsxv=9,dzr-,cdzfk=3,xfvj=2,tqp-,nnmj-,hbrg=9,ckk=7,bjrvxh=3,khlc=5,dmq-,tclnp-,pkd=6,np=9,fnn-,kjqx-,pkd=3,jctv=3,gzm=2,bb-,kd-,kmnr=4,fhvv-,jqc-,mnv-,lpjl-,vqh-,zz=7,xgzzl=3,qjgqb=3,rds-,zqv-,db=7,xx=9,psm=2,gbfb=7,fs=9,rp-,tv-,pc-,gsq-,trq=2,mvs-,xnbx-,kh=7,kl-,rm-,nqm-,smk=8,pt=1,bbf-,rsgx=6,lpjl=8,tmg-,kjqx=8,kbvm=9,tj-,btl-,xs=2,bh=8,gh=8,dt=5,st-,php=8,bx-,jpksf-,pmp-,dvd-,rgxnz=8,jf-,hd-,lx-,ncm=4,jd=3,rbt=6,tj-,ds-,jkdr-,pdbh-,hnn=3,smk-,frrg-,pskx-,hk-,rt=3,cg-,jcp-,zst=6,qxsddj-,klj-,ph-,rsvzkj=1,rgxnz-,cnm-,xss=6,bh=2,jnv=8,qspjl-,bbf-,njjk-,htm=1,kjt-,tdk-,hzs=7,lxx=6,xgzzl=5,ssns-,gd=9,rt-,gst=1,mdv-,crg=7,zh=1,cqg=8,lxrk-,jbd-,tmg-,nqm=6,gph-,pkd-,vr=8,ccmd-,mvs=6,gq=9,xjkhv-,jxl-,jd-,kcgxz=4,php=3,cg-,xss=4,dk=2,tv=2,dhx-,rdh=6,tc=4,sp-,hnn-,fxk=2,jm-,zt-,pkd-,ftpxd=5,rp-,xjhdk=5,lq=5,lnv=3,jkv=7,rdh-,rc-,dv-,xzh-,tgn-,dx-,zsvjv=9,vz=9,kj=3,bh-,gf=2,fl=9,nkr=9,gzm=9,pgm-,glcx-,kmnr=2,qs=1,tj=1,mq-,gvbrv=5,rsr=8,fhvv=5,tp-,tj=8,qlqm=1,ctml-,dvlpz-,bvx-,qspjl-,jm=3,ncdnz=2,qxn=5,kvcv-,szxvn=8,gnhm-,xhv-,gjcm-,lb=7,cpf=6,kqnlm-,ghq=8,sq=8,rsr=7,dgtvts=9,vgfgh-,fldd=8,htm-,frlqr-,bm=7,cg=1,kk-,ccfzjq-,nbcg=8,xkh=7,lpjl=5,dj-,tc=8,njlmn=4,mx=1,zl-,xjhdk-,sv=9,kl-,fbk=1,rgxnz=1,cdcb=9,klj=9,lmxv-,hcgtn=7,ltljr=1,xs-,br=3,sq-,qg=1,vz-,rmj-,qzg-,zrcqs-,mfgxcx-,bm-,fgq-,rsvp-,njjk=8,ldv=4,gknc-,gzktrh=3,vr-,dlsm-,mx-,xs-,btl-,jf=5,ljrdxk-,bnblt=4,rk=2,mk=4,kgvq-,bh=6,dncb-,vh=8,mxzbj=5,cxjsr-,sdcx-,fldd-,kh-,gc-,cs-,fl=1,jrkql=7,pm-,rsvp=6,kh-,glf-,cvmq-,zcq=4,fmd-,ttvl=5,vdc=2,cpf-,dx-,kbvm-,gd=9,kknkjz-,zz-,zh=2,ttvl=8,pgx-,jcj=6,ppl=3,fmd-,zc=9,nvlff-,lnv=6,kgvq-,fdcl=4,dnjdn-,thzx-,nq-,blqv-,psn=4,mxzbj=8,cvq-,fzt-,rbt=9,zb=4,cg=1,jsjfs-,pl=7,pdbh-,dt-,kmnr=9,sqv-,gbfb=9,xtm-,bzl-,smk-,sv-,pjx-,ncm-,dj-,ctms=5,bm-,fgd-,qspjl=8,pvm-,lhc=5,ls=8,sqv=7,htv-,zt=5,kvsd=7,gd-,jjf=7,kd=1,cqg-,sg-,tghsj=2,bf-,nnmj-,ng-,dbcb-,dgd=9,zdd-,xkh-,gh-,bvm-,rb-,zmfz-,xkh-,lpjl-,sz=8,ppl-,khlc=6,cnm=4,xf=8,ljrdxk=4,dlsm-,rnt-,dr-,rsr-,nm-,qhtc-,tz=4,rvs-,dnh=9,nflm-,dnl=5,xhv=1,ql-,jbmd=4,gbfb=6,ps-,ltf=8,mmn-,frrg=8,rh-,dmq=6,ng=6,ngd-,hn-,smsh=1,cg=4,vqh-,ncm-,zd=3,sqv-,lmxv-,qlqm=8,ztgnkx-,nkr-,qjmx=5,cv-,lc-,pc-,zhq=5,blqv=4,ncm=8,tflb-,rsr=2,dvlpz-,mxl-,gc-,rm=1,zt=8,fmd=2,dncb=1,xss=4,cqh=5,dlm=5,jctv=1,gbfb-,xm-,kz-,sz=6,btl=9,pv=7,hzmp=8,nsjt-,mnv=4,vc-,jbd-,ccmd-,dlsm-,ldv=8,clj-,stdm=7,ct=4,xs=1,rkxg=7,np-,qgt-,hrv=8,pr-,bzhf=7,fbk-,xf=2,gv=2,tc=7,km-,ltljr=4,gxc-,dnh=9,pdbh=7,ltf-,ldv=4,qx-,frrg=8,tz=2,jmq=7,tsd=7,vx=2,rmhz=2,zpt-,df=5,zdd=6,sz-,rh=6,tv=1,rvvv-,khlc-,tgk=3,smk=7,qgt=2,jsjfs=8,zmfz=9,nqm=3,vct=1,lc-,hd-,tljj=2,lh-,frrg=7,zk-,kjqx=5,cvj-,qm=4,zj=4,tcv=4,xfvj-,ndfqxt-,vqq=7,fv-,hdr=7,xx=7,tnjs=5,dxb-,gjcm-,xkl=7,ncdnz-,zd=8,ndtf-,vmhh=5,prk-,pjg-,vt-,hrc=4,pm-,qvkv=9,gst=4,rq=2,prtnpg-,jcp-,zgms=4,sz-,vqq-,qgt=7,xfvj-,sqftz=4,cnm-,psn-,kjt=9,bzl=1,xzh=2,vqq=1,prb=3,tcv-,mpcvh-,lb=6,bf=5,pjx=4,lxpmn-,dx-,dz-,qfp=2,tcv=8,tx-,fj=3,tx=8,lhc-,rkh-,ttvl-,vc-,zdd-,jmq-,rbt-,psn-,cqh=9,gcmgdr=1,mk-,fgd-,mk=9,dr=9,dk-,sp=5,kvcv=8,xc=6,fxk-,jpksf-,tclnp=2,lcc=2,ttvl-,kknkjz=9,hh=1,rh-,rt-,hgct-,grdp=6,qvkv-,dcz=3,jpksf=9,tsd-,nflm=4,glplq=4,rmd-,gddfx-,vc=7,njlmn=9,xxfz-,nflm=7,jpksf-,ssns=5,spx=1,rft-,fvt-,lzz-,qxn=3,ghq-,xm-,pz-,rv-,mxzbj=4,prtnpg-,xxfz=8,hbhvz-,lfp-,cqg=1,lcc=9,pjx-,zqv-,fldd=6,rdh-,ks-,rvs-,hzmp=5,zmx-,qs=8,zk-,xn=1,ddll=6,rmj=5,ljrdxk-,fbk-,bvx=5,km=2,bm=1,ccmd-,fvt=5,pp=7,km-,zd-,vqh-,hrc-,sqv=8,cdcb-,qht=2,gb-,gzktrh=9,nb-,nflm-,fqv=5,tflb=2,ph=2,gph=8,pd=7,psn-,hnn=1,grdp=4,vmhh=8,vt=2,xf=6,tnc=4,cvq=2,hzs-,rkh=6,zmfz-,km=8,mz-,lvzqj-,jqhl-,rvs=8,ctm-,cvmq=3,dmq=5,dzqx=1,pc-,fgl=4,kvsd=8,lcc=5,vqq=7,hcv=2,lx=4,tgk=5,gph=9,dnjdn-,gg-,dnl=1,ltljr=2,jkdr=8,tj-,cpk=7,mk=5,ssns-,kz=6,bhk-,fgq=2,pz-,pc-,zgms=7,zmx-,hvk=9,gb=9,crg-,mk=3,gg-,sg-,jkv-,vmhh=8,ctms=4,drp=1,gddfx=4,zrfvq=5,tv=7,pqv=5,dj-,bqgn-,rm=2,rmj=3,dk-,hvk=1,cvmq=4,jbmd-,xxfz-,ndfqxt=5,bbs=6,rdt-,lbf-,rsvp-,mx-,kl=8,tdk=6,bb=8,ds=8,nqxk-,gsq-,vt-,fkc-,xtm-,qjmx-,bzl=6,pnp=7,pz-,cdzfk=9,dx-,frrg=3,pskx=5,cpf-,tc=3,lb=6,md=3,tj-,jm=2,tqp=3,cs-,jnv-,jctv=8,cgbg-,hbrg=7,pm-,gxc=6,vz=2,gg-,kvcv=7,pkd=4,ttvl-,jjf-,gj-,md-,rsgx-,hd-,cv=3,xf-,ddgf=4,lxx-,dgk=8,dvlpz=1,dlm=7,kknkjz=4,nbt-,rbt=3,cv-,cdcb=9,jvx=4,cnm-,fl-,dhq-,mxzbj-,zc-,kmnr-,fqv=1,gjcm-,fgl-,qgt=8,grx-,xpv-,km-,jbmd=3,bf=1,ttvl-,pnp=7,gh=1,xkl-,zpt-,gts=3,jsjfs=7,jqc=2,lxpmn-,jm-,sdcx-,rgxnz-,hzs-,nflm=5,prb=5,vz-,frlqr=9,ckk-,tghsj=6,vr=3,lh=1,gbfb=6,pgx=1,ls=8,mhxq-,tv-,md=8,bbf-,vqh-,rkxg-,szxvn=4,tz-,lxrk=3,ppl=2,bm=8,kj=7,qvkv=9,bh-,lg-,vxq=2,pdbh-,gvbrv=8,drp=2,cg-,pm-,lpbrxv=9,kl=2,pg=3,jbmd=9,xltm=9,dncb-,lcc=3,hgct-,khlc=8,trq=2,zpj-,tljj=8,cdzfk-,qspjl-,lfp=1,zt-,kj-,nm=4,lxrk=4,bbf=9,glplq-,kvcv=1,dgtn=2,gknc-,vxq=6,fs-,gvbrv=3,qjmx=1,sz-,pv-,lhgdbs=5,sg-,lfp=9,qbc-,llkb-,zl=3,kk=5,hnn=2,msz=6,pg=2,klj-,frlqr=8,xnbx=2,tv-,jnv-,kgt=2,kdts-,dh-,nbcg-,trgjf=1,pgm=4,gvbrv-,rvvv-,jcj-,xjhdk-,lb=3,fs-,cs=5,lx=5,ct-,xkl=1,vh=5,clj=9,xjkhv=4,fbk=5,bjrvxh-,jh=6,blqv=5,jcp-,dv-,cgbg-,sqv=3,ckk-,lh-,mx=4,kjt=2,mx-,st-,mdv=6,hk=6,mn=2,lfp-,ltljr-,rc=1,pv=7,hz-,gsq=1,vgfgh=1,jkf-,pgx-,jqc-,mnv=1,glb=6,bvm-,qxn=6,gg=2,mk=7,sv=4,zc-,gb=2,rft-,pxqj-,lg=3,blqv-,pnsqf=5,dn-,rsvp-,pgx-,prk-,cdcb=1,xhv-,qbc-,kbvm=3,msz=8,dg=4,clj=1,kj-,fl-,ls=5,mmn=2,blqv-,rv=7,gcmgdr-,kl-,dnjdn=7,dd-,zcq-,tt-,jqqkmd-,jxl-,xz-,ztgnkx=6,lxrk-,kd-,kh-,fxk=5,qg=1,jbmd-,fvt-,lzskx=1,dvd=6,nh=2,jm=7,tgk=1,qgt=9,rj-,cpk=5,prb-,xfv-,kbvm=5,cnm=2,ssx-,gh-,pdtxl-,kdts=5,tljj-,xtm-,kmnr-,fl-,gbfb=4,tdk=1,vhp-,dn-,ztgnkx-,vqq-,dd-,xs-,rmj=2,grk-,pjx=1,hbrg-,dk-,pc=6,vj=2,gv=2,lpbrxv=6,ddgf-,pr=2,fxk-,ct=3,tcv=6,bjrvxh-,gjcm=1,kvcv=2,ndtf=8,khlc=5,fl-,xtm=7,lp=1,ph=9,xx-,hp-,lc=9,vt-,kdts=3,nk=8,fvt=2,xjhdk-,dxvsc=1,cx-,md-,lxx=9,rv-,xxfz-,vgfgh-,tljj-,xgzzl-,psn-,sqftz-,vh-,lfp-,mx-,gvbrv=7,rkh-,sp-,hrh-,tclnp-,ssspbh=7,mlq-,jsjfs-,xfv=5,cv-,mq-,xv=6,rt=8,hpr=3,mhxq-,dq-,tgn-,dxc=5,cv=3,qvkv=9,jkv=8,tvz=9,cvq-,sg-,rsr-,gst-,dh=4,ssspbh=9,xjkhv=6,bzl=7,qbc-,jmsb-,njlmn=8,rp-,thq-,xkh=5,rj-,jvx=3,lhc-,dlm-,hrh=5,prtnpg-,mn-,md-,bsn=2,hgx=3,jqhl-,xs-,tdk=2,ct-,cqg-,hzt-,lq-,pm=8,gf=5,jvx=3,cttxtn-,hdr=5,dnh=1,sz-,pxqj=5,bjrvxh=2,jcj-,tv-,pz-,nqjk-,qspjl=7,vbcx-,km=6,pjg=2,jmq-,sp=1,cj-,mz=6,lhgdbs-,rt-,lbf-,gddfx=3,pl-,znvf=1,rb=6,hk-,jh=7,rmj-,fbk-,frlqr=3,zgms=8,gnhm-,rmj-,sztqf=2,dnl=9,rj=8,tx-,fdcl=8,xpv=4,pr=9,rnq-,jd=1,kh=6,dnjdn-,qjnxd-,jbmd=1,hgx-,ftpxd=2,lh-,zsvjv-,cx-,cxjsr=6,jcp-,hbrg-,sqftz-,lnv-,grx=1,lh=2,rp=6,mn-,gzktrh=2,ckk-,gzm=1,fv-,vt-,gd-,cqg-,gbs=8,jsjfs=5,zqv-,mxl-,szv-,vdmh=7,zh-,gc-,fgl=1,dd-,lbf-,crg=2,tghsj=2,hqpq-,zv-,kl=4,ssspbh-,dbcb-,dzr=8,pxqj=4,gxc=9,thbn-,hh-,rt=8,lzz-,lmxv-,xd=5,rsgx=8,rsvp=2,lmznsr-,lvzqj=3,lbf=4,tp=8,blqv-,lsbn=7,pbdgnl=6,vbcx=5,xkh=9,qjgqb=8,lmznsr-,hrg-,ssns-,bvx=3,kgt=3,khlc-,jmq=5,qlqm-,qjnxd-,dxb-,ctm=7,dcz=3,fhvv-,kcgxz=2,jlls=3,pd-,hqpq-,sn-,zpj=4,cqh-,jrr-,drp-,nbt=8,ds=5,gst=9,dzr=6,btl-,tghsj-,glplq=6,dxc-,smk-,hzmp-,rdt-,bc-,fvt=8,fgd=1,dz-,gknc-,bf-,sqv-,qht=1,ttjk=7,fkc=2,bb-,rsgx=8,zd-,gc-,rsgx-,zt=8,dvd=5,pjg=6,lc=9,mxzbj=2,cvq=3,pkd=3,gq=2,bnblt=4,hnn=2,mlq-,xd-,lsbn-,dhq=9,mccg=5,kcgxz-,qjgqb-,pd-,sqv-,cpk-,lpjl-,hnn-,dxvsc=6,htm=3,hpr-,xfv-,dzr-,pdtxl-,bh=8,dhx=5,cpm-,ljrdxk-,rkxg=4,ds=9,vqq-,ctqtk-,kd=7,sp=7,hcgtn=8,qfp=5,kz=1,bc=6,mfqx-,mfgxcx=2,sn-,ddll-,dhq=4,ltljr-,jlls=1,hrg-,rtkb=6,sqv=6,rkh=1,qjmx-,zgms=1,gknc=6,mccg=6,bqgn-,xn=5,gd-,hgx=1,sz=4,rv-,dd-,hrg-,pdbh-,lb-,tqp=3,pc=4,qjgqb=8,zdd=1,qhs=6,ppl=1,mq=3,xnbx-,vbcx=7,prk-,nk-,dgd=6,crg-,hqpq=6,nbt=7,dz=2,smk=1,vdmh-,jbd-,gknc=6,pc-,cvj-,dj-,dzqx=9,dq=1,fdcl-,hrv-,hp=5,tqp-,nq=8,jnv-,nh=9,dv-,mdv-,jm=4,nkr=4,kgvq-,ndtf-,rkh=4,rsr-,hgx-,thzx=6,mfgxcx=4,gd=7,zdd=3,bbf-,br=2,pdtxl-,rk=7,qht-,ckk=9,ctm-,sqv=9,llkb-,xjhdk=9,gh-,hrh-,frlqr-,ljrdxk=2,pc=1,ls-,bnblt=5,rkh=2,hnn-,sv=8,dd-,njjk=9,ps-,gzktrh=1,zqv=9,xfv-,sg=6,tdk-,zmx=4,pjg=6,dgtn=6,xm-,hbrg-,sth=3,kh=9,xnbx=6,kj-,gknc-,vxq-,blqv-,pgx=3,ql=5,dlsm=5,qx=7,bzl-,rk-,kdts-,zh=2,xkh-,hc-,gbs=4,bx-,cqh-,dxvsc-,hp-,zgms-,gv-,sztqf-,zmfz=3,sn=6,zk-,pjg-,ng=1,gts=6,tvz-,ltf-,klzc=9,lnv-,ql=9,thq=3,klj=2,xb-,vqh=1,qjmx-,zsvjv=8,zd=7,tgn-,jm=3,khlc=9,fkc-,rsgx=5,sz=1,sn-,vc=3,ls=4,lpbrxv-,xxfz=2,lx=8,gnhm=3,bf=7,lpjl-,rmj-,hh=5,lsbn=4,xhv=6,lxx-,gb-,bc-,glcx-,grx-,stdm-,jqc=5,ndfqxt=6,bzl-,thbn-,nsjt-,pnsqf-,kx-,jbmd-,zv-,fl=5,qbc=4,tj=6,tgk=6,pskx-,njlmn-,ckk=6,jbd=2,hrv=5,gddfx=9,cvq=4,lg=6,kmnr=5,rft=9,df=6,lhc-,lv-,jqc-,rdh-,jkdr=7,xv-,sv=6,ds-,ldv=2,vh=4,gxc-,cgbg-,gsq=6,vc-,mz-,md-,zst-,ssx-,hzs=5,xln=9,dbcb=2,gj-,psp-,br=2,fv=7,vmhh-,fgd-,lnv=9,bh=9,lhc=1,xm-,nflm=3,jqhl=3,xjhdk-,klzc-,cvmq=7,hdr-,kknkjz=9,np=8,zcq=4,bvx=8,hrh=7,dgk=4,ks=9,pkd-,fvt-,mfqx-,njlmn=4,lcc=4,jjf-,kl=2,lmxv-,zgms-,jqc=7,hrc-,tnc-,pdbh=2,clj=7,tsd-,hzs-,trgjf-,trgjf=4,cttxtn-,cpm=2,hc=7,lhgdbs=8,dhq-,rb=1,qhs-,rvvv-,gnhm=8,mcn-,pd-,dxvsc-,tclnp-,hzs-,rdt=8,tnjs=2,trq=3,lh=6,thzx-,zmx-,bh=3,kjqx=4,lv-,dzqx=6,psm-,ctml=5,lb=3,psp-,cpk=8,bm-,mz=7,lpbrxv=5,znvf=4,mhxq=3,rh-,qjgqb-,sdcx-,tghsj=2,qhtc=3,dcz-,ctml-,pgx=5,prtnpg=2,ccmd-,ctml=3,bh=3,fgd-,bb-,nbcg=6,psmsj=3,bqgn-,ctm=8,stdm-,lhgdbs=9,tvz-,rft-,vr-,fs=8,np-,ppl=2,qm=4,dvxvnq-,vct-,glb=5,jvx=7,hgx-,thbn-,sztqf-,vmhh-,rb=4,pm-,nflm=5,ktp-,gknc=1,zmpf=8,gb-,ltljr-,xxfz=8,mgp=1,vx-,fs-,hdr=4,rsvzkj-,xxfz=2,xm=8,rdt=5,dj=1,qspjl=2,vct=2,dbcb-,fdcl=9,zb-,rtkb-,ssspbh-,mfqx-,hzs-,xln-,gknc=6,gzm=4,ssns=1,ljrdxk=8,gxc-,pt-,pg-,fzt=4,mz-,hrv=5,ql=9,rds-,ckk-,jctv-,qjmx-,psmsj=3,tmg=6,fxk=7,vj-,kbvm-,hzs-,pgx-,xltm=6,nnmj-,mfqx=7,rdh-,vx-,pqv-,rc-,nflm=7,kvcv-,hgct-,fhvv=9,fkc=9,lzz=6,dvxvnq-,kgvq=6,hk=3,jjf=3,rkxg-,fs-,zd-,hrv=3,cpm-,jcp-,xfv-,xxfz=7,cvq-,zrfvq-,hcv=9,dxvsc-,gts-,fkc-,sqv-,jn=1,hnn=7,kcgxz-,lzskx=8,ctqtk=2,pl-,lmxv-,kvcv-,psp=9,cqf=1,lp=5,mxzbj=4,ls-,gj=4,hqpq=3,lv=3,zv-,llkb-,nnmj-,kh-,dz-,fkc-,psm=4,jrkql-,tp-,gsq=3,bbf-,tvz=1,cttxtn=3,rt=1,bvx=2,km-,bkc-,pvm=4,jctv-,gbfb=7,ndfqxt-,gc-,rbt-,jd-,gh=5,zmfz-,cxjsr-,xgzzl-,xs-,pv-,stdm-,lmxv-,pd-,zmfz-,qs-,htv=5,nm-,zk=7,vx=6,tqp=5,dncb=2,prk-,pp=1,jmq=8,smk-,jkv-,xpv=8,xd-,jmsb-,xjkhv=1,psp=4,mn=7,lh=2,tsd=3,dk=9,kh-,nsjt=7,kdts=8,zk-,ttjk-,dmq-,jbd-,dhq=7,grdp-,pp=5,fl=3,hn-,fnn-,xfv=9,dv=7,thhvf-,cdcb=5,hp=9,cclc-,zmpf=3,xb=3,dzqx-,xb=8,tljj=8,rft-,lx-,mmn-,cj=7,ssns=9,bzhf-,lh=5,dhq=2,cclc-,mccg=3,gj-,kcgxz-,zz=2,lhc-,kmnr=7,bh-,kvsd-,qgt-,btl=9,thq=2,bzhf=5,fbk-,tdk=3,gc=2,mz=3,kcgxz-,fv-,cttxtn=2,mlq-,bsn=3,vmhh-,nh=4,kvsd=2,ctms=1,jmq-,nm-,kcgxz-,kh-,rsvp-,dlsm=9,bhk-,rgxnz-,jsjfs=7,bc-,tj=3,tp=7,ctqtk=4,jjf-,rsvp-,cxjsr=5,xzh-,pnp=1,lb-,zrfvq=8,dv-,klj-,cdcb=5,gxc-,pt=8,rh=4,dd-,spx-,dgtvts=4,jkdr=7,gq=4,nltq=5,mmn-,rt-,mgp-,gjcm=2,dv-,lq=9,mnv-,szxvn=9,glf=6,ljrdxk=1,mhxq=6,dxc-,xn=3,gcfl-,pgx=3,bzhf=8,lx-,psmsj=3,dlm-,hcv-,zj=7,rtkb-,mhxq=3,ssspbh-,zt=9,jm=3,qht=3,nq=4,dxb-,lpbrxv=5,rft-,tc=2,fmd=2,fdcl-,lvzqj=7,fgd-,hzs-,ls=9,fzt-,ps-,jsjfs-,jmsb-,dhx=5,hc=4,sdcx=2,glf=7,zmpf=8,njlmn-,pg-,zk-,bc=7,vz-,zmx=9,trgjf=6,tvz=9,pvm=1,dxc-,tdk=6,kx=2,vmhh-,qht=2,smsh-,rk=8,kd-,kqnlm-,dgtn-,ttvl-,xjhdk-,xkl-,dcz=8,crg-,dxvsc-,sb=3,fkc=6,fqv=1,rmd-,gph=3,blqv-,kjt=1,bhk=6,mhxq-,hh-,gcmgdr=9,hpr-,dnh-,xb=1,jqc=3,df=2,mlq-,ckk=3,pv-,xb-,nqm=7,vt=7,hdr-,zpj=3,qs-,fzt-,glcx-,jf-,jmq=1,rvvv=3,smsh-,lx-,tcv-,zt=2,rh=5,vhp=2,lfp-,qvkv=1,xc-,ddgf-,rmj-,ctms-,lxpmn=4,kcgxz=6,dvd-,prb-,pz=7,xs-,bqgn-,sfkpbv-,trgjf-,qx-,rtkb-,fbk-,dgtvts-,pc=3,lp=3,pkd-,zdd=8,xx=8,fldd=6,dt=6,gbs-,hrg=1,tz-,dvlpz-,zl-,rsr=4,kbvm-,thq-,ghf-,kjqx=3,nltq=8,kvsd-,bb-,sdcx-,mv=5,xn=7,pmp-,tvz=2,gcfl-,gj-,ds-,ghq=9,ttvl=1,frrg=9,kk=3,mdv=8,kcgxz-,hcgtn=2,vqq-,ndtf-,jd-,khlc-,kfr-,dzqx=5,clj-,dgtvts-,hrh-,ndtf-,fqv-,kknkjz=8,xhv=2,nltq-,gh=3,vr=6,gzm-,zpt-,mhxq=5,hzt-,dg-,bc-,rc-,kjt=5,hgct=8,gsq-,jm-,gsq-,xltm=5,kvsd=8,bhk-,lv=8,cv=1,sth=5,lxrk-,km-,pm=3,jn-,xpv-,jnv-,tghsj=6,rsvp=1,bbs-,prtnpg-,db=1,pc-,zrcqs-,ppl-,tsd-,lc=7,kk-,cvj-,stdm=7,qm=7,ltljr=5,rt-,thhvf=8,vdmh-,thhvf=5,fqv=6,bjrvxh-,rb=3,hzmp-,lsbtm-,tnjs-,cpk-,gj-,dgk-,qxn=3,dk=4,xnbx=5,jrr=8,ttjk-,gts=3,btl-,prtnpg=6,rvvv=1,rvvv-,hrg=2,pc=8,sb=5,gddfx=8,ds-,fkc=5,fvt=3,cvq=9,lsbtm-,psp-,lpjl=6,rdh-,zcq-,vbcx-,cx=2,kvcv=3,tgn-,bbs=9,gc-,ncdnz=9,lq=8,ldv=8,dhq=6,cvj=6,qjnxd-,rc-,lhcsbr=6,vj=6,qjgqb=5,hcv=7,mv-,md=7,grx=5,gst=2,vt-,fs-,sg=9,dhq=9,mgp=5,fdcl-,pr=6,rj=2,gq-,fs=7,xjkhv=1,xv-,df=6,ddll-,cg=3,ghf-,smk-,psmsj=7,rh=3,hbhvz-,fdcl=4,fj=5,zst-,dgd-,xkl=2,lcc-,pc=8,tqp-,sztqf=8,lhcsbr=3,nnmj-,lsbtm-,qqh=9,xtm=4,pl=7,jf=5,klzc-,mccg-,lpbrxv=8,tcv=6,cttxtn=6,bm-,mnv=3,ttvl=2,dzr-,tnjs=9,trq=8,drp-,ncm=1,pjx-,pt-,nqxk=2,kk-,tcv-,qhs=5,qht=3,rmhz=3,mn-,jqqkmd-,mxl-,hcgtn-,dvd-,hzt-,lmznsr=4,kn=9,cx-,jkdr-,zmx=2,tt=1,jd-,zv-,htm-,zgms=2,cdcb=4,dgtvts-,zrcqs=5,cdzfk=7,gjcm-,jbmd-,jbd=7,hp-,zhq=9,qlqm=6,dzqx=7,br-,vc=8,cvq=2,tz-,rp=6,dn-,dxc=5,grx-,pkd=8,tcv-,cnm-,jn-,psn=6,btl=4,vqh=7,lmxv=5,tc-,cpk=9,dnl=6,hcgtn=7,fj-,fnn=7,pl=4,jmsb-,jrr-,qzg=2,smsh-,fmd-,prb=5,cs-,ks-,sv-,ddll-,prk-,nnmj=5,kfr=6,bf-,xkh=8,pm-,gg=9,sn-,zhq=9,rp=4,jqqkmd-,vmhh=8,ctms-,jxl=6,rsvzkj-,zrcqs=4,zh=3,gddfx=7,qs=2,bvm-,hbhvz-,glplq=3,lzskx=5,fqv=1,nqm=3,kgvq-,lc=3,nk=3,lc=4,hzt-,jkdr-,rgxnz=1,gd=4,fqv=7,pnp=7,bh-,szv-,htv=3,rnq=3,ssns=3,ghf-,xz-,dnh-,vt-,jcj-,znvf-,lcc=6,bhk=3,vmhh-,nk=7,dnh=1,vdmh-,njjk=3,hrc-,hrh=2,rt=8,qhs-,prtnpg-,ccfzjq=1,zcq=8,pgx-,vdmh=2,sq-,kbvm-,ct=5,st=8,rds-,xpv-,hk-,ks=9,qqh=1,lsbtm=8,cxfrpr=8,thq-,crg-,nbcg-,ctml-,hgx=6,njjk-,zpt-,hcv=7,gvbrv-,nltq=1,dgtvts-,qhs-,nbt=3,kl=6,jh=8,dzqx=1,fnn=3,rc=9,xzh-,kmnr=6,zh=1,nbt-,tnjs-,rgxnz=5,sn-,clj-,ndfqxt=5,zmfz=9,khlc=9,xc-,gddfx=9,ppl-,cj=8,vdmh-,bx=5,vxq=9,bvx-,stdm=2,kcgxz-,jvx-,bb=9,cvmq=7,nqxk=1,mhxq-,fz-,fmd=9,lhgdbs=3,xtm=5,dcz-,jm=2,pjg=7,fvt-,qxn=6,ccmd=3,cqf-,ls=3,sp-,lv=6,tgk-,tqp-,rv=6,lb-,xvd-,dxb-,ljrdxk=3,rj-,pkd=4,cdcb=6,jlls=6,dlsm-,pv=6,dgk=2,mdv=7,pg-,lzskx=3,rv=3,prtnpg-,bbs=3,rmd=1,gj=4,rm=2,ssns-,np=6,xkh=9,hgct=1,hrh=9,thzx=5,rkh-,ps-,ks-,jvx-,fnn=9,br-,dvxvnq=2,hcv-,mv-,dv-,jqqkmd=1,fgd=4,nkr=1,vct=3,xv=1,glcx=7,br=8,ctm=5,dq-,gjcm-,ngd-,ctqtk-,tt=4,rdh-,fldd=1,cj=7,dlm-,grdp=5,nvlff=8,qm-,klj=5,ghq-,kvcv-,fldd-,pkd-,ls-,hk=3,jnv=1,jqqkmd=4,gzm=6,tqp=7,prb=9,pjg-,ph-,xd=9,dx=7,mxzbj=7,hcgtn=9,hp=2,hh-,bkc-,pqv-,grk-,bx=9,clj-,sb-,tgk=2,mfgxcx-,zk=3,pdtxl=1,prk=1,rk=3,tghsj=5,qx-,vct-,km=1,md-,jkf-,bvx-,vz=5,lv=6,qx=3,bsn=4,sn-,mcn-,fgl-,lxrk=7,gknc-,lzz=2,jn-,sth=6,dxc=3,sn=3,glf-,lpjl=4,gknc=7,dnl=7,cvmq-,pm-,bzhf=6,gcfl=8,hvk-,ctm=9,cvj-,dzr=2,dvxvnq=5,llkb=4,jxl=2,bc=7,qht-,rdt-,gsq=5,zmpf-,lhgdbs-,xzh=3,ppl-,vc-,cdzfk-,jqhl-,rv-,xtm=3,hn-,nltq=5,bkc=5,fldd-,jlls=3,pg-,cqf-,nqjk-,sdcx-,ndfqxt=1,nbcg-,gnhm-,hgct=4,thbn-,hz-,xn-,qxsddj-,mhxq-,bbf=6,nq-,klzc-,pskx=6,pnsqf-,klj-,hbrg-,fgq=6,ds-,pd=8,bc=8,ncdnz=7,mpcvh-,cqg-,dxvsc-,cpk=9,qspjl-,cdcb=4,dj=2,df=5,trq-,ssx=6,psm=8,st-,vxq=7,hrg-,pnsqf=9,br=6,njlmn=4,ttjk-,ttjk-,dh-,vc-,drp-,jctv=5,kjt=1,dnh-,lmxv=1,kvcv-,xc-,rkh-,hgx-,gsq=6,cqh-,cvq=2,hd=8,hp-,cqg=8,jpksf-,lx-,pjg=7,zl-,qg-,dxvsc-,gj-,dnh=8,dk-,ptdf-,cdzfk=5,grx=1,nqxk-,ghq-,lx-,jsjfs=9,dhx=9,kfr-,gb=6,cqh-,tc=4,ph=5,thzx=1,kk=1,rsgx-,gd-,nsjt-,ccfzjq=3,ndfqxt=7,bvm=6,clj=3,ncm=2,ckk=4,dgk=1,jqc-,rtkb-,xltm-,ppl-,qxsddj=8,rmd=7,rh-,mk=8,rb=2,gg-,dx-,vc-,xs=8,lpbrxv=9,ftpxd-,hgct-,hrc-,hrv-,rgxnz-,bzhf=2,xkh=2,fbk-,dnh-,cxfrpr=8,xhv-,bsn-,trq=4,ghf-,nqjk-,bjrvxh-,cvq=9,rmj=4,tclnp-,ghq-,fgl=5,gb-,sth-,dgk-,pjg-,stdm=5,mhxq=5,cttxtn-,lmznsr=8,lg-,hrg-,lh-,tclnp-,mv=8,fhvv-,ks-,nvlff=2,psmsj=2,ztgnkx=3,jrkql=6,kn=4,cdcb=8,grdp=1,xzh-,vmhh-,gzm=8,ps-,rbt-,mnv=7,pv-,xxfz-,bh-,hgx=3,lp-,pc-,hrv=1,rsr-,blqv=5,fkc-,fdcl-,tj-,bkc-,jnv-,gst-,hgct-,xhv-,nb-,gf-,lxx-,thbn=3,xss-,dz-,hdr-,ctml-,pxqj=9,tt=1,bzhf=5,dgtn-,bb=6,fxk=3,rmj-,qfp=2,rgxnz=7,fzt-,sz=3,jbd-,pc=7,kl=5,rtkb=6,htv=4,tcv=5,bbf-,cvq-,fv=4,gsq=8,qs-,ncm=3,gbfb-,dh-,dcz=5,lxpmn-,dv=9,lq-,dgtn=1,ng=5,jkf=6,jlls-,lvzqj-,mxzbj-,rsvp=6,ctms=2,bx=4,jcj=2,qhs-,hgct=9,gddfx=1,cv-,trq=5,qm-,dnl-,sqftz-,cclc=5,bf-,klj-,br-,jctv-,nk-,dhq=7,cxfrpr=2,ckk=2,bzl-,mxl=7,ghf=1,hqpq=1,rmd=2,jh=4,dncb-,xf-,gts-,gbs-,dxc=6,xss=6,tcv=4,xd-,rsvzkj=3,jctv=3,cvj=6,pp-,mlq=3,dgd-,jmq-,pjg=2,dxvsc-,prb-,zk-,bhk=3,qgt=8,hc=6,qlqm=2,nqjk=4,xnbx=6,pskx=5,grk=5,jm-,xb=6,fbk=4,thbn-,sv=5,fxk-,zd=6,nvlff-,xltm-,fs-,sdcx-,xxfz-,ljrdxk=2,ls=1,bf=1,nltq-,rb-,rh-,szv-,hp-,kjqx-,cg-,ltf-,ssspbh-,vdmh-,lhcsbr-,hgx-,lxpmn=9,hzmp=8,htv-,rh=1,kh=6,klzc=4,hk=6,dx-,nbcg-,thhvf=5,jlls-,vdmh=8,sqftz-,rv-,pjg-,gj-,khlc-,sth-,drp-,kgt=5,vz=2,sth-,qvkv=9,qhtc-,kcgxz=6,zpt=2,sdcx=3,thzx=7,dlsm-,glf-,bzl-,hbrg=1,glf-,nflm=5,rbt-,nh-,tclnp-,km-,rc=9,km-,pdtxl=4,dn=7,pdtxl-,gb-,jbmd-,ztgnkx-,dxb=8,cs-,lpjl=7,fz=5,ssx=6,bvm=9,bc=3,xfvj=7,prb-,mq=5,jcp-,xv-,kgt-,gh-,xvd-,zb=8,xml-,zj=1,gb-,mpcvh-,dlm=4,ssns=1,cxjsr-,mxl=9,nbcg-,tc-,tmg=5,gts-,lsbn=1,jf=7,df-,hz=2,grx-,kgvq-,dhq-,qhs=9,lzskx=1,gst-,qs-,lq-,thhvf=7,hh=8,qjgqb=9,qvkv=2,gcmgdr-,blqv-,xv=7,mhxq-,psn=6,mdv=6,rft=1,pbdgnl=9,bqgn-,klj=7,fdcl=5,szxvn-,tsd-,fgq-,gbfb-,pxqj=3,lq=6,gh-,qht-,fqv=4,fdcl=3,mccg-,cdzfk-,mxzbj-,grx=5,spx=6,cx=8,tvz=5,zst-,ssns=3,dcz-,njlmn-,jpksf=2,fz=6,nbcg=2,kj=6,kd=5,zmpf=2,zmx-,kk-,dcz-,klzc=3,kk=9,cnm-,rb=3,smsh=3,pxqj-,kmnr-,zv=9,qspjl-,rc-,kh=5,sth=8,trq=3,ddll-,rnt-,gcfl-,cj-,jrr=3,qlqm-,ds=6,tnc=3,zcq-,gcfl=6,rk=2,fdcl=3,hvk-,sztqf=9,grdp-,pd-,ndfqxt-,xtm=3,pkd-,cclc-,rvs=9,rsr=1,sdcx-,kgt-,jvx-,psm-,khlc=9,nqxk=2,thq=2,cxjsr=9,xzh=7,cs-,rm-,njlmn=8,rv-,xm-,mn-,gbfb-,bbf-,ct=3,gb-,jf=7,sztqf=6,bf=7,tsd-,lfp-,clj-,mmn-,jnv-,ddgf=1,tz=7,gf=2,cpm-,kj-,dxb=9,xd-,hnn-,psm=2,hcv-,st-,cqf-,kjqx-,jbmd=6,ckk=3,tmg-,dvlpz=5,br-,glcx-,hvk-,jqc-,dg-,fdcl=6,lc=4,dmq=5,lpjl=2,gj=3,zz-,mmn=8,hdr-,kl=7,rmj=9,mcn=7,vhp=2,bzhf-,sqv-,dnh-,xpv-,rmd=6,mnv=7,rkh-,nsjt-,zhq=2,frrg-,cqf-,fj-,zhq-,mdv=9,hrv-,tnc=3,gcmgdr=9,tv=5,fzt=6,mfqx-,lzskx=8,bvx-,nqjk=2,rnt=8,zcq=9,sfkpbv=2,xvd-,hrg=2,zqv-,xln=4,zk=5,pl-,tljj=1,tclnp=9,pp-,rvs-,hdr=4,prk=8,psmsj-,jrkql-,zpt=7,mlq-,dnl-,hrg=6,thbn=1,nm=6,fgd-,gbfb-,ndfqxt-,smsh-,sz-,pc=7,lxx=4,kvsd=1,kmnr=1,bzhf=6,gb=1,qjgqb-,bf-,qqh=2,kd=1,zj=2,pskx=5,cdzfk=9,mfgxcx-,xml=9,ph-,zz-,qqh=5,tt=1,xpv-,jqhl-,hbhvz-,thbn-,jxl=7,lnv=8,mxl=9,kcgxz-,mk=8,qqh-,pjx-,qzg=7,lmznsr-,sq=3,ncm-,dg-,cxfrpr=1,vgfgh=5,grx-,hqpq=1,sn=3,sqftz=6,dzqx-,jkv=3,tdk=8,pvm-,tqp=4,xml=1,gvbrv-,fzt-,msz-,thhvf=2,vj-,glplq=1,mfqx=2,bvx=5,ps-,mk=5,gst=5,kqnlm-,rsvp=6,rtkb=6,pnsqf=3,zc-,vdc-,szv-,sqv-,fz-,thbn=4,ccfzjq=5,hbrg-,bqgn=3,fl-,nk-,rbt=8,pz-,hh=1,bzl-,rgxnz=3,lx-,ssns=5,gnhm=8,dxb=5,jqhl=2,mmn=4,ztgnkx-,khlc-,thq-,rsgx-,ltf-,gxc-,lpjl=1,bbs-,nflm=3,lpbrxv=7,zdd=8,lsbn-,dlsm-,xfvj=5,glcx=2,jbd-,bx-,bf-,jnv-,ppl-,xc=2,tgk=8,fj=9,cdzfk-,db=1,trq=7,xkh=4,xc-,hpr-,glcx=3,gddfx-,gzktrh=2,hrc=5,mgp=7,dnh=8,zpt-,rsr=1,smsh-,mpcvh=9,xc-,crg-,kk-,gd-,ndtf=2,lfp=8,sqv-,mk=1,lfp=9,llkb=5,ctqtk-,gzktrh=4,vxq-,gnhm-,jqc=6,lnv-,fnn=3,fvt=5,rp=4,ddll-,rsr=5,tz-,nqm=2,sb=2,fj=3,kz-,lbf-,rp=1,pkd=2,ctml=8,mcn=4,ds-,gq=1,pc-,cttxtn-,lzz-,vx=9,xs=3,qfp=3,qgt-,pg=9,ctm-,tghsj=6,clj=3,ktp-,cvq=3,ptdf=7,qg-,bhk=9,kgvq-,lmxv=5,xxfz=2,pskx-,lmznsr=9,dvxvnq=9,xhv-,cnm=7,xm=9,bzl-,rkxg=5,cvmq-,bvm=9,ttjk-,sztqf-,cclc=4,hnn-,dhx-,cdzfk-,rv=8,mk=7,tp=9,cdzfk=5,kknkjz=2,cpm-,ddgf-,rdh-,gc-,vqq-,xtm-,lnv-,fj=7,tsd-,ckk=5,vct=3,rsr=2,zgms-,bx-,gnhm=1,xss-,rh-,hz-,pgm-,kx=3,vhp=7,zhq-,rsvp=2,dlm=7,jkdr-,hgx-,dvlpz=4,fldd-,dgd=8,dj-,bzhf-,kfr-,xx-,vgfgh-,gzktrh-,gh=2,jpksf=2,vhp-,lxpmn-,mdv-,ljrdxk=6,xc-,glplq-,szxvn-,sn=5,qgt=5,mhxq-,tmg-,lx-,klzc=6,rvs=7,rgxnz=4,lh-,prb-,rsgx=2,pgm-,grk-,tgn=8,crg=7,nflm-,ng-,xxfz=9,nvlff=3,gjcm-,bkc-,hvk-,mxl=6,bh-,rsvp-,sg=4,hp-,hcgtn=6,cnm-,xtm-,sb-,zmpf=9,kgvq-,kz=5,tgn-,hzmp=7,jm=3,rkxg-,pvm-,rvs=8,tj=1,nqxk-,sq-,sv-,cttxtn=1,cvmq=3,kk-,fnn-,vhp=7,kk=6,mgp=6,br=9,kcgxz=7,cnm=7,vh-,nm-,sdcx=2,prtnpg-,mv=1,lsbn=2,cclc-,qg=3,kjqx-,kjt-,gd-,cvq-,kvcv=8,nqm-,rmj=5,vz-,kvsd=5,msz=8,nvlff-,jn-,lq=7,vr-,fzt-,hpr=6,zhq=8,dmq-,pdtxl=7,lhc-,bnblt-,zv=8,kfr=4,clj=3,xn=8,dd=8,qx-,khlc=1,ssns-,kknkjz-,xpv-,cpm-,dcz-,rnq-,trq-,fvt-,sth=9,nnmj-,mk=1,mvs-,ztgnkx=2,dh=9,jcp=9,dvxvnq=4,bx-,dlm-,jkdr=4,zrfvq=6,lsbtm-,rsvp-,zmx=7,gj-,rds=4,gst=7,jcj-,thq-,hc=1,frrg=1,pjg=5,df=1,zk-,hd-,lhgdbs=2,ndtf-,hd=7,khlc-,hrg=9,xvd=1,mnv-,fnn-,rvs=9,dr-,hvk=2,zd-,dbcb=3,hqpq=9,hgx-,np=3,vct=8,zz=3,vc=4,smk-,mgp=5,ppl=8,bvm=9,vh-,nflm-,jbmd-,crg=8,dh-,jbmd=2,jjf-,ghq-,vdmh=4,nflm=5,hcv=6,jqhl-,gvbrv=2,lxx=9,gjcm=9,prk-,xjhdk=7,gh-,pmgsxv-,jd-,xfv=7,xjhdk=4,hgct=7,pm=1,kx-,ds=5,cttxtn-,fhvv-,gcmgdr=3,nkr-,htm-,fqv-,hrh=4,nbt=4,jcj-,lxrk=1,kmnr-,lb=8,zhq=5,nb=3,nbcg=8,glf=6,lhcsbr=9,gcfl=9,bm-,vdc=9,gc=3,qspjl-,jjf-,cpk-,mccg-,tclnp-,lfp=3,vhp=3,ppl-,trgjf=9,sv=2,md=2,gst=7,dlsm=5,qgt-,cg=9,sb=7,ghq=8,gst-,drp-,sdcx-,cxjsr=9,ccfzjq=6,cxfrpr-,vt=3,grk-,jqc-,tgk-,zj=8,ttvl=1,thzx=5,gts=4,zrfvq=4,dt-,dk-,sdcx=3,qhs-,rsvp=5,hzt-,vr=6,ssspbh=7,gc=7,bnblt-,rds-,klj=9,xvd=2,hc-,ndfqxt=2,gzm-,trq=6,br=1,mccg=3,trq-,psp=5,pgx-,mk-,vj=9,xhv=2,jrr=1,dmq-,cvmq=4,zpt=5,dzr-,nsjt-,vbcx-,pdbh-,dk=2,mfgxcx-,qzg-,dvlpz=7,hcv=4,ps-,mmn=8,ckk-,nbt-,xml=8,ql-,tgn-,ssspbh-,cdcb=9,pm-,db-,nb=7,mhxq-,kfr=4,bjrvxh=5,mnv=5,lmxv=2,nltq=2,thbn=6,ctms=3,jsjfs-,lh=2,stdm=2,rsgx-,vmhh-,kgvq=3,jrkql=1,htv=4,bc-,gq-,qjgqb=5,tgn-,hrv-,mfgxcx=8,fqv=9,zk-,pdtxl-,tc-,ljrdxk=9,rb-,psn=1,dvxvnq=3,dx-,sq=2,fldd=6,sq=2,jqhl-,pjg=9,glcx=3,trq-,dgd-,xln-,psn-,qspjl=5,zpt-,jqhl=8,sztqf-,cnm=6,sfkpbv=9,bvx=9,tflb=2,bvm=2,tclnp-,zd=7,xkh-,fzt-,vdmh-,rnt-,ppl-,llkb=2,jkv-,gddfx-,pr=3,dvxvnq-,ljrdxk-,zsvjv-,bm=8,dvd-,xf=6,lhgdbs=9,zcq-,kfr=4,np=2,bx-,zd=2,bx=4,tc-,jm=6,xf-,tqp=6,np=4,qfp-,lxrk-,njlmn-,dzr-,cv-,rbt-,pnsqf=6,sg-,xx=8,hvk=5,md-,lc=9,jnv=9,kbvm=4,qjgqb=1,xss-,xb-,dg=5,zj-,vhp-,mpcvh=5,nm=8,mq-,zd-,mhxq=2,gf=8,dvlpz=5,dx-,nqjk-,qhs-,qvkv=3,drp-,hrv=1,xvd-,lsbn=6,dz=3,fdcl=8,vj=5,xb=7,nq-,ccmd=5,vhp-,bhk=9,dq=2,hbhvz=8,hzmp-,ccfzjq-,zmfz-,blqv=9,nqjk=5,psmsj-,dd=1,dq-,bkc=5,dr-,tcv-,pp-,bbf=5,dvlpz=5,sp=1,glcx-,rds=5,tv=6,gf=6,zd-,gf=1,qx=9,ltljr=6,mnv-,rdt=6,msz-,ccmd-,mlq=8,tx=9,fvt=5,frrg=4,rk-,st-,pl=6,lx=7,zc=1,vxq-,dnjdn=2,pnsqf=9,cgbg-,mfqx-,fxk-,drp-,cdzfk=9,nqxk=7,zmx-,dnjdn=1,dr=5,frrg-,ssns=2,kgvq-,lxx-,kj=8,zgms=9,pkd-,lhc=6,zz=5,drp-,kj=8,htv-,sb-,tj=1,pnsqf=8,klzc=5,bm=9,sqv=3,tt-,qhs-,xltm=9,rft=1,lfp=8,nqxk=2,xfv-,vz=7,zh-,spx=5,qxn-,bzl-,qx=9,lvzqj=4,vmhh-,jcp-,znvf-,mccg-,gknc-,xhv-,mv-,lhc=3,lnv=5,ktp-,pmgsxv-,nqjk=1,sg-,gjcm-,sb=3,ncdnz-,zgms-,st=3,cv-,qs=7,xf=1,nltq-,fbk=6,mx-,glb=6,dj-,hp-,rh-,cvmq=3,pmp=5,dmq=7,gvbrv-,ncm-,fgl=8,xfv-,bzhf-,jrkql=6,fl=3,dnh=9,grdp-,gnhm=3,mnv-,ddgf-,mgp=5,pt-,zh=5,pmp-,gh=5,ps=7,ndfqxt-,tdk=6,gd-,sg=2,qgt=4,qlqm=2,grdp-,smsh=9,lv-,vj=4,pmgsxv-,psn=2,vx-,ctm=8,prtnpg-,mhxq-,hcgtn-,dr=8,jm-,cvmq=6,xx=6,rp-,lx-,psp-,cqg-,bqgn=3,rmhz=3,lb-,dzr-,zcq=8,km=5,gddfx-,tdk-,dhx-,gzm-,tljj-,xn-,vt-,lv-,xb-,fbk-,lhcsbr-,cpf-,cs=8,cxb-,xb-,bkc-,mmn=7,zj=7,bf- \ No newline at end of file