K2YJLCH7FGGD56VAPJGZ5FX3O664ZRK43HAQ2UKHYMRQ4FYYJO3QC #!/bin/sh python3import itertoolsfrom typing import ListInput = List[int]Solution = intdef read_data(filename: str) -> Input:with open(filename, 'r') as f:return [int(x) for x in list(f)]def solve_problem(numbers: Input) -> Solution:combinations = itertools.combinations(numbers, 2)right = next(pair for pair in combinations if pair[0] + pair[1] == 2020)return right[0] * right[1]def main():data = read_data("input_1.txt")print(solve_problem(data))if __name__ == "__main__":main()
#!/bin/sh python3import itertoolsfrom functools import reducefrom typing import ListInput = List[int]Solution = intdef read_data(filename: str) -> Input:with open(filename, 'r') as f:return [int(x) for x in list(f)]def solve_problem(numbers: Input) -> Solution:combinations = itertools.combinations(numbers, 3)right = next(combination for combination in combinations if sum(combination) == 2020)return reduce(lambda x, y: x*y, right)def main():data = read_data("input_1.txt")print(solve_problem(data))if __name__ == "__main__":main()
1975160011317731782168013861682199116401760123611591259127917391826188810724161632165612731631107918071292112818411915161912301950162719667741425198316161633155919259601407170812111666191019601125124218841829188115851731175317841095126717561226110716641710200011811997160718891613185914791763169219675221719181617141331197611601899190617831061200619931717200915631733186616511437151711131743124016291868191212961873167319961814121519271956197018871702149517541621105515381693184016851752193317271648179217341305144617641890190415601698164512141516106417291835164219321683962108119431502162219619721916185012051971193715751401135120051917167013881051194117511169510217194811201635163615111691158914101902157218711423111418061282119319743881398199212631786172312061363117716461231114010881322
#!/bin/sh python3import itertoolsimport refrom typing import List, DictInput = DictSolution = intdef parse(line:str) -> Input:parsed = re.match("(?P<min>\d+)-(?P<max>\d+) (?P<char>\w): (?P<password>\w+)", line)return {"min": int(parsed.group("min")),"max": int(parsed.group("max")),"char": parsed.group("char"),"password": parsed.group("password")}def read_data(filename: str) -> List[Input]:with open(filename, 'r') as f:return [parse(x) for x in list(f)]def check_password(case: Input) -> bool:number = case['password'].count(case["char"])return case["min"] <= number <= case["max"]def solve_problem(numbers: List[Input]) -> Solution:return sum(1 for case in numbers if check_password(case))def main():data = read_data("input_2.txt")print(solve_problem(data))if __name__ == "__main__":main()
#!/bin/sh python3import itertoolsimport refrom typing import List, DictInput = DictSolution = intdef parse(line:str) -> Input:parsed = re.match("(?P<min>\d+)-(?P<max>\d+) (?P<char>\w): (?P<password>\w+)", line)return {"pos1": int(parsed.group("min")),"pos2": int(parsed.group("max")),"char": parsed.group("char"),"password": parsed.group("password")}def read_data(filename: str) -> List[Input]:with open(filename, 'r') as f:return [parse(x) for x in list(f)]def check_password(case: Input) -> bool:char1 = case['password'][case['pos1'] - 1]char2 = case['password'][case['pos2'] - 1]target = case['char']return (char1 == target) != (char2 == target)def solve_problem(numbers: List[Input]) -> Solution:return sum(1 for case in numbers if check_password(case))def main():data = read_data("input_2.txt")print(solve_problem(data))if __name__ == "__main__":main()
4-5 r: rrrjr9-10 x: pxcbpxxwkqjttx8-13 b: rjbbbbvgrbrfjx3-5 d: dtddsdddddsddddddwd3-11 q: qbqsqqzqqxkmbqx3-4 v: vgvhcvxlbfcwg1-7 t: rtctmtt8-11 s: ksssswsssstssssss2-6 v: vxvvvlvv16-18 c: ptgprcccvqvbfcnckc18-20 w: wgtnwgnwvzwqhqtwvwrw14-18 k: kkkkkkxkkkkkknkkkl3-6 f: pwfgqlbbrfvwf6-10 h: pqlfbhcnglgvhdgddn2-13 k: bkfdvztsdkkkwm8-12 d: dddddddddddd1-10 v: lvvvvvvvvvvnvvvvvv2-3 d: dfdz3-10 w: vwwwwwnwwwwwxww2-7 c: ccwkpggxd4-5 g: kgqqg1-14 q: bcqqqqqqdqqqqbqqcq1-10 j: jjjjjjjfjjjjhjj1-4 x: bkjghxrsb2-15 v: vvvpvvvpvvrvvvvvvv1-6 q: pqlqqn2-6 k: skdkqk14-16 g: sggbggggrgbmgtgg8-9 f: ffffnkffk1-2 x: tjxxl6-8 t: tzdtvttkhctk1-4 z: zzzkzzzzzxzzz1-2 h: hthhjhhhqq2-4 d: ddpkzvxbjnxhw1-4 k: kkhq8-9 s: sssssssps5-11 b: bbbbbbbbbrbbbbbb2-4 g: crrj4-5 j: djjjqzmxttjg1-4 b: bbbbb3-4 z: zrqx2-12 l: vvggvdqqcjplqzkczgj15-16 l: sgclwcllcvltvthl2-3 c: tbclrfclrhxvtlw8-11 n: nhnnnwlqnnznnnnnn7-15 c: jlcxswgncffcpnbdrhlx6-14 k: kkkkkgkkkkkkkkk8-11 r: rrrrrrrsrrrkrrr4-6 m: fmhmtmm10-12 p: ppcpjppppppg2-5 m: zbtmmmmlmmmhvblmmnx4-5 q: hqwhr2-5 r: rzrrwrr9-10 k: kkkkkkkkchk3-5 p: ppptkpn2-3 f: ffxfzwd6-14 p: ppppppppppppppppp1-7 f: hffffffkffff2-13 h: hhhhhhhhhmmhvhhhjhhh8-10 z: zzzzkzzbdzz8-16 w: wwwwwwwwwwwwvwwwwww3-10 n: qqpnnnlnwznctsbjnn2-4 m: rmfw2-5 z: jzfsqt14-15 n: nnnnfnfndpnnnnn7-9 d: drvdpddpddd8-12 j: kjjjjjjqjjjjjj3-11 h: hxhhhhllhthwhjhxhhhz3-5 w: ndwww5-10 r: qrrrrrrrrrrr9-10 k: kkkdlkkkkwknkg5-7 t: lstztlh1-2 j: jljk5-19 q: zkrqqwthdjgzqzpjwkq2-3 r: drrrpswzwfmrfcrss8-12 r: qrrrdrxfzdqb17-18 x: cxbdcxxxxxxkxxdxxq12-15 d: dvxdddddndzldlmc6-14 m: mmmmmsmmmmmmmmm2-4 s: lssf1-4 p: tpppp4-10 w: wwwwwwwwwpwww3-14 p: fshdffznzrppwpp1-8 l: hllllmlf1-18 m: mmmmmmmmmmmmmmmmtmm5-7 p: pfpqpppp7-15 q: qzkqvfxqqrvqqqcnxccc3-4 g: jlgggtk2-3 f: dfffffffffff2-3 j: jjjmjs8-10 t: tthtmxttftftvttntqkh1-13 x: xxxxxxxsxxxxxx2-3 d: fjdd13-17 b: nnxgrpkqgtnhjsnbcqhb12-18 x: lnqlnzqxxlxclzpwxx7-10 l: gxxlqllqmllglmls2-15 j: djfqjtlswxsdrvwcwkl7-9 n: hdblrjntz2-4 f: ffzff2-3 b: bvbb10-14 n: tglngsjnzlptknxcrbdn15-16 m: mmmksfmsbzmmjnqmm3-6 g: kgzmgk9-17 g: gcgrgxhgggmgrrdqtdg3-5 h: whcfh4-5 g: kpdgw2-10 d: dhdddddddld9-12 l: stsjflnqblqtl2-3 t: tttt18-19 t: tttctttttttttttttqj5-8 x: xxxdxxxxxmxhpxdpx5-8 h: hhhphhhkhtthhph1-7 l: wlllllnl4-7 x: xxxlxxsx14-15 r: rrrrdlvrrrrrdjvrrr11-18 c: hbhtbtczsbcqvrkxwc14-17 d: ndqzdrcftdkdddddv2-3 l: llgf7-8 z: hvqcstzrzz3-13 g: ggtggggggggggggggg11-12 r: dgnzdmsrqgrccf8-9 z: zqzzzzzzbzz7-9 h: hllhhhwhhzhrc7-9 g: ghgkgwrvg5-6 d: ddddknd4-5 s: qqlss1-2 q: jcqq9-10 v: vvvvvvvvxwvvvv4-9 p: zqjpvpttf16-20 t: tpttthqttcpttttftttk8-13 p: pppppppmppppppp1-5 p: hpppzp2-4 t: ktttt2-4 f: jfltfr2-6 t: gxtmnt2-8 v: vvjqpvvxvvfvzvv1-4 l: dqlsll1-3 b: zhqgqrbk7-9 n: nncfnnnnwnnn4-12 w: bqswnwqwlkhwbcc1-2 b: kbbbb4-11 x: xjxkxxxnxxxxxxxxxx2-10 b: bbbwnbknghbbbbbj9-11 h: hhhmghhshtqh8-9 t: tdctmtfpt8-19 b: bbbbbbbsbngbzhbpbbb11-12 k: dxkkhkknrkrkkkz8-10 b: fcbwbgbkbb1-5 h: qfdhn6-9 w: wwwvkpwwbwwwww1-10 c: ccccccccccccccccc13-14 k: kxzkfkkkkkkfvckkk2-4 p: wrrrpb7-9 s: spsssssvssssxzsqzssh4-5 f: fffgf13-15 n: clhngxdnnsnqlptnz10-11 f: fffffffffhlff9-13 k: kkkkkkkktkkkkk15-16 p: pxppppppgprslpln4-6 s: mscssms2-4 b: zbjjjz13-17 n: cthpnbmzwxbnnxngns14-18 z: zzzzzzzzzzzzzdzzzvz16-18 h: hhhhhhhhhhhhhhhvhhh1-6 s: xssfswlsssscdnshss7-10 v: cwrzfzvppzgcvkxs1-2 n: xnjnnrn8-9 b: rnbbbskbrhbbbfbz10-20 x: jljkxspllxqhjvknfxqx6-7 q: qxskpqq5-8 q: mwhqqqdfq11-15 l: lplldlllltlljll3-8 j: grsdjjzj2-8 p: pppppppjp3-10 m: xpfmmmvmnmrtjmfbkpb10-11 k: cfkbkndxkxgk11-12 k: kkkkkkkkkkkb10-11 t: ttttttttttnt10-11 w: wwwwvgswwwwwwwwww3-4 c: drkc8-11 f: ffgfdffjffnflnqfsff5-6 n: nnnnwtq10-11 s: dsswkmshsbsslwgsvss8-11 z: zzzzzzzlzzsz8-15 s: sssssssssnsssssssss9-18 d: ghzcrfrhflqdsvrphd11-16 q: fqqqkpfhxqqmgxcj4-6 b: qcbzcv2-5 q: qqlpn9-10 c: ccccbqgxcc11-14 v: nzvjhxvvnvbvvvvv1-4 q: xqgq5-12 t: ftdtmwmqkhthj5-6 w: bqlwwr11-12 t: vlfgktvfttrt4-7 n: nfnvtnjnnbnbnnn9-15 w: wwwwwwwwwwwwwwjwww17-18 k: kkkkkpkkkkkkkkkkkckk2-4 x: nxnx2-4 s: lbjm4-6 j: jjjqjzj3-4 v: lvwv5-8 x: xhxxxsgxnjfdb4-6 m: wmmlcx6-10 t: tttttdttttt15-18 d: dddddsdddddddddddldd14-16 r: crwxgrrlrrgsrrqc4-8 b: bbccgprbbqmvmjcbbfn8-10 d: dddddddddldd3-5 k: jkkzk19-20 q: bnqnchhwjjrnzzqcqqvq2-3 g: ghfggxgbg11-16 r: pgqjshvmjrzrrrxsr4-6 j: qjjjnrjzjjrjj6-10 n: qrwwvnngtnsgmn7-8 m: mmmmmmhhmm5-6 c: clfcnx1-2 c: zcccc9-10 q: lpqfbkdqqq4-9 t: wrjtzlrptlkvsmt13-15 l: klsgqllzlvlrbkl4-5 j: jjjljj6-11 p: ppppppppppbrppppp11-12 q: cqqqqqqqqqtq8-9 z: zzzxmzszz12-18 z: zzzzzzzzwzzzzzzzfzzz12-13 h: nhhhhshhptzjs3-5 c: ccmghck6-9 z: zzjzzjzvzzz12-15 d: dddddddddddkddddd7-11 c: qwcccmccccc10-12 t: ttttdvwrwrwgt2-3 l: ljbll8-9 x: xxxxdxxmx1-4 b: wpdgxfdsngsbbbpl16-19 f: fzwrdbblftrblfjfplw6-7 p: ppppppg5-7 l: mllllglllfllllvlxll4-6 b: bbnlbbbbbbbbbbbbb2-4 d: ldlb7-8 h: khpmrbhh3-5 l: llllllllllllllllllll6-8 f: ffqffffx4-8 n: vxmflsfn1-6 k: zkktzfzkdkkzkk9-11 j: jjjjjjjjjjkjjjjjjj4-7 b: bbkvbbnbbp1-13 v: fvvtmxvlvvxkvvs1-4 h: hrhf1-4 s: ksgs3-6 z: zzzzzzzzzzz13-16 j: djjjjjjjjjjjgjjrjj13-16 j: jjjjjjjjjjjhljjjjj4-6 k: hkhkkkvktpbkk2-3 p: pkqp2-13 j: jjjkjjjjjjjjdfjjj9-13 z: wwwzpkcczbmzntkjlf3-7 n: nntnnxgnnnnp2-3 t: ttpt1-7 h: qlthhgppdhfxhkhjhhd10-11 z: zmzzzzzjtxzzzzz3-6 p: ppppppp3-7 k: kmzvfhkkhrkk16-17 k: kpkkjkkklknkkkvkw2-5 z: zbzdzz1-9 z: zzzzzzzzzzzzzzzzzzz7-10 t: ttttttnttrt13-15 b: bbbbbbbbbbbbbbbb2-3 h: hcnhlxh3-5 h: lqdhh4-5 p: twptp1-4 x: xjxq4-6 c: ccmcgpvrfkwxpcjvcq5-6 h: chhhhcch6-13 m: fmmgmhmmjmgnbmmf5-8 j: ljzjljvjbjjjj7-10 j: jjjjjjjjjfj1-4 f: tffmkfnfw7-8 n: fbhgkmnndrbq1-14 m: mmmmmmmqmxmmmmm2-3 v: vzvtpmp5-10 q: qqqqqpqqfj4-9 q: qqqqqhqqqqqb8-11 b: bbbbbbbhbbbb1-3 r: rrsrr6-8 f: zktkmfnkffdffwfxj3-9 c: pkckkkxjc1-7 h: hhhhhhh1-16 s: kssssssssssssssnss8-16 j: gxhqtbnjcnrtjcdm9-13 d: vxdspdnmkfdbwlzd2-14 f: ffffffffvffffffffff18-19 x: xxfkppxxlxxxxxxtxqx5-9 t: txmtptttpqbtnjtts12-14 r: rrcrrrrrrrrtrxr9-10 d: ddddbdbddd1-3 z: mwzrz5-12 q: qqqqqqqqqqqlqqq3-15 s: rphsmgngvmqtdhnlk5-6 n: nnnnmtnt4-5 z: gzxzc1-6 r: rrcwrmcrx4-5 n: dbfnrn15-16 f: ffffffffgfkfffff3-9 w: twwxvxspkwtj17-18 l: lllllllllllllllllgl1-3 q: mtwqqq10-11 k: kkkkkkkkkkkkkkk12-18 f: rfvkgfffkkxfdfhgfvb4-8 q: cnnvqvvrllwmw17-18 q: qxqqlqlqtqqqqqqrmq8-9 s: sjssssszsjsss4-5 w: cwwxw5-6 q: qqqqqr3-4 d: cddrng6-10 c: bzcgscknzc16-18 l: ttvsvtfkmbfcglslpljk3-7 c: xlwtncn5-14 q: cpkvqljhwqqxjqsngm7-8 b: bbbgjbbcjbbt11-14 m: mmmmmmmmmmmmmrm3-4 v: kjgvv14-16 w: vpwmfdkfkwlrnldbhmq2-11 w: gkxjlmgwkpw16-17 k: kkkxkkkktknkmkzkk3-7 c: cfcpczsw16-18 l: cllrclltlllllmlbldlq7-13 q: brqtqqqbqnqbf13-14 q: vqtqqqqqqqqqrrq10-11 x: xxxxdxxxxxwxxqxxxxbx6-8 p: ppnnpspcpwwdppfzk5-6 s: sssqsr2-16 j: jvbhqwqzrrhhxdhjm2-13 x: prgsbszbcsvvxxs9-11 h: bhwghbhhhvqql16-18 q: xjmqwmrlvkpjxdtzbq9-10 t: wtwtctrtpnf11-12 j: jjfsjqjrjjjhp13-14 x: jflkltqvqdzqxxh3-4 p: xppp6-8 d: mwpndflpfpk7-12 h: pqfhhhhhnglgfl5-6 b: lnrvhbfdbbdncbqrrbj1-4 m: cdmfmmmmglgmmcmmzmmm4-6 h: hhhhhj3-5 s: pssssc12-16 x: svqltrtdlgxnhcmx7-11 j: jjjsjjjjjjjjjjjjjj14-16 w: xwxdgzfwstfjwckw11-14 b: cbhbgbjbvbbcbc4-6 l: bpgllnxlj4-5 x: xxrvx11-12 d: dmdddcjdddzdk1-16 l: fllllllllslllllllll3-9 q: qqqqqqqsqqqqlqfq14-15 d: hnmwvtprhxpdcgd5-7 t: zccgcttxttft3-6 d: ddvdddf11-12 r: rrgxjjnsfprrgk8-10 h: hhhhhhjchhfhshd2-5 b: bbbbvbbb18-19 m: msxttmbmqmmwdrgmmss3-6 b: vbhxtw7-8 r: tjrrmrrn4-11 g: wgdgwtwllgg4-5 j: jjjjkj15-16 r: rrrrrrrrrqrrrrdr15-16 q: qqqqqqqqqqqqqqqp2-8 r: kzswfbvcm4-8 b: bbbnbbbbbb11-13 m: mmmmmmmmmmmmbmm3-4 s: wnlss11-13 q: rlzbslqcqnqchqmv2-6 x: bxqwxzq6-7 k: dkjgdjk6-9 h: hhhqhhgrwp5-6 n: pnnldn3-4 z: zzzz4-5 d: sdnqz4-8 b: kkccxbfdxbljbn1-6 v: vbvvvzvvvv3-5 j: wwmwj2-13 q: sqtvrbspzkflqj2-3 z: xzhd4-7 p: pcpmpwpg4-6 f: fffgfwf13-15 k: zkkkkrhmlnlckkcvkk7-9 q: qqqqqqkqqqlqq14-16 g: gggggwgsqggggkgzghg4-10 v: vvvdvvvvvvv18-19 c: ccbfkgnrcwxccwtlczc1-8 j: jfjjjjjjqfjjljj12-14 w: wtwhwxwqwnwmwq4-5 l: ngwwzwxxrsbxmlnc3-4 n: nnqn4-13 d: kddfddddmtddd4-5 m: mmmpjmmm15-16 r: rrrrrrrrrrrrrrzrr17-19 k: krkxkzkkskcmdkckwkkf3-11 t: xgthvllfhjtb1-6 p: fppppfpp10-11 d: djdddlcdwlmd11-12 h: hhhmhshhhchdhr12-16 k: nwkvtkskkkwzkcbnkkc16-19 m: mvmmmmmmmmmmqjmtmml3-4 v: qvvwvvv1-4 w: npwp6-8 f: fffffffqfff2-3 w: zwmwwwn1-3 t: ttstr1-4 d: dddmddd2-3 m: mkmm1-7 f: fffqffffffffffff1-2 c: qcccccptcc7-8 g: ggghkgggbg13-15 b: dlbpbxdbrbbbbdcv3-4 p: pppcpvpq13-17 q: qqqqqqsqqqqqqqqqzqvq1-7 q: qqqqqqqq10-15 l: lmlsfkgpllldnlxgh4-5 t: cbptdgtq5-12 x: xxxxcxxxxxxxxxxxxx10-12 c: ccchcfckcctcccd4-16 h: cgqhppwhgqbqgthw18-20 h: cqsdtbjlhzwlrvztnlth1-10 v: vvvvvvqvzvvlvvvvvv11-12 l: qzlxrgrpglsldwrx2-4 t: ttttmt16-17 z: zzztzzzzzzzlzzzzt16-19 q: plqzzmhddkrwqtkqxmq14-18 l: lklllllzdlllpllqlll8-14 x: gxkcgwxxxxxkcx3-6 n: nnnnnvn1-4 p: cppp2-3 s: xsdvnd6-11 m: xghqpmmjmsm1-9 j: jhnjjjtpx15-17 z: pqrzgxlznjzzzmhcj1-11 z: zzzzzzzzzztzzz7-10 k: nkkkkhkkdgkcn8-14 g: xdxglrzzbdjrmqpdqrzn11-12 q: whfqqqsqfqqc5-12 s: rfltwhrsnsksqmbv8-9 s: sssssssstbssss2-3 h: hfhhhhh2-4 g: tjtg13-15 z: gzzzxzzzzzzzzzlz4-11 c: ccccbcccxccccccc13-14 k: krxkkkjkwkkkpk2-18 c: cccccccccccccccccccc4-12 r: rrrrrrrrrrrmrr7-8 s: sstsssfssbssssp8-11 s: ssssssswssfs1-4 j: jghnjdsgkwjqmmj3-6 m: mmvmmm10-17 f: sfffffjffffgfwpffv2-4 p: pcvp18-19 f: wcffffflnfffnffpklf6-12 x: ctkckxgxghjq1-8 h: fhhhhhhhhhh14-17 l: llllllllfllgldllhll3-4 z: zfmwpt7-8 h: whhxhhhhhhh6-11 j: shzqfjgwtwjmgwktjstw7-10 n: cnngnzddmnpp2-6 f: tffhffz1-2 k: lkkzpq4-11 d: vkfbjgsmdld1-6 v: xlxvtvwvvvxv11-14 d: ffddjdffcspxzk3-13 z: tfqwwhwqjzdlz13-17 p: hgpjfpqrtvspgfppsh11-12 l: pbvlvkrlllxxfdll12-14 f: flffpffffffcfxpfnfff5-7 p: mvbpppk10-11 s: sqbsxsrtscsxtssssgs9-12 q: qqqqqqqqqqqf6-7 t: mzwjtzt14-15 v: xlvxsvctjgqwjvgm5-6 t: tctttt7-14 g: nfxgkvwzgcthpjvnl1-4 g: gggg11-14 t: blftntttcxhttxtwtl2-7 k: jkklsjw12-17 t: jmtjdtttttttfhtjnsp14-18 b: qbtsbbtwplkklbjsfb12-14 x: xxxxcjxgxxxxdhxxxx4-5 s: ssssss4-7 z: zzzzzzzz8-13 w: swdwhlqwwwpsr4-6 b: bdtbbd12-15 h: hhfxkhhhhhhqhhhhhhh14-15 n: nnnnnnnnnnnnnnjnnnnn4-5 c: ccccpcccc13-16 l: llllmljtddqpvwlhl6-7 p: pppppfp7-9 g: gwggghvvw7-8 v: vfzdvvvvvvv4-5 m: mxcvm1-5 r: rrsmm4-6 d: nddvddrkdxdnfld6-7 q: qqqqqrt9-15 r: rrrrrrrrrrrrrrrrr8-9 g: zlgvbgnkg4-5 c: ctgcc1-12 s: cmsssssssssl4-6 x: xxxxxxxx2-4 t: tthpx10-13 f: kfggfnfftjwcf11-12 l: llllllllllrl4-10 t: ttttttttft2-3 x: xvnxj4-17 j: jjjjnjtjjjxljznjjj6-10 z: zzzzzzzzzlz5-14 j: vdwjbtntgzcchjhfl12-15 l: lllllhxlflpplllcl5-7 s: fqsssmswsgqlsvsssvf5-8 r: bhrhbqzrfr2-5 x: lxxxxxbwxdmx9-10 d: zdxjjdjdhdd16-18 l: lqllrtllbllvlllblll5-9 n: nnnnnnnnznnnnnn4-5 g: ggghzg6-14 m: ldmpkmtzslmdbljvsxtm7-8 p: ppppprpmsp8-13 p: qbkqpkpwmdgppnbp1-3 r: rrrrrr6-12 q: dqqqthphqhpqkqqmnmfl5-8 l: llllzzll9-10 m: ljmbmmmdjwdgmm4-5 s: qxsls17-18 k: nkfwsdvldkktdvsmkk7-8 l: llllllvlsl3-5 t: dlpctqfkwtbrvxfdxwr13-15 r: rrrvrrrrgrrrrrm4-16 l: llnlllllllllllllblll7-9 w: kwwwwwgwv7-8 z: hvzhphwm2-3 g: qgghtgk3-7 s: xsfqthm12-16 b: bbbbbbbbbbbbbbbzbbbb3-4 s: hbmzwncbvsgk14-18 s: ssssssssssssssssssss5-9 d: dtnbnxjlqh5-8 x: xxxxpxxz12-19 r: jwrrrrrrrrjrjrzgzrrm15-16 r: rrrrrrrrrrwrrrplr6-8 d: jddddlzj3-15 v: kfvrbtsxlmsqvzgbdk7-12 n: nfnnnmhnnnncnnnnnrnw14-17 c: zswgzkxrfvcvtcvjcjmf11-13 v: vvvvvvvvvvvvsv9-11 n: tnlnqnnntnn2-3 x: rxrlrfwm7-9 c: cccccccctcccccccc15-16 v: vvzvvwfvvvvvvvvrvvvv2-4 r: rrrmrr10-16 d: gldpwpdlxdhbtjhm5-6 z: zqzzzqzz3-4 n: nntnq2-3 z: gzdzbs6-20 j: gwjhxjjlzqdjmjvjcmjj5-6 q: qqxqsq6-7 g: gqgggpbkhjbg7-8 t: ttttcttj12-19 v: vvvvvvvvvvvnvvvvvvsv2-5 k: xkkwf3-7 g: ghqhtng3-8 v: vvvvvvvthl5-7 h: qjhxhrdwjz7-10 g: kmkxqcgfgmxw1-8 h: ghfhhhhhqhhhhh4-11 g: gqggbtgzgqgzgt6-7 t: tpxxtjt9-12 q: qqqqqsqqqtqqqnj3-7 m: znghsmmfczwvd4-11 t: stgjwttqvtstlsfcsssz9-10 f: fffffffffffff14-15 l: mlwlvnlpcxldflt1-6 g: gjgggwgg1-3 g: gggg2-4 s: jszs3-5 n: nnmnnn11-12 c: cccccjjcccdq11-17 h: hhhhhhhhhhshhhhhhh7-15 h: hpfdvhhhhnkhchb7-10 g: gggggggggg4-5 x: xjdxx5-13 p: hptpppgpmqsxpxnj3-4 b: bbbb5-6 s: psssgmqtcxs2-8 w: rwwtfxsh4-5 v: wjjvvtbhz10-12 j: qjjjjjjjjjrjjj4-6 h: hxhhvgwhrz9-12 x: xxxxxxjxxxzxxxxx7-14 w: wpzbwwvrkgdwwwm15-18 x: pbpnrpjkcmgxqtxxmxxx15-16 q: pzzgjwwqpgvcwvqj3-4 d: gdddpd6-16 b: bjsrnqsjhbzjsbvbpbq2-4 h: whsqxphkjwfq18-19 x: xxxxxxxxxxxxxxxxxxx3-4 n: nnnv5-7 n: nnnnxnnth2-7 k: gkkkpfn13-14 m: pwmmxznzmdsznm3-4 p: tzpg6-7 h: hzhhhhchh2-4 l: lllll5-8 g: gggggggxgggg1-4 q: qqqqq5-9 j: wjqjnjjjjjjjjjjjjjj5-10 g: gtgggkgggprxkzxgw1-4 p: rppp4-5 z: jzzzzzzzzz4-5 j: pjhjk3-10 j: ljpxdgdmlq1-2 z: tzjzz4-8 k: kkkpkkksk8-16 h: hhhhhhhhhhhhhhhnh5-8 n: nnxzhgtnnnvq9-10 d: hhdlcrwcdlktjxrg15-16 h: nhhlmfkhlhhhwthlhgqx3-4 p: pppppp7-8 h: mfkwxmhh4-5 l: lllllb1-4 s: ssls6-10 c: qtwkdpfwcg4-5 m: mvcmm12-13 n: nnnnfnnnnnnnn8-9 b: bbbbbbbcbpbbbsb5-6 f: ffffttf4-11 g: gggggtgggggqgg4-8 h: bmhhrjnxhkbhdhqjwswh12-14 x: xxxxxwxmxxxxwbxxxxp2-7 r: crrrrrrrrrrrpr7-9 m: zmmpzmmtg4-13 l: llldlllllllllll4-5 d: dddsdd3-4 s: bsnb3-4 h: chhh5-10 t: gswkzvktjbbrltsbdlx4-6 k: kkkrtkqk2-4 m: cswpvtrzfvf15-18 r: rrrrrrrrrrrrrrvrrjrr1-6 l: lllmlt19-20 w: nwnpwqsrvwwwwcwwldqw8-10 k: mkkkkkvtkl16-20 x: dgxxxxxxrxxnxxxhxxxx1-5 s: ssprbsb7-9 q: brqbqmqrb7-12 w: wmqwcwwwjwvwwtm10-14 n: nnnnnnnnnnnnnxn4-12 t: tkjdhjnmhqrtdbn2-7 w: fpllpbplqspwgqbz1-9 b: btltdnbkbm3-4 c: cccqcg11-12 k: xkkkkknlkmtk4-5 v: fvvhvjlwvwwwq9-11 p: pppjppprqtp8-9 b: bbmbhbtbbb4-5 t: ttttt12-13 d: ddzdddkkdddplcspl4-5 r: zlxrpdpfr6-9 d: vddgddthh6-7 j: mdqqjjjmmj4-5 p: ppppxd10-14 x: xxxxnxxxxxxxlx3-6 k: kkqkkbkkkkkkkkkkk2-6 q: tgbqsx4-7 z: zwnzzzfzfzz1-7 g: cggggggg2-3 x: xcxjmqr3-6 p: pppppm7-8 h: txhfcrhhwr7-8 s: ssblssns9-12 q: qqqbqqqqqqqjcq16-19 z: zzzzzzzzzzzzzzzzzzzz6-7 n: nnbgnhn7-9 t: tthmbtttpw2-6 z: zzzfzqz4-8 r: pvplrnqfjbbsfc1-3 v: wvvvv3-10 s: btzqhmbbkszgvqsqjzf9-13 g: xhjpmqkcgbmpgmgz13-18 c: kwjrlmdvcwjwlsbbbf9-11 d: ddfdhqddkdmmjx7-11 l: dlllllblclp10-11 x: xxwpktxscxxxxqz1-12 k: kkkkkkkkkkkkkkkkk4-5 h: hhhfhhhhh4-10 l: lmlwkllrklll7-8 d: ddddfdnd10-19 d: ddpdddwddwvdbddddddl5-6 g: bgsldggjk4-5 b: bgbnb2-5 x: xvxxxbxxtxx4-6 g: pggkjg3-8 j: jjkjjjjtjjjjjjjjjjj5-10 d: jcwvxxdhvk12-19 w: wwqwwwwbxcwvwwnwgdvw1-2 v: dtfd6-12 p: tpnshppqppgp5-11 w: kjwzpfwhxhtv7-8 h: mhhjkhhhv3-4 t: lttqf5-6 x: wkxxfj4-7 j: qnjcjjs6-10 x: kblfnxxzzx4-5 w: twwwxtwwpw4-8 p: pflpllppcwcq1-13 w: wdnbjrhtmxwkb10-11 x: xxxxxgxxxqcdx10-17 x: lgxwbzxsxxvxbmvxk3-4 r: rjkr8-11 x: xxxxxxxcxxxxx1-3 l: wlll3-6 d: sjmwjdtr6-10 b: bbbbbwbbws16-19 j: jjjjjjcjljwjjjjnjjjj4-10 q: qgxsjxzvgqzvqvx4-15 p: lppjppppppppppppp11-12 d: ddddddddbdtddd4-5 h: rpqch3-4 n: nnds1-4 h: gjxh14-20 s: cxscvksfqspjwvsnsnjk8-13 p: ppfppppdppppxpppppp3-7 w: wzwwwggwww3-8 p: xfdzhzpz5-7 j: jbjtwgjxj6-10 b: bdpfbfvlbbdbczbfbbzp1-8 w: jwlzdwnw15-17 l: llllllllllllllvlkl13-16 s: sssssssssssssssqss8-9 m: bqvdbrrfmm3-9 b: sbfbbjbbn5-6 z: zzzzzzzz18-19 d: dddddddddddddddddjd16-17 n: rnspnwwtnnnnnnnnln3-4 b: kmbw10-14 d: ddddddddqdchdfddd5-8 t: htttdstkm1-6 g: gggggdg4-6 h: qnjhhcb6-7 t: tttttfttt2-3 v: vpvvrvvv5-10 d: dddddddddldd15-17 p: dzpmmlcppwpbzwbxpj2-3 r: rwlhr7-8 j: jjjjsjgjjj4-9 m: mmnlmlmmmv7-9 r: vrrnrrrrrrrr6-7 m: mmmmmmqmm7-8 j: jnjjjszj11-12 t: tttxttsttttt7-8 t: dsjjwctn6-16 z: zzzzzzzzzzzzwzzpzz11-13 m: mmmmmmmmmmmmmmmmmm4-7 z: kzpzzzzmwcqmmf3-8 s: sbgcnjssbv6-7 k: kkkkkknkk2-11 w: wwlvtxglnfw3-5 k: gvmlg8-9 r: crrrrrrrvgrrfrr1-4 b: rbfbbbbbbgffmbnb4-6 t: rmwmjthbtlh3-10 c: ccmcccxcdc9-11 d: ldldddnddjd12-17 s: smsfnssssssdssssms3-6 m: qxmmmfdj9-10 v: vvvcvvvtvvzvvvvvv10-15 v: wdlmskhsvvqddxvgllj1-9 k: kkkkkkkkkckk9-14 h: hhxfsdnthnrhhxh7-10 p: pwcppppljphkppzjp7-8 n: snqcpwnnnnnplcc9-11 h: hhgrhsrhhhz1-4 v: zcvvvvsmzjjz1-6 x: txxxxqx4-13 j: jjjbjjjjjjjjpjj1-5 c: ccwvfccjpckcckbc2-4 t: btttbp4-5 d: cwwfd9-18 p: ppphppphfjspsbgpnp4-12 r: ksvfpjgmrsvr2-3 q: lhnq1-5 c: czcxc4-6 m: mmzmbzrq4-7 m: mmmmmmbm14-17 v: mvhvthfvvvvvvvvvvv5-12 d: cdwwdnbvhddqhwxbnghz8-16 z: mjzzzzzczzzzdzpz5-10 j: jjjjjjjjjnj15-16 q: qqqqqqqqqqqqqqlq4-7 g: hglngrgpkzmw4-17 c: xlscnhcbmccrxhsqc6-8 l: slqljlglr12-13 q: qqqqqqqqqqqdq4-9 q: qrcnpnqmdrq1-7 l: llllllt5-6 c: ccccpc1-2 c: clcc4-13 g: ggglggggggggwgn7-11 g: ggggxgbggggg5-10 b: bbbbbqbbbbbb9-12 d: ddddhdddddxddd1-3 d: jchdvcsdfzkt8-9 w: qqwvwpwwrswq1-2 p: mrnwxjtndwkzbgc3-6 h: hhcbhrhh3-14 m: frmxqtgnxdtphp3-8 l: llmllllll6-7 b: bdjgcbb3-11 x: mslfthzgqcscpctqcxd2-11 n: ncntpnnlnnnqnnn15-18 p: pppppppppdppgppppfhp4-5 z: wrfzzz6-7 h: tqgnhvhjhddzs2-4 m: mmvgw13-14 n: tpvfpwxlnqnbnvzk13-14 s: stnsssssvsssmscssss5-8 z: zzhkzdzdzz4-7 x: bxjxzgxsgmrmlln1-12 m: mmmmmmmmjbmbzmmbmmmm7-15 m: mmjmmmgmmmmmmmmmmmmf10-15 d: llrcldwnckfpwfv9-12 g: mfggggggvnggg2-10 p: grbctspghpj16-18 g: qhhgjwwgwggskcgghntq6-10 r: lrtdjrxqrrrnxrhc4-8 f: fffmfffkfff9-11 j: tbsxfwbwjjc11-14 s: sssssssssxsspss4-5 t: jthdjtttt1-7 j: jkjlhjh17-19 z: zzzvzzzzzzzzzzzzzzzg8-18 n: tgglgtfnnthsxpqvfj2-11 h: qhhlpkmbxqdrhhhkhrm9-14 m: xvmjjxmwmmmkmq14-15 c: cccccsccbccffjc9-10 j: xjzxpxjjfj8-10 x: pmfxfxxsxxq7-14 t: ttttttsqttttwttt4-16 d: dddwddddddddddddd8-10 f: fkcbqlffgqzvdzfhrn1-9 h: hhhhhhhhhhh5-12 v: lvvvvvvvvvvjvvt5-15 p: gqvpvpbxsgrgpvpjpvl14-15 d: qbnbtdrwkswfbtbdrx7-19 f: ffffffffffffffffffff7-9 r: jjbrrsqcrqmpxr4-5 h: mpthjh12-13 v: vvrvvvpvqvvvv11-17 c: ccccccccccccccccgc3-4 t: brttb5-9 r: rrrrxrrrrr1-4 f: fwfsfft15-16 z: znfzdqzzzhzwzgsr2-3 v: vwfvvvvvvvvvvvvvvvvv3-4 n: nnnzn2-11 k: hgptsdsqxlmpjqmt1-15 g: ggggcgggggggggtggggg14-15 z: xzzqzwzzjwrzkzz5-9 s: snsgscrssscs4-5 l: slbtm1-4 s: jmsjpss6-9 h: hhzhhhhhhhhhhhh3-12 b: xgbpbwqhzwzl10-11 g: gsgjggkgggg4-8 m: jrmlgmmm2-4 q: gqqd1-4 w: zqkwww6-7 f: bctdsvvs7-14 w: wwwwwwcwwwgwwk9-15 w: fjwgwpwwwstnrwgs4-9 v: qvvklvshvwvvrvvpvc1-6 w: wwswlw2-11 w: xmmqwjrvxglxnzmv13-15 x: hnxnvxxrxzvnrvxmxxx5-12 f: gfwtfxnmhfmjxlsllpx5-15 f: gmsrffblxvppctrt1-5 h: rhbhh1-2 c: cckccccccc12-13 c: cntcqmcltrcnc6-8 f: bbrflcrffqfj2-3 v: vvvkmzz1-2 j: jjknrj3-5 p: sppptqjp3-4 t: gttt1-3 h: hhzhjthh6-7 k: kkldvkg2-10 s: sssvsssssqswslljs1-10 w: swwwwwwwwwwwwwww10-17 j: jhjmbzjjjglbgndzhdm8-9 l: lllllllgdl7-10 g: wdsjsglvltf3-5 g: ggvggg6-10 j: jjnwrjnkjx2-14 p: wkdwppdpsnzvppb5-14 h: shjfjqhrwphgxhjqdm16-17 t: ttwhttgtttttnjtrqjt6-7 d: ldcdjdz13-16 j: wxjtlcpjjhxsfjzjzjj4-6 s: sqgpsx3-6 z: ztjtzz4-10 c: bjgcmlwfxc1-13 c: hcccccccccccfc4-7 b: grtbjrxfg3-4 z: mzxx9-10 t: tmgdbttltf4-12 n: qnvmnmnnnnnngnnn9-10 b: prllqxdsbbcw3-6 t: ttmtttbt7-8 c: kccpnccbc3-8 s: sssssssgss9-10 z: zzzzzzzzzzzzzzzz11-14 g: ggggggggggggghg4-7 m: vgjmmffhspmkn3-4 n: nnlnn4-5 t: ttttttt5-6 h: xrczhbqqhvhgq8-17 n: vntdgfcqbrnbdwngsnnq3-4 f: gflfptww9-16 k: kkfkkkkkckkkkkkkkk15-17 r: rrrrrrrrrrrrrrwrrr2-7 n: bnkpljdtdscpsczjlf9-11 k: vksvzkkkkkszkwb2-4 x: hxpxxsfr8-19 c: mlwncdlckrpnnwfjshgf7-10 j: jjjqjjljjjjj2-3 n: nlxnnnf2-4 k: kskkkkkk5-6 r: dmsrrr13-14 x: nwcxqzxpxxrxxx4-6 b: bbbcbbb3-6 l: wmpzrl1-7 w: wcdwwwwwkwtw3-8 w: dhwlrbrwbkzqhxfwpfxs3-20 n: vnpzwmdbvrhdrlvqhmsn1-4 z: zzzzjzzz6-13 s: pfnzxdsssxpps4-12 q: qhqtrkwmfgvn4-10 t: mwgrtptprhtbzcfbvcc12-17 n: nnnnnnknwgnnknfgn2-3 k: jtnkk9-10 f: ffffhffffffff1-7 k: pkkkkkvpkkkkkk5-7 n: nnnnnnnn5-9 t: tcdttttttxj9-10 x: xxxxxxfxwxxxx12-17 s: pbsxshpbdssshfmxcbs4-10 n: nfnpnnnnnp1-7 d: vdddddbd7-8 r: rrrrrrrq10-12 v: vhvvvvvvvvzq6-10 n: xcnnbpnwnx4-5 f: ffflf5-9 b: jxpbbcjgrbqfbbmbbbf10-11 b: wchbzbbbbgbdb4-7 s: ssrnsssss5-12 p: vppgpdnkrptfv8-19 j: jvjjjjjtjjjjjjjjjjjj10-14 l: llllllllllklll11-13 h: hqhvhhchbjprhzhl1-10 h: sjfhhhhhhljrhhhh8-9 w: wwwwwwwww9-10 t: tgtttttrtt5-11 x: lgqsgxxpzprx3-4 n: qvngbnrvt2-9 x: drqckjkxkbs8-14 w: wjbswmpwwwhwwq3-14 k: tktxjdzrzrdnlk2-3 l: hmllslzlx10-11 s: sssssssssmss3-4 m: mmmnm4-5 b: jbbbq4-12 q: hqbwbbtqtqdvjjj2-10 g: gdcddxlrkgmzw1-13 z: zsgfzqpbbzjndvz1-10 b: nbbbbbbbbqbdb4-7 j: jmrbqsj9-15 r: prrkbzsgjlrrtlrrsp8-12 h: hhfhhkhhphfq4-17 p: hvgrcjhzmsmmpznlphb14-17 v: lvvvvvvvvvvvvvvvbvvp9-13 r: bhwrptnrrcpzxtrhvd5-7 b: trbqnthjrfwdg12-14 j: jjjjjjjjjjjjbsjj2-4 s: jswmwvtw1-7 c: mccctnkcccccccm7-8 m: zjmmmmgd4-6 x: xhqxddbfrngbxfzb6-9 x: xdtqxbdwx10-14 r: qskrrvvzclrrvztrdkrh4-13 c: wccwcccbccccrccc11-14 l: wlqzllcljjtqglbhl17-19 b: bbbbbbbbbbbbbbbbbbq3-5 x: xxqxm
#!/bin/sh python3import itertoolsfrom typing import ListInput = List[str]Solution = intdef read_data(filename: str) -> Input:with open(filename, 'r') as f:return list(f)def solve_problem(numbers: Input) -> Solution:trees = 0x = 0y = 0while y < len(numbers):trees += 1 if numbers[y][x] == "#" else 0x = (x + 3) % len(numbers[0])y += 1return treesdef main():data = read_data("input_3.txt")print(solve_problem(data))if __name__ == "__main__":main()
.....##.#.....#........#....##.....#...#...#.#.......#.............##.#......#.......#..........##.........#...#....................#...#.......#.........#..........#......#..#....#....#..................#..#..#....##.....##...#..#..#..#..#.##.......##.###....#.#.........#......#.......#......#......#....##.......#..#.#.......#......#.................#............#........#.#........#........#.#.##.#.#..#...#.....#....##..........##..........#...#...#.....................#...###...#.......##.#..#............#........#....##.#..#.....#.......#.#.#.......##.....#....#.#.......#.##......##...........#.......#..##.#.##...#.#........#..#...#...#..#.#..#........#.#.......#..#...#.##.##.##...#.#............##....#.#..###......#..#......#.....#..#..#.##.#.##.#.#..............#....#..#.#.#.........#..#........#.#....##.##......#......#....#.##.##....#..#..............#.#.#.#..#.#..#.#..#.##.....#.....#######.###.##.#.#.#.......#.##.....##......#...#.........#....#..#...##.#..#..#..#..#..............#.##....#..........#....#.##.....#................#............#....#...#.##.....#.....#.##.###.......#..#......#...#.........#.......#..#......#.#..#.##.......##................##..#..#..#..#.##..#.....#..##............##...#..#.........#..#....#..##.....##..#.#...#.....##....#.#.#...#...#..##.##.#..#.........#.##.#...#.#.#.......#.#....##....#............#.......#..#.....##..#...#...#......#.#...#...#..#......#.......##....#.#.#.#.#..#...........##..#...#.........#......#...#...#...#.#.#.#..#.#.##..##......#............###.....###.................#...#........###............##...#...#...#........#..#..#.##.#......................#..##........##.##...#.......#.......##......#.....#......#...##.#.....#......#......#......#...##.#.#...#.#.......................#..#...#.##.......#.......................#...#...##.....#...#.........#.....#..#.#...###..#........#..##.##..#.##..#...#.....#.....#.....#..#..#..###..#.....#.#.#.#......#....#.#........#....##.#...##.........#.#..##........##....##.#.#...#...#....#.###.#.#.........#......#...##..###.......#...............#....#..##..#.....#.#............#...##...###......##.............##.#.......##...........#....#......#...##.....#....###.#.....#.#..#..#....#...#..#.#.....#.#....#...............#..#....#....####....###....#.#.....##........#..#.##.#....#..........##...#...#..#....####...#...##.#......##...#..#..........##..#.##....#.......##.#.#.....#.#...............#...#.#........#.....#.#.....#.##.......#....#.#..##.#.#..............##...#.....#...#.............#.##.##..#.#...#........#..#.....##............##...#.#.###...#.......#.#.#..#..................#..#...##.............#...#........#..#...#.#.......#...#.....#...##.......#.#..................##..#........###.....#....#.##......#..###.......#....##....#....#.....#.................#..........#...#...#.................#..#.###.......#..#.#.#.##....#...#.....#....#.........#......#.............#........###........#..............#......#..#..#...........#...#..........#...##...#.###..#...#.....#.#.......#..##......#.......##..........#....##.#...#.#..#....#...#.#...........#..#....##...#..##..#.#.................###.#...#..#.#.#...##...........#.................#..##...#.#..##....##........#........#.##..#.#...#......#...##.......##......#...#....#...#..#..#.....#...........#..#......#..#..#..###.......#.##..........#...#...#.#.....##..#..........#.#.#...###...........#................#...##.....##..#....#..........#.#.#.......##...#.#........#.....#.##.......####.....#..#.........##..#......#.........#...#..............#...................#..##...##....#.#.........#....#...#......##...##.....#..####..........##.#....#.#.......##...#.....#...#.#.#...#..#..##.....#.....#..................###.....#...#.#.....#.......#.#...###.#.....#..#....#............#........#.#....#..#.#...............#....#..#..#.............#......#...#.......##....................#....#.........#....#.#.#..#......#....#..#...............#........#..#..##......#.........#..#.##........##......#..#..#.##.....#.#....#.........##...#..###..............#....###...##.....#..##......#.......##............#...#.##......##....#..#...........#....#..##.......#..#.#..#...##..#...........#..#..#.....#....#...#..###...###....#.#####..#...#.#.#..#.#.###...##..##............##.#...#.##...#.##..#...#...#....##.#..#..##...#....#...#............##..#....#.#......#....#....#..##..##...........#...#.......#.##..#...#.........#.....##.....#..#..#....##.#...#...#..#..#....##..##.#............#...#....##........#...#.##.........#.#......#.#....#.##........#.........#..###.........#......#.#......#..#.........#.#.......#.#........#...#..........##.#...#..#.#.......#...#....#...#...#..#.#..#.#..#.........#....#..#####..#....#.#....#.#.###...#...............##...........##......##......#.....#..#....#...............#...#.#..#....##......#...##.......#........#.....#...#..#......#......##.........#......#......#..###.##...#.#.....#.....................#......#..#.........#...............#.#...#..#..#.......#..#...#.#####......#..#.........#.....#...............##........#............#.#......#...#.....#..#..#...#....#...#..#....#....##......##.....#.#.#...##..##......#...#....#.........#.#.#.....###....##.##....#..........##...##.......#........#.......#...##.#....##.##........#........................#....#...#.#.##...#.....#...#..#..#....##..#..#..........##..##..#.....#..#...#.##.....#........#.##...#.#..#.....##....#...#..##...#........##....#..#...........#........#..........#.#..#....#..##.......#..#.....#................#...#........#.##..#.....#..#....#..#.#.....#....##.....#....#.##.#..##..............##.......##.........#......................##..#....#.#...........###..#........#..####.##.......#.##...#.#....#.####........#...............#..........##.#.......#.....#......#...#........##.....#....#.....#..#..#.....#...##.............#......#.#.##.#.....#..#........#...........##....#..#........#..................#........#..#.#....##.......#......#...####..#.##...##..#...#.............#.##........#..##......#.##......###..............#........#........##.#.#.#...#.#.....#.........#...........#...............#..................###.#.......#....####.##..#..#..........#....#...#......#...#..#..#.....#.##................#....#....#..#.......#.#....#...#......#.#..#..##....#........................#..#.#...#..........#......#.#.............#................#...###.....#....#........##.......##...##........#...#...........#...#...#..........##.......#.#...#.#.#....#......##..............#.#...#.##.#..#.#.##........#....##.....###..#.......#.....###.....#.#.#...#..#.........##..#......#..###...#.#.#.....#.#.#....#.....#............#..##.....#....##..........#.....##..#...........#....#...#..#...##...#.......#.....#..........#....#..#................#......#....#......#.#...#..#.#....#....#...#..#...###..#..##....#.#......#..............#.....#..........#.#...#.........#.#.........##......##...........##.#.##..#..#..##..#....#.#......#.#...##...#.###....###...#.....#......#.#................#......#......#.....#.....#....##.......#...#.#...............##..#..........#....#.......#.#.....##..#...........#....#.......#.#...##.#....#......##.#.........##...##.............#..##.#.#..##.......#....#..#...#....#.#.#.#...#.#....#....#..##.....#.#...###.##............#.#...##.#..#.#..##.#....##.....#..#..###....#..##....#................##.........##..#...#..###....#.....##...#...##......#..#.#.....#...#....##......##...#.##.......#..........#.....#.....##........#.###....#...........#............#.......#....#..#.##..##.#..#...#....##.#.....#..#..#..........#....#.#.#...#.....##.....#.#........##.#.#........#......##.##........#.##.......#...#..#.....###..##....#.#....#.#.............#.......#...##.....#...#...#......##.#......#.....#..........#.....###...#.............#...#.#...#...#..#......#......#.....#.......###.#....###.#......#.......#....####....##..#..#.#.....#....#........#.......#.........#.......#......#.#...#..##....#.....##.........................#..#.#..#......#.......................##...##.#............#.......#...#..#.#.#........#.#..##..#..#.#..#.......#.....#........#..#..#....#....###............#..#..#...#....#......#....................##..#........##.#....###............##.......#.##................#......###.#..#..#...#....###.##..#......#.#....#.....##.#.........##......##.........#...#........####..............#........#...#.#..##..##.........##...........#......#....#..#.........#.....#.....#.##.................#.##..#...##.#.####..#....####..#......#....#.##..##...#.#..#....#.......#.....#.....#.#...##.......#.....##...#.....#.......#...##..........#..##..##..#.###..#..##...#....#...#..#..........##..###.......###...#........#...#.#.......#.##...##..###.#......#..##.#.#..#..#..#..........#........#.......#.................#.#.....##.................#..#........#..#.#..###..##..#.............##..#.................#....#.....#.........#.....#..##...#..#..##.##......####..#...........#.......#....#...............#....#.#.........##.#...#.#........##....#......##.###...##..###....#...#...#..##..#....#.#.#...#.#.#.#...#...###.#...#.......#....#..#.......#..#.#.#.#........#.....##....#.......#.#...#.#...........##...#.....##....#.....##...#....................#.....####...#..#.#......#.......##...#.##.....###.........#.#......#..#.#...#......#...#....#..##.......#...##..#....#..#...........#...#..#...#.......##........#.##......#...........#...##................##....##......#....#..#...#......#.#...#.##.#...##....#..#....................#...##...#..#............#........#...................#.........##.....#...#...#......##.#...#...#.#.....#...#.#.................#........##...#....#...###.##......#...#....#...#..#...#....#.....#...##.#........#..#.........#....##.....#..##...#.....##...#..#.........#.#.#...#......#...#.#.#...........#...#..#..#..##....#..#..##....#..........#.###......#..#....#.#...#...#..#..#.###.....#..#.................#..#..##.##.#......#....##..#....