From f39dceb721e3238e8eca9a7ff51dc224c3c2fb37 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 7 Jun 2024 03:12:49 +0200 Subject: [PATCH] maj --- d03/exemple3.txt | 6 +- d03/input.txt | 140 ++++++ d03/output.log | 1197 +++++++++++++++++++++++++++++++++++++++++++++ d04/input.txt | 208 ++++++++ d05/exemple1.txt | 33 ++ d05/run.py | 22 + d05/run1_print.py | 34 ++ d06/exemple1.txt | 33 ++ d08/exemple1.txt | 5 + d08/exemple2.txt | 10 + d08/input.txt | 704 ++++++++++++++++++++++++++ d08/run1.py | 26 + d08/run2.py | 41 ++ d09/input.txt | 200 ++++++++ d09/run1_p.py | 28 ++ d09/run1_s.py | 13 + d09/run2.py | 2 - d09/run2_p.py | 33 ++ d11/exemple1.txt | 10 + d11/input.txt | 140 ++++++ d11/run1_p.py | 59 +++ 21 files changed, 2938 insertions(+), 6 deletions(-) create mode 100644 d03/input.txt create mode 100644 d03/output.log create mode 100644 d04/input.txt create mode 100644 d05/exemple1.txt create mode 100644 d05/run.py create mode 100644 d05/run1_print.py create mode 100644 d06/exemple1.txt create mode 100644 d08/exemple1.txt create mode 100644 d08/exemple2.txt create mode 100644 d08/input.txt create mode 100644 d08/run1.py create mode 100644 d08/run2.py create mode 100644 d09/input.txt create mode 100644 d09/run1_p.py create mode 100644 d09/run1_s.py create mode 100644 d09/run2_p.py create mode 100644 d11/exemple1.txt create mode 100644 d11/input.txt create mode 100644 d11/run1_p.py diff --git a/d03/exemple3.txt b/d03/exemple3.txt index 4525d47..9f4bdf3 100644 --- a/d03/exemple3.txt +++ b/d03/exemple3.txt @@ -1,4 +1,2 @@ -467..114.. -...*...... -..35..633. -......#... \ No newline at end of file +467....114 +...*...... \ No newline at end of file diff --git a/d03/input.txt b/d03/input.txt new file mode 100644 index 0000000..af14a51 --- /dev/null +++ b/d03/input.txt @@ -0,0 +1,140 @@ +...................305.124................................432..............................................576..313.....514................. +.............113...-......&....................&...819...........654..../..........................&901................*....869.257......... +...377..&783../.................................9...........855*......940..463................-.........................844.*....@......679. +......*...........197.261.....817..336.759............&742......548.......&........748......844.............#.......&........254...169..*... +.......36....368.*...............*....*.........*..88......%866.......135.........*..................515.682.....114...%...........*.....768 +...233......*....909..698.........427..........127.*...................*...........450.........482..../.................312.....621......... +.../.......882...............776...................555......180.........971....217.......857.../........212....674.917......736.....441*760. +............................*.....@....907....%940.....%.......+.#..........45*...........$............#..........*...............=......... +..................370.225.425..211...................932..........381..267.............45.....=....549....238........367..&.....488......... +.468.............*.......................761...677.......&.................929..907.....%....79...*.......*....324..*....515................ +....-.#103.504...388...........$..........*.....@........766.%................*....*623.........532..881...573....*..840..............497... +...........*.........305....412..687.......971................676....@640....657........709......................807............98.....+.... +....279...502...62...*.............*..............................................838%.....$.........585..........................*......... +....=...=......*....209.825.482.993..........972............620*664..-759............................*.......184.........952....160.....156. +.......814.....931......*...*............551..*....711...65.................224*115...851.772..104..505.....=........796*................... +....................723.103..275........*......564..*.........830........................*...../..............................232........... +.............$......&....................951........703......=............160+.....138......*........257*809.............$298........284.... +.....684....464.333..................827.....*211..................................#.....855.86.....................$913............*....... +.......*...........*..*......917.163....*.409......294.......................#..39.......................511....358.......$671.......237.... +.......663.......311..163....*...%...158........*....-.442.........958....108.....#.....941*837.........*..........*........................ +............865=..........409....................128...*.......283....................................680.........730.935@........768....... +....../................=.............54.....857.........418.....*..911.......610..643............381...............................@........ +.......925............984...........-...800*.................194.../.........*.......*.........../.....................................@.... +.................................@...............................&......615...16....695.....-..........................*750.............855. +....611..136...................108.540.........362..711......*....420.....................190.......................213.............86...... +204*....@.........288..825..+........&...........*....*......733.........................................7..387.......................*..... +...........795..../.......+.505.834.....228....192...619..........886......467.....942.............................%838.........512...340... +.......957.........................*...*..................962........................*..............211...$..............624................ +.......*....................349....144......./786..350.......*.......................541..21.......$.....284..190*......*............518.... +....484...@....17..........*..../........309..........*....530...118..........208..............253................489.828...........*....... +..........309...........715.....531........+.516#...645.........$........369....*.......*185...@............=.#...........@............&.... +491*192..............................................................233.........711.948.........572.....869..289......932...........149.... +........274.....511.....425..........421.288*965...652=.919........./....*.786...........676.....*..................+.........=............. +.........*.........@......$...*.........................*........*....791...+..113......*....527..897..499+.904...166........580.........389 +.......306.....................353.497..929/.......=....553......495.................884.....&........................794........774........ +...................../...........................582....................................................489..........*...............&...... +.605......537.....247.....................479................74................227*995.761.....@...........+.......958...87.....547.795..... +...*.....*....................289+.....*.....%........967..............*...............*........611.....28....367.................*......... +..690....916.497....................894.440......547$.............596.492......23...............................*...............237.221..786 +.........................681.....=..........580+.................+...............+.......696............@..542..56.......................... +...936..639*947.............+...48.*709..................307.257...-248.697.553.............+.........146.....#.......*241.................. +...*................568....................=378....41.......*............*...%..11......*..........................982.............#........ +..323..704.+724..*....*..195*....812..879...........*.....*....508@.....852....$.....664.......317....*......332..............326.158....... +.......*........610..767.....936...#...&..744.290..839.382.543....................................&.827...../.............323*.........884.. +...........962...............................*...................46....502.265.150...................................639...............*.... +955*818.......*...@...124*512..256...................+....&..............*....*.......170....996...#........................786.......4..... +..............284.697...........*......172...........398.435.......-.....380..........+..........698....428...361................206........ +.822...#..............936$...745..........*..%59..................726...........+.........249......../...*.....*..................%......... +.....870................................978.......761=.......179.............692.........*..........477..550.....676..281.............507... +..............913.................215.........................*..745...#.............882..130..569....................&..........*472..*.... +...27..710.....*.....................*.205*403..............59....+..172................=.............................................697... +....*....*....731.......865.......155..........849*....#..............................................679...854....................&........ +.985..%.............599....#..........191..520.......473..#........./...........708....406..677+...=............................599.....133. +......501...........*........@.........*...*..............446....767...*444........@......&.........49......#...311*413..................... +..................157.......830..13.90.398.945.978............................950.................%.......88................$............... +.............297........618.......+.*............%............317.............../.........709..481............503.........570...305*845..... +......661....*....632.....@..+......524......../.....+...........*...590..............944....*...............*................+..........681 +.......*.....820...@..........829...........671.......206.......239.+......................339..#............106......415..213..........-... +........114........................903.669=............................764...319....373........642...................................-...... +.................*...........................*.......121.......898&.....$......*...*.....................................211#.......579..... +........*.......362......787.440..........842.825.....*......................590...357..........949......523....470..292.................... +.....594.459........98.....*....*.......................355&..*..................*..........554..*.......*.......*....*..222...243.......... +.........................535.....674.........804....#..........455.............847............=.32...23..951.....217.346....+.*....+272..... +..183...........443..........119.......833....#..693......818#........................@..699..............................*....678.......... +...*......455/...%..826.............#.....*.........................$...........868.739....=..753...181....773.........323.508.............. +...382................*...169..510..590.295....212.767....*970......711.........*........#.......*..*............651...........36..766*..... +............&..61..697.....*................46.*....*..691......970............786....953.....775...235..................*550....*.....417.. +..........45.....*........689...645.....549*...821.601.............*......................952..............#..........464.....609........... +.....657.........48...888.......*...................................305......+47..........................254.27......................123... +818......388............*....412....../491.........#336...506..422.................989....15...70..............*..354............@.....*.... +..............506........11......./...........643..........#..=..........703...963*........@.........613.....413....%...485.......265...33.. +....589.......*................207..............%...............................................+................*......*.....94............ +...*.........663...413+....................................819...........655.%...648..823.......770....385......457..150...#.../............ +515.......................475....825......33../350.....459...%..........*....681...*...*..............%..................437.......689...... +....$993..897@..............*.......*837...-...........*..............726........372....922......&198................................*...... +180............*..........679.................71.629=.796......109...........................527..................682.....558.....798....... +........437.742.46.................@.......&...................*......498.......@.............*............./......$........*............... +..761..$...........148.......856....701.377..536*510...604...540.....&........929........172.799.............310.....700...........440.%.... +.....*........808*....=.........@......................*.........577.....................*................&...........$...417.39.....&.229.. +........794.......446..............................214.543...%...*..........935......865..445...../....%.615................=..*............ +..572..+...............................419....932@.........924..72.902.......-..579.-...........997.203................873......945..567.... +.....*.................273.............*...........................*...142............688................755.850...........846.........=.... +...880................*..............883.698.....$.......=........197.*...........316*.........365.........$...*............*............904 +.........385..977..179....+...................652......875.............350...863............73......464.........214.852..478................ +......22....*..@.........93............*682..................*137..309.........*....557.....*........................=.......698.....+.218.. +......*...645......163...............89......*853..................*...386..341.......*...228............718*492...............*..153..*.... +.....576......................857.........513....................509......*.....322.710.........615.......................613.165.......292. +................................@.....370.......598......487...........503..*.....................*...738#..#..$901...$.....#.......648..... +..19*454.............78................/..876..#..........*......+..........937.......383........523........69......326.678.....212....*.... +.....................*.....436.@...646...*..........100....367..325.....361.......207*....50............621...............*..........237.... +757.........714......502...%...54......909.411.....*.....................*..........................=..$................415................. +...$.......&.................................*...471..985...508.472....891.842..$.................418.........&.....&....................... +.................$........906..........*215.338...............*..............*..606.#235......................813..259........229........... +........472...222.........*.....245.572.......................927...769....344.............291.239.....................94....*.............. +...818...$.............291..............288...........163.734......+...........699............*.......981&...514*.............224.....=..... +.....*..................................*.........................................+..189..........452............644...................669.. +....850................326$..............869..&985......784..../..............592.......*..153.....*....887..493.....211........%........... +.............................457....834.....................94..564..........&.........498....*...304....../...*.....*..........845.....&... +.......12*48.753...244..196....=......$..721....90*29.........*.................+.522.......487...............317.....531..311........20.... +.177...............*.....*.................*.............*969.611.......*565..338...*.............712..922$.......770......*....522......... +....*..459......149......165...=........879...........103............497..........258.931..75....*..........400*.....*......972............. +.269...*............#........715.............................*475..........................*....145.............414.....228........893...... +........209......508...................../331......469....894............347.890$..541.....56...............#........#..*................... +......................=...........37................*...........................................$...........197...119.....=...........756... +...........&.......850.....367.34...*............517........178*716..........=...................892......-............883...755............ +.....@496.125.................*......965.....428.....908..................405.....650...................=..493..89.......................... +..............581........396.............596.........*....964........672......159.%....463............768......./.............391........... +.............*...........*.....871.660..*......577.73......@.....932....#....*............*574...186........154......996........*......720.. +............914..132..137......=.......746......*..................*......376.......&661............*560.%.......%....*...264....511........ +...%...151................*851...................................*..284.........754..........190.19.......611...326.841...............89.... +644.....*...797........133.....476..............................810.............*.....866......+.*..............................#903..*..... +........839..*..478...........*........372.#.....744.....227*............477.3.253.%....&..746.....289.&860.....720*708..................... +............443...%.....68*....283.......%..900...%....%..........584......*.$......308....*......*......................592................ +...239................@....250........50........&...%...192.$111.*........74............831....914...#.....886*492..........=............... +...*......425.....181..680..............*......873.502............93.................................503.@..............116........372...... +492..........*.....$.............302...789.................861.......................290.......452........83....626....*.....76.......*..... +......178...528..........*739...@..........................*......804....320....#.........&878.*.....746........./..&...148...$......741.... +...&....*.............262..............325...........599..592.579.....%...+..808...............386..*...............761..................... +663..462...........*..........109..706*.................=.............553........712......*971......674.396...635*.......................... +........../...728.952...413......*......744.......%..........................300..*....782................*.......742..&424........41+...564 +........375...%.........*......450.456.$.........714........851.327..#...+......*...+.......179.630....854.................................. +..251................195...887.....*........*209.......430.*......-.83.596....956..966.274.%.....*........................83.359........411. +....%.......................*..........89.........194..+...491.........................&.....*.762..+741..........598.......*.....910..*.... +..........618+..............677........*..598........+..........-.....58....290...........795...........................*.....580.&....559.. +...................561..............910......-..321....834....602.752*....=..+........191..............463....@..........792..*............. +............216.......%...722*668.....................$..................109............*....222...195*.......689....380.......637.......... +.....846.......*..436..............=827...263@.764*.......*.464.................729.....934...*......................................289+... +.127*.......757.....&......./954...................965..664........./......716*.+...........266....781.........989..........844...$......... +................57.....................&118......=...........385.623...245..............345........*.....615-.....*..........*...768........ +...538...........#..860......................783.460..........*............401.............*796..354..............37......797........725.193 +....*..#620../.........*..........578..54...*..........780..251...634..946....*........................./....702........................*... +..202.......815........724....#..............822..972...................$..........*.....#....@........27.....*...........268.....347....... +.................+..........98.....703..............&....*52.....320.............670...318....734.............47..................+....239.. +.953*919...=......273................=...454.....@....601...........*...958.........................+.................758...=............... +..........905./50.........@...................971..................762.*..................169........915.682..........=......533.......502.. +.....884.................24...........262.........@.....531..698.......234.................................................%.......149..*... +....................834.....994.......*........266.....*......*............................................/.....941.434...812.......*..211. +.............133......*......*.....613...85..........871.......497..346...737....88.....176.....192$........128.*.......&......./163.26..... +....734..543....*.....656....461........*......531..................*........../...*..&................$971.....931......................... +................606....................506............................779.......30...211.....243..........................153...504......... \ No newline at end of file diff --git a/d03/output.log b/d03/output.log new file mode 100644 index 0000000..c84e7d8 --- /dev/null +++ b/d03/output.log @@ -0,0 +1,1197 @@ +305 True +124 True +432 False +576 False +313 False +514 True +113 True +819 False +654 False +901 True +869 True +257 True +377 True +783 True +9 True +855 True +940 True +463 True +844 True +679 True +197 True +261 False +817 True +336 True +759 True +742 True +548 True +748 True +844 True +254 True +169 True +36 True +368 True +88 True +866 True +135 True +515 True +682 True +114 True +233 True +909 True +698 False +427 True +127 True +450 True +482 True +312 True +621 True +882 True +776 True +555 True +180 True +971 True +217 True +857 True +212 True +674 True +917 True +736 False +441 True +760 True +907 False +940 True +45 True +370 True +225 False +425 True +211 True +932 True +381 True +267 False +45 True +549 True +238 True +367 True +488 True +468 True +761 True +677 True +929 True +907 True +79 True +324 True +515 True +103 True +504 True +388 True +766 True +623 True +532 True +881 False +573 True +840 True +497 True +305 True +412 True +687 True +971 True +676 True +640 True +657 True +709 True +807 True +98 True +279 True +502 True +62 True +838 True +585 True +209 True +825 True +482 True +993 True +972 True +620 True +664 True +759 True +184 True +952 True +160 True +156 False +814 True +931 True +551 True +711 True +65 False +224 True +115 True +851 True +772 True +104 True +505 True +796 True +723 True +103 True +275 True +564 True +830 True +232 False +951 True +703 True +160 True +138 True +257 True +809 True +298 True +284 True +684 True +464 True +333 True +827 True +211 True +855 True +86 True +913 True +917 True +163 True +409 True +294 True +39 True +511 True +358 True +671 True +237 True +663 True +311 True +163 True +158 True +442 True +958 False +108 True +941 True +837 True +865 True +409 True +128 True +283 True +680 True +730 True +935 True +768 True +54 True +857 True +418 True +911 True +610 True +643 True +381 True +925 True +984 True +800 True +194 True +615 False +16 True +695 True +750 True +855 True +611 True +136 True +108 True +540 True +362 True +711 True +420 True +190 True +213 True +86 True +204 True +288 True +825 True +733 True +7 False +387 False +795 False +505 True +834 True +228 True +192 True +619 True +886 False +467 False +942 True +838 True +512 False +340 True +957 True +962 True +211 True +624 True +349 True +144 True +786 True +350 True +541 True +21 False +284 True +190 True +518 True +484 True +17 False +309 True +530 True +118 True +208 True +253 True +489 True +828 True +309 True +715 True +531 True +516 True +645 True +369 False +185 True +491 True +192 True +233 True +711 True +948 True +572 True +869 True +289 True +932 True +149 True +274 True +511 True +425 True +421 False +288 True +965 True +652 True +919 True +786 True +676 True +791 True +113 False +527 True +897 True +499 True +904 False +166 True +580 True +306 True +353 True +497 False +929 True +553 True +495 True +884 True +794 True +774 False +582 True +489 True +605 True +537 True +247 True +479 True +74 False +227 True +995 True +761 True +958 True +87 False +547 True +795 True +289 True +967 False +611 True +28 False +367 True +690 True +916 True +497 False +894 True +440 True +547 True +596 True +492 True +23 True +237 True +221 False +681 True +580 True +696 True +542 True +56 True +936 True +639 True +947 True +48 True +709 True +307 True +257 True +248 True +697 True +553 True +146 True +241 True +568 True +378 True +41 True +11 True +982 True +323 True +704 True +724 True +195 True +812 True +879 True +508 True +852 True +664 True +317 True +332 True +326 True +158 True +610 True +767 True +936 True +744 True +290 True +839 True +382 True +543 True +827 True +323 True +884 True +962 True +46 False +502 True +265 True +150 True +639 False +955 True +818 True +124 True +512 True +256 True +170 True +996 False +786 False +4 True +284 True +697 True +172 True +398 True +435 True +380 True +698 True +428 True +361 True +206 True +822 False +936 True +745 True +59 True +726 True +249 True +870 True +978 True +761 True +179 True +692 True +477 True +550 True +676 False +281 True +507 True +913 True +215 True +745 True +882 True +130 True +569 False +472 True +27 True +710 True +205 True +403 True +59 True +172 True +697 True +731 True +865 True +155 True +849 True +679 False +854 False +985 True +599 True +191 True +520 True +473 True +708 True +406 True +677 True +599 True +133 False +501 True +446 True +767 True +444 True +49 True +311 True +413 True +157 True +830 True +13 True +90 True +398 True +945 True +978 True +950 True +88 True +297 True +618 True +317 True +709 True +481 True +503 True +570 True +305 True +845 True +661 True +632 True +524 True +590 True +944 False +820 True +829 True +671 True +206 True +239 True +339 True +106 True +415 False +213 True +114 True +903 False +669 True +764 True +319 True +373 True +642 True +121 True +898 True +211 True +579 True +362 True +787 True +440 True +842 True +825 True +590 True +357 True +949 True +523 True +470 True +292 True +594 True +459 True +98 False +355 True +554 True +222 True +243 True +535 True +674 True +804 True +455 True +847 True +32 True +23 False +951 True +217 True +346 True +272 True +183 True +443 True +119 False +833 True +693 True +818 True +699 True +678 True +455 True +826 True +868 True +739 True +753 True +181 True +773 False +323 True +508 True +382 True +169 True +510 False +590 True +295 True +212 True +767 True +970 True +711 True +651 False +36 True +766 True +61 True +697 True +46 True +691 True +970 True +786 True +953 True +775 True +235 True +550 True +417 True +45 True +689 True +645 True +549 True +821 True +601 True +952 False +464 True +609 True +657 False +48 True +888 True +305 True +47 True +254 True +27 True +123 True +818 False +388 False +412 True +491 True +336 True +506 True +422 True +989 True +15 True +70 False +354 True +506 True +11 True +643 True +703 False +963 True +613 False +413 True +485 True +265 True +33 True +589 True +207 True +94 True +663 True +413 True +819 True +655 True +648 True +823 True +770 True +385 True +457 True +150 True +515 True +475 True +825 True +33 True +350 True +459 True +681 True +437 True +689 True +993 True +897 True +837 True +726 True +372 True +922 True +198 True +180 False +679 True +71 False +629 True +796 True +109 True +527 True +682 True +558 True +798 True +437 True +742 True +46 True +498 True +761 True +148 True +856 True +701 True +377 True +536 True +510 True +604 True +540 True +929 True +172 True +799 True +310 True +700 True +440 True +808 True +577 True +417 True +39 True +229 True +794 True +446 True +214 False +543 True +935 True +865 True +445 True +615 True +572 True +419 True +932 True +924 True +72 True +902 True +579 False +997 True +203 True +873 False +945 True +567 True +273 True +142 True +688 True +755 True +850 True +846 True +880 True +883 True +698 False +197 True +316 True +365 False +385 True +977 True +179 True +652 True +875 True +350 True +863 True +73 True +464 False +214 True +852 True +478 True +22 True +93 True +682 True +137 True +309 True +557 True +698 True +218 True +645 True +163 False +89 True +853 True +386 True +341 True +228 True +718 True +492 True +153 True +576 True +857 True +513 True +509 True +322 False +710 True +615 True +613 True +165 True +292 True +370 True +598 True +487 True +503 True +738 True +901 True +648 True +19 True +454 True +78 True +876 True +937 True +383 True +523 True +69 True +326 True +678 True +212 False +436 True +646 False +100 True +367 True +325 True +361 True +207 True +50 False +621 True +237 True +757 True +714 True +502 True +54 True +909 True +411 True +415 True +471 True +985 False +508 True +472 False +891 True +842 True +418 True +906 True +215 True +338 True +606 True +235 True +813 True +259 True +229 True +472 True +222 True +245 False +572 True +927 True +769 True +344 True +291 True +239 True +94 False +818 True +291 True +288 True +163 False +734 False +699 True +981 True +514 True +224 True +189 True +452 True +644 True +669 True +850 True +326 True +869 True +985 True +784 False +592 True +153 True +887 True +493 True +211 True +457 True +834 True +94 True +564 True +498 True +304 True +845 True +12 True +48 True +753 False +244 True +196 True +721 True +90 True +29 True +522 True +487 True +317 True +531 True +311 True +20 True +177 True +969 True +611 True +565 True +338 True +712 True +922 True +770 True +522 False +459 True +149 True +165 True +879 True +103 True +497 True +258 True +931 False +75 True +400 True +972 True +269 True +715 True +475 True +145 True +414 True +228 True +893 False +209 True +508 True +331 True +469 True +894 True +347 False +890 True +541 False +56 True +37 True +197 True +119 True +756 False +850 True +367 True +34 True +517 True +178 True +716 True +892 True +883 True +755 False +496 True +125 True +965 True +428 False +908 True +405 True +650 True +493 True +89 True +581 True +396 True +596 True +964 True +672 True +159 True +463 True +768 True +391 True +871 True +660 False +577 True +73 True +932 True +574 True +186 True +154 False +996 True +720 False +914 True +132 False +137 True +746 True +376 True +661 True +560 True +264 False +511 True +151 True +851 True +284 True +754 True +190 True +19 True +611 True +326 True +841 True +89 True +644 True +797 True +133 True +476 True +810 True +866 True +903 True +839 True +478 True +372 True +744 True +227 True +477 True +3 True +253 True +746 True +289 True +860 True +720 True +708 True +443 True +68 True +283 True +900 True +584 True +308 True +592 True +239 True +250 True +50 True +192 True +111 True +74 True +831 True +914 True +886 True +492 True +425 True +181 True +680 True +873 True +502 True +93 True +503 True +116 True +372 True +492 True +302 True +789 True +861 True +290 False +452 True +83 True +626 True +76 True +178 True +528 True +739 True +804 False +320 True +878 True +746 True +148 True +741 True +262 True +325 True +599 True +592 True +579 False +808 True +386 True +761 True +663 True +462 True +109 True +706 True +553 True +712 True +971 True +674 True +396 True +635 True +728 True +952 True +413 True +744 True +300 True +782 True +742 True +424 True +41 True +375 True +450 True +456 True +714 True +851 True +327 True +179 True +630 True +854 True +251 True +195 True +887 True +209 True +430 True +83 True +596 True +956 True +966 True +274 True +83 True +359 True +411 True +89 True +194 True +491 True +762 True +741 True +598 False +910 True +618 True +677 True +598 True +58 True +290 True +795 True +580 True +559 True +561 True +910 True +321 False +834 True +602 True +752 True +191 True +463 True +792 True +216 True +722 True +668 True +109 True +222 True +195 True +689 True +380 False +637 True +846 True +436 True +827 True +263 True +764 True +464 False +729 True +934 True +289 True +127 True +757 True +954 True +965 True +664 True +716 True +266 True +781 True +989 True +844 True +57 True +118 True +385 True +623 True +245 False +345 True +615 True +768 True +538 True +860 True +783 True +460 True +401 True +796 True +354 True +37 True +797 True +725 True +620 True +578 False +54 False +780 False +251 True +634 False +946 True +702 True +202 True +815 True +724 True +822 True +972 True +27 True +268 False +347 True +98 True +703 True +52 True +320 True +670 True +318 True +734 True +47 True +239 False +953 True +919 True +273 True +454 False +601 True +958 True +758 True +905 True +50 True +971 True +762 True +169 False +915 True +682 False +533 True +502 True +884 False +24 True +262 True +531 True +698 True +234 True +149 True +834 True +994 True +266 True +941 True +434 True +812 True +211 True +133 True +613 True +85 True +871 True +497 True +346 True +737 False +88 True +176 False +192 True +128 True +163 True +26 True +734 False +543 False +656 True +461 True +531 False +971 True +931 True +606 True +506 True +779 False +30 True +211 True +243 False +153 False +504 False +549292 diff --git a/d04/input.txt b/d04/input.txt new file mode 100644 index 0000000..74bab9d --- /dev/null +++ b/d04/input.txt @@ -0,0 +1,208 @@ +Card 1: 57 76 72 11 8 28 15 38 54 46 | 77 87 71 98 40 7 84 43 61 64 5 50 19 83 79 99 36 47 4 95 30 44 37 55 26 +Card 2: 44 69 14 83 54 48 21 6 20 26 | 80 26 86 3 9 4 62 34 15 87 60 88 90 29 65 46 92 73 24 12 40 10 99 37 74 +Card 3: 15 60 63 84 20 93 36 39 17 19 | 68 80 17 91 20 84 69 72 15 39 5 61 74 99 60 85 19 45 24 79 53 36 7 63 93 +Card 4: 22 74 83 58 88 46 7 52 84 5 | 75 20 95 8 37 56 31 42 73 43 40 48 4 28 99 45 90 63 81 93 68 50 46 30 7 +Card 5: 4 97 41 50 32 26 68 84 5 11 | 91 70 87 4 88 13 48 51 32 34 38 82 86 11 1 50 40 43 28 5 61 89 84 41 37 +Card 6: 79 97 39 26 57 69 38 87 60 44 | 22 92 80 38 27 66 54 2 9 62 3 4 71 99 24 97 14 7 93 28 53 50 77 68 73 +Card 7: 73 91 51 23 90 67 19 81 50 12 | 4 76 97 64 19 85 31 3 74 12 23 60 20 68 52 39 43 65 37 63 40 59 99 80 6 +Card 8: 23 64 38 82 68 79 49 56 5 76 | 68 25 64 30 40 52 16 53 95 96 85 9 4 7 26 80 62 67 73 35 32 44 90 69 93 +Card 9: 75 87 69 31 8 11 89 49 95 24 | 35 26 68 69 42 66 37 77 25 45 75 72 38 50 27 24 32 46 11 10 14 95 62 7 86 +Card 10: 37 25 47 36 57 81 44 6 79 98 | 67 34 86 70 39 97 80 69 27 17 7 50 99 84 45 32 49 53 15 95 19 18 47 37 41 +Card 11: 87 98 16 76 21 53 8 42 40 75 | 21 7 89 85 65 30 32 19 68 22 64 82 48 62 39 46 4 57 77 18 55 24 34 29 67 +Card 12: 60 11 44 35 9 56 93 91 15 32 | 31 45 37 63 26 12 15 14 48 92 81 1 97 65 29 95 57 77 99 93 27 25 58 66 61 +Card 13: 25 75 5 60 47 83 8 37 2 43 | 52 30 68 13 1 92 89 63 78 57 87 75 28 82 59 46 33 3 65 41 47 69 21 2 96 +Card 14: 64 44 89 88 1 38 20 99 9 81 | 71 68 91 21 92 75 49 22 27 12 9 26 57 13 66 45 40 37 16 4 44 90 98 85 61 +Card 15: 16 56 91 62 12 83 25 3 70 61 | 81 55 73 96 13 7 67 99 88 90 87 48 83 35 19 97 9 31 20 49 38 44 41 45 5 +Card 16: 78 68 81 18 76 41 88 45 24 87 | 59 84 67 36 33 57 42 32 11 74 65 31 54 46 72 39 98 40 16 49 79 19 3 44 22 +Card 17: 84 11 48 66 54 86 28 4 45 23 | 4 54 42 62 81 8 92 45 47 66 84 48 18 72 28 86 23 34 3 24 73 82 96 11 59 +Card 18: 46 40 41 22 75 92 68 10 52 3 | 84 73 9 22 7 19 3 65 32 6 99 77 97 63 62 59 57 17 8 68 91 28 39 4 41 +Card 19: 19 57 22 85 75 69 50 62 65 61 | 35 24 50 47 74 97 61 27 66 57 77 75 22 30 70 41 62 69 85 58 81 65 19 91 63 +Card 20: 18 13 96 41 20 44 62 97 57 52 | 18 59 96 40 23 58 20 57 41 97 44 62 75 54 85 78 94 52 64 34 37 45 84 13 53 +Card 21: 34 3 13 85 81 19 37 97 29 91 | 9 97 52 3 35 48 24 34 17 50 21 71 57 36 94 82 19 4 14 83 98 37 80 91 59 +Card 22: 18 14 95 74 23 71 31 83 51 57 | 94 14 63 18 16 73 57 31 5 23 51 69 85 45 70 35 74 49 79 27 40 95 83 13 71 +Card 23: 54 12 52 31 58 93 9 45 27 64 | 48 54 93 12 44 64 56 83 35 94 33 4 58 89 8 45 27 1 86 90 52 31 19 57 9 +Card 24: 56 75 17 67 59 37 76 94 25 36 | 24 14 56 53 82 35 92 96 17 34 25 1 16 86 41 95 64 45 38 63 31 18 80 33 66 +Card 25: 32 22 47 24 80 92 96 67 5 26 | 22 81 87 47 26 96 92 60 57 64 66 16 5 83 67 49 32 39 71 80 40 63 99 75 53 +Card 26: 62 36 66 9 3 71 75 67 29 61 | 9 31 66 82 29 41 67 71 38 36 28 76 14 75 69 61 99 57 62 88 70 95 63 10 59 +Card 27: 46 38 59 90 1 65 16 80 76 34 | 70 15 49 31 27 71 54 46 76 1 8 77 93 2 90 39 14 67 62 16 78 56 68 9 58 +Card 28: 47 85 54 21 37 14 44 73 12 51 | 78 70 14 77 98 88 25 49 9 79 58 23 52 2 43 17 12 84 59 51 56 89 47 48 6 +Card 29: 74 37 60 11 56 21 87 44 33 46 | 80 61 34 54 9 3 45 7 55 13 98 84 10 19 14 8 90 81 50 69 31 12 38 29 78 +Card 30: 29 20 44 62 79 34 52 15 49 48 | 17 84 34 1 33 9 23 55 94 10 95 69 42 79 78 44 51 82 20 25 81 29 15 13 32 +Card 31: 88 41 38 98 34 40 92 36 25 50 | 33 54 18 53 46 69 8 22 25 36 51 34 42 92 85 45 40 60 84 27 97 39 10 70 41 +Card 32: 5 28 85 29 95 37 60 34 24 16 | 74 8 48 73 34 65 66 56 64 85 78 17 39 67 92 30 75 22 95 12 29 24 6 2 51 +Card 33: 71 31 99 53 62 80 65 32 13 23 | 87 20 55 24 42 19 67 77 37 89 32 83 44 9 60 46 47 36 49 35 92 10 82 2 81 +Card 34: 78 61 12 81 96 82 7 30 80 32 | 62 8 56 89 11 12 39 31 17 18 79 51 30 92 48 5 45 78 41 44 77 98 71 67 73 +Card 35: 59 35 63 76 51 8 53 70 24 97 | 20 36 31 17 77 26 34 15 41 39 61 24 35 46 80 74 2 71 5 91 16 11 55 87 4 +Card 36: 46 51 79 66 57 52 21 11 75 33 | 88 64 74 99 22 39 42 11 14 65 1 56 86 8 26 16 72 13 55 20 60 40 19 85 58 +Card 37: 83 88 1 19 95 30 38 43 14 51 | 98 20 22 55 13 58 93 21 68 11 76 70 71 35 44 90 52 53 75 17 96 27 49 31 26 +Card 38: 87 49 43 19 16 34 88 66 67 9 | 70 46 63 58 7 53 96 1 59 35 91 85 18 21 93 68 90 73 11 92 60 61 98 38 15 +Card 39: 24 68 25 61 54 63 30 37 21 73 | 50 84 48 10 81 5 62 28 92 66 96 6 20 83 78 88 31 89 12 71 60 8 34 70 90 +Card 40: 18 72 44 15 3 19 69 63 73 57 | 14 3 52 76 71 12 50 13 86 21 55 31 27 29 43 47 90 75 9 97 6 32 96 37 18 +Card 41: 81 66 49 20 86 80 4 55 93 44 | 87 81 7 47 25 85 80 51 76 27 78 10 16 50 33 66 13 64 35 18 44 63 29 92 48 +Card 42: 27 21 14 28 69 89 94 9 19 46 | 92 13 27 99 96 19 43 54 4 14 45 16 44 83 24 61 2 28 5 90 49 51 63 64 73 +Card 43: 34 49 58 85 23 88 84 78 89 55 | 72 45 73 23 75 52 84 78 46 55 58 71 98 5 56 91 49 39 88 70 42 59 89 85 34 +Card 44: 18 69 46 58 73 59 56 23 12 40 | 71 23 87 93 21 84 10 79 47 92 91 13 52 1 32 78 59 95 72 55 97 56 43 61 75 +Card 45: 33 47 58 69 57 1 82 6 61 48 | 48 97 4 1 67 66 82 12 6 29 21 96 90 33 57 28 47 69 74 27 2 32 58 61 9 +Card 46: 42 54 98 50 36 86 27 66 29 60 | 32 23 40 62 38 91 43 98 29 85 18 30 66 28 81 35 68 61 11 27 50 22 41 46 42 +Card 47: 1 31 87 71 53 17 5 93 84 56 | 48 26 14 47 34 44 18 93 17 88 61 8 95 74 53 50 56 80 62 84 99 49 87 52 1 +Card 48: 40 75 79 29 64 57 33 49 95 68 | 7 39 63 79 89 10 23 40 22 86 92 13 57 29 9 19 90 87 58 12 77 16 75 4 91 +Card 49: 4 45 87 47 71 35 9 2 81 77 | 93 33 49 75 11 34 62 39 83 40 55 17 84 43 80 60 46 7 18 56 48 66 95 57 74 +Card 50: 88 42 2 30 24 89 15 93 16 45 | 93 45 72 68 30 28 17 82 64 91 29 98 14 24 88 70 55 48 58 10 42 83 66 2 77 +Card 51: 91 96 87 48 6 73 95 55 71 89 | 94 49 84 33 82 9 21 32 25 46 65 15 86 83 66 11 37 1 14 61 92 36 35 45 27 +Card 52: 48 3 94 56 41 13 34 8 96 25 | 40 88 46 14 68 25 75 66 87 55 64 78 92 43 19 97 53 90 83 59 69 31 84 95 13 +Card 53: 13 45 61 92 91 32 49 58 43 36 | 44 70 55 28 2 6 35 79 24 54 82 95 52 73 75 84 34 57 21 23 33 22 80 88 1 +Card 54: 61 52 20 8 73 54 83 60 29 6 | 74 40 27 46 81 75 3 42 47 69 22 59 58 49 90 63 57 50 79 70 82 5 53 91 39 +Card 55: 41 51 64 55 57 44 26 70 62 34 | 24 82 49 39 56 84 31 27 86 77 22 6 73 72 99 47 60 18 53 68 42 19 66 9 50 +Card 56: 30 89 82 17 72 46 98 5 54 58 | 4 86 18 15 84 41 16 63 44 91 12 31 66 96 94 87 49 59 67 64 80 33 5 11 40 +Card 57: 39 80 17 47 15 96 69 50 46 24 | 5 83 16 52 57 27 98 43 78 1 66 90 19 6 58 3 49 94 85 62 44 54 75 14 9 +Card 58: 42 77 37 13 74 40 31 92 36 46 | 16 74 80 59 51 31 95 85 40 93 23 15 32 18 46 97 36 13 79 10 37 99 77 25 92 +Card 59: 39 1 78 7 57 46 91 26 12 94 | 46 13 26 83 21 1 67 78 50 94 8 12 39 61 86 91 35 29 32 72 30 97 57 16 7 +Card 60: 62 32 18 51 40 96 93 36 80 84 | 42 93 65 8 2 52 84 70 11 1 92 21 80 99 18 14 17 47 56 90 49 67 19 48 97 +Card 61: 6 83 74 89 44 73 39 42 47 88 | 72 74 42 21 88 77 18 6 83 85 49 73 5 39 78 44 64 10 47 14 89 53 98 13 92 +Card 62: 91 86 35 23 30 28 77 88 56 41 | 54 26 90 20 96 78 14 5 47 98 31 55 74 83 33 15 67 92 19 40 73 72 52 81 94 +Card 63: 87 91 78 92 33 71 80 47 13 65 | 32 33 56 55 2 4 61 71 91 97 93 78 83 74 3 13 47 70 54 80 65 60 49 26 96 +Card 64: 70 61 63 52 32 35 85 46 54 4 | 42 54 32 84 56 46 29 61 63 78 4 36 80 86 26 17 3 87 48 21 85 52 35 70 22 +Card 65: 83 95 45 97 49 67 13 92 1 90 | 68 75 20 96 6 33 73 1 50 14 17 66 34 78 54 84 92 9 64 61 85 88 72 42 12 +Card 66: 1 7 99 75 17 21 48 70 30 13 | 70 80 45 89 75 7 21 99 20 54 42 46 67 85 61 17 1 16 30 92 77 48 13 68 90 +Card 67: 69 55 20 91 47 31 33 75 56 39 | 69 31 62 20 58 1 93 48 35 55 47 13 56 60 50 75 25 37 91 81 10 39 32 33 54 +Card 68: 14 97 54 28 73 64 81 32 47 17 | 86 48 88 25 47 65 22 81 28 95 41 14 27 26 46 64 79 61 45 96 32 9 21 54 53 +Card 69: 6 21 89 82 75 48 46 56 68 47 | 48 32 74 30 13 56 93 90 68 33 41 58 21 47 8 17 65 6 89 97 75 82 46 26 59 +Card 70: 35 48 78 92 64 30 88 77 76 10 | 76 33 48 67 78 64 24 69 36 14 77 85 30 73 53 91 3 35 96 88 43 84 10 95 92 +Card 71: 59 78 57 66 15 18 41 83 70 35 | 7 62 19 30 48 97 89 71 40 27 11 63 60 47 23 86 10 84 4 75 80 69 61 67 25 +Card 72: 80 82 46 70 10 14 55 49 62 9 | 31 76 62 17 8 49 19 50 85 72 77 75 42 48 33 60 54 45 12 91 20 92 15 3 25 +Card 73: 38 83 96 47 42 99 13 82 36 85 | 74 86 59 16 49 45 81 61 44 39 3 91 9 26 35 25 55 21 19 41 90 70 10 29 4 +Card 74: 92 36 96 65 24 6 98 13 33 86 | 17 83 30 5 46 51 54 81 44 99 33 56 45 14 57 34 8 16 77 48 40 94 82 73 75 +Card 75: 14 21 57 66 33 8 90 7 4 28 | 91 61 3 84 89 45 60 56 51 10 58 20 96 78 73 93 97 44 19 15 12 90 35 87 42 +Card 76: 37 91 60 44 43 3 40 33 95 51 | 24 39 81 1 46 83 97 88 87 6 67 40 22 96 93 2 71 33 29 15 41 16 89 21 68 +Card 77: 91 84 43 9 87 96 37 64 41 31 | 35 13 30 43 78 32 23 85 84 19 88 68 10 63 27 77 61 50 41 94 54 12 97 86 33 +Card 78: 9 78 53 16 80 56 91 3 62 70 | 85 64 21 88 51 16 15 4 69 30 13 1 70 17 52 23 90 5 24 50 19 81 41 67 12 +Card 79: 59 28 42 51 66 58 63 9 24 47 | 69 95 26 36 14 62 13 20 35 25 34 74 40 41 9 39 45 77 5 10 55 96 22 81 49 +Card 80: 72 83 73 23 85 2 53 22 3 43 | 14 50 67 63 19 76 39 60 31 33 62 92 29 12 49 75 69 78 44 8 96 95 34 65 20 +Card 81: 2 46 29 50 65 57 55 83 74 12 | 4 70 97 54 68 99 81 5 84 10 73 61 88 66 27 8 56 33 79 47 85 49 17 16 34 +Card 82: 37 30 10 3 8 34 44 24 57 13 | 42 17 25 65 48 71 4 64 51 83 75 27 72 96 45 18 11 15 70 53 91 14 12 87 59 +Card 83: 82 81 15 4 54 96 74 72 37 70 | 37 78 72 25 4 66 81 97 6 83 43 96 61 44 15 71 40 54 27 70 82 98 74 93 7 +Card 84: 97 52 96 23 80 53 57 83 16 62 | 5 31 89 91 84 33 52 83 76 23 64 67 10 97 29 63 96 58 74 53 62 57 80 81 92 +Card 85: 53 33 76 24 81 68 51 47 40 89 | 70 38 51 50 85 57 89 40 30 61 1 24 54 75 32 33 96 19 14 53 76 20 7 99 47 +Card 86: 19 96 52 18 15 53 82 16 86 13 | 69 27 32 85 87 30 33 83 11 47 3 21 68 70 42 61 46 2 64 65 44 1 97 48 74 +Card 87: 18 40 55 62 39 95 60 11 76 46 | 82 81 22 46 92 80 62 91 12 40 76 60 69 78 17 18 11 93 56 39 37 88 3 64 95 +Card 88: 72 65 91 61 57 4 49 24 45 31 | 28 49 91 31 19 59 65 36 34 87 72 24 60 89 17 12 57 30 75 32 63 8 21 4 25 +Card 89: 18 24 64 43 33 56 6 67 8 16 | 40 21 27 52 3 23 65 89 16 7 96 31 48 73 33 37 18 99 12 50 74 26 71 84 8 +Card 90: 75 3 92 35 12 26 49 59 60 55 | 65 58 39 73 3 56 11 44 4 47 68 24 86 10 61 6 72 13 82 42 29 93 97 77 8 +Card 91: 78 40 49 75 60 15 59 7 31 93 | 71 9 48 10 69 29 65 40 21 57 68 87 12 35 81 70 30 94 36 97 51 43 8 82 5 +Card 92: 3 53 23 43 15 4 98 11 67 29 | 35 3 93 87 83 60 5 92 1 90 67 23 78 98 20 37 81 71 31 82 95 47 53 75 21 +Card 93: 20 61 6 36 52 77 59 16 18 81 | 66 29 4 87 61 92 78 30 68 69 67 57 88 83 71 54 24 21 13 56 84 35 60 86 53 +Card 94: 25 52 87 17 94 41 23 30 72 53 | 93 62 38 77 31 24 21 36 75 64 45 83 56 39 90 29 55 43 71 54 42 98 76 74 28 +Card 95: 84 66 91 8 26 82 85 96 31 36 | 93 51 40 98 69 74 53 67 86 23 77 41 62 89 64 34 5 26 50 73 42 43 13 19 91 +Card 96: 7 6 90 39 14 73 66 81 33 67 | 63 26 1 58 29 10 3 13 94 9 85 68 69 19 53 96 90 36 49 99 31 74 54 45 77 +Card 97: 66 64 77 7 88 18 40 24 10 63 | 28 22 62 41 30 21 19 12 50 43 46 42 56 6 60 36 95 82 97 2 73 55 38 53 8 +Card 98: 48 10 16 15 93 40 37 72 57 88 | 10 59 38 19 97 23 51 40 35 31 56 54 21 27 28 81 15 67 12 57 37 65 9 22 74 +Card 99: 45 57 7 23 86 82 15 14 75 35 | 55 19 84 37 82 39 15 77 42 52 44 18 75 45 7 69 67 23 86 6 89 14 43 57 35 +Card 100: 68 85 29 69 17 44 19 56 92 8 | 8 4 20 98 36 39 78 79 72 81 51 22 13 47 2 77 30 28 64 41 89 57 50 34 16 +Card 101: 6 91 90 43 85 1 19 2 28 9 | 63 25 2 9 83 85 87 43 91 6 62 64 74 28 19 82 92 29 36 1 71 90 60 99 84 +Card 102: 20 72 12 52 58 28 30 76 42 55 | 30 47 59 29 20 93 90 33 76 58 78 28 52 83 48 72 54 42 67 17 55 12 36 2 37 +Card 103: 58 18 40 8 73 69 22 74 26 63 | 61 40 63 41 82 87 22 8 34 6 73 95 69 44 45 85 62 74 27 28 26 4 96 58 15 +Card 104: 42 71 57 39 22 79 43 80 90 37 | 43 37 76 94 40 67 4 55 74 21 7 42 3 39 28 12 80 57 32 61 95 58 64 90 13 +Card 105: 60 9 50 14 56 11 54 33 77 84 | 77 81 17 99 11 84 70 60 5 43 83 19 80 13 54 33 50 30 87 31 9 4 37 56 14 +Card 106: 79 87 86 96 1 8 63 43 39 91 | 6 2 75 63 67 38 11 96 90 91 87 97 86 9 21 77 43 36 79 8 40 85 39 1 13 +Card 107: 97 83 21 39 74 64 79 70 77 14 | 85 32 55 18 24 14 79 57 51 12 4 21 23 70 26 83 39 66 63 1 64 73 30 8 77 +Card 108: 18 41 11 62 88 38 73 4 47 36 | 82 53 41 92 65 15 42 47 85 96 26 43 58 62 11 3 54 55 89 63 30 17 20 93 2 +Card 109: 28 34 55 39 22 99 98 89 86 54 | 58 76 46 70 91 43 2 79 16 25 89 42 78 52 12 56 44 69 80 85 84 99 62 19 15 +Card 110: 32 38 50 41 8 97 84 60 92 40 | 43 7 51 76 69 38 92 34 41 71 8 49 95 79 32 45 42 58 60 40 4 3 98 31 20 +Card 111: 61 7 67 98 74 21 79 4 85 68 | 90 80 4 8 46 55 40 28 30 38 64 86 73 51 42 66 69 15 29 6 52 78 82 49 41 +Card 112: 13 92 98 37 72 52 1 30 42 36 | 17 65 49 6 5 33 40 10 57 72 12 53 7 15 44 18 90 46 81 99 26 16 23 52 66 +Card 113: 39 30 46 62 55 42 32 77 9 37 | 37 21 50 40 63 97 28 11 51 26 75 86 80 32 16 69 77 60 6 99 9 72 22 55 79 +Card 114: 54 6 72 17 56 76 23 78 7 38 | 15 76 40 56 8 50 51 97 94 64 13 3 69 24 54 66 14 25 82 1 71 41 47 74 92 +Card 115: 50 66 30 89 46 20 35 59 22 88 | 96 72 32 97 61 64 25 70 4 11 88 34 46 6 10 73 71 79 45 33 66 50 24 13 42 +Card 116: 83 33 99 22 90 32 11 28 47 85 | 80 58 57 7 15 1 23 59 86 54 67 36 83 38 34 18 37 35 19 90 45 24 46 4 84 +Card 117: 95 23 58 8 76 82 60 1 15 80 | 75 77 10 85 36 52 91 54 44 96 97 89 25 67 16 31 99 51 68 83 55 29 3 20 33 +Card 118: 53 7 99 97 39 37 80 52 18 77 | 76 78 83 34 75 69 39 14 27 44 89 56 23 30 43 48 57 61 29 82 87 93 67 62 12 +Card 119: 19 22 6 97 71 68 59 95 67 75 | 91 40 20 74 87 46 4 85 63 64 50 88 14 1 54 39 3 62 58 10 28 55 27 86 60 +Card 120: 37 76 87 74 15 84 14 11 99 60 | 24 15 92 60 25 3 86 1 33 5 62 65 79 6 91 45 11 14 10 2 43 4 68 85 54 +Card 121: 74 43 96 14 67 85 19 51 80 95 | 27 53 14 15 72 99 85 30 33 20 13 58 12 25 36 18 45 67 34 79 32 76 96 95 55 +Card 122: 93 51 95 32 2 18 40 72 31 45 | 8 98 70 17 62 22 63 72 69 73 3 26 42 25 1 41 28 13 77 92 32 60 56 2 65 +Card 123: 9 82 93 20 35 69 87 40 30 67 | 87 10 67 63 76 23 45 35 54 5 75 79 66 40 1 89 71 20 77 43 90 65 9 82 37 +Card 124: 93 48 59 54 75 8 83 35 4 64 | 71 59 41 35 4 65 49 5 98 91 54 45 76 64 93 75 8 83 48 87 94 32 16 89 82 +Card 125: 24 14 40 22 2 57 67 35 36 98 | 36 82 19 88 23 55 15 97 78 35 94 24 67 52 14 30 40 56 38 57 2 31 22 98 71 +Card 126: 22 7 97 12 95 66 69 51 59 88 | 94 88 59 58 70 64 95 29 7 93 68 21 16 19 36 39 41 66 10 76 78 82 63 34 56 +Card 127: 46 9 32 85 22 20 14 68 98 61 | 69 25 4 70 64 57 14 89 41 98 22 53 27 77 20 56 84 42 85 40 90 6 61 71 60 +Card 128: 53 84 81 45 23 13 93 34 42 80 | 80 74 39 50 75 49 7 61 43 5 1 51 36 54 57 97 26 32 82 98 68 45 93 37 86 +Card 129: 40 29 85 88 86 7 49 67 91 92 | 86 38 79 31 57 34 78 17 52 53 22 36 62 75 21 70 88 7 3 49 28 6 85 14 4 +Card 130: 63 20 36 62 43 98 99 12 46 57 | 14 32 99 22 17 70 5 91 57 95 49 15 28 46 84 89 78 79 43 98 45 50 88 16 23 +Card 131: 7 16 87 36 73 82 11 40 14 69 | 25 31 82 24 50 38 2 28 4 23 72 6 51 79 86 46 55 97 42 90 84 1 39 32 27 +Card 132: 67 56 15 63 40 9 59 23 94 27 | 26 65 80 40 46 23 37 78 27 12 34 98 41 59 94 16 50 79 90 15 4 7 6 62 17 +Card 133: 18 91 27 52 4 34 12 32 65 41 | 45 55 7 3 84 79 54 91 75 80 17 49 42 9 18 48 59 6 8 22 94 10 93 53 57 +Card 134: 78 75 48 26 14 8 91 41 34 68 | 18 29 57 5 17 22 56 97 74 34 13 50 40 33 62 20 10 71 58 1 21 88 87 8 25 +Card 135: 5 97 16 92 74 51 61 65 3 14 | 15 50 86 24 99 90 59 32 45 81 97 75 6 25 29 80 9 89 46 70 40 57 42 63 60 +Card 136: 81 35 23 70 51 14 31 50 67 7 | 32 28 40 58 4 99 18 95 11 90 86 13 84 74 61 5 44 47 24 38 21 1 77 48 78 +Card 137: 74 99 57 81 5 1 90 9 69 30 | 88 23 97 7 25 68 78 91 53 15 55 81 92 90 12 18 50 71 61 75 8 76 36 19 34 +Card 138: 37 2 84 13 78 51 29 15 42 71 | 49 30 16 88 79 67 76 75 38 80 91 6 28 83 14 26 1 19 40 18 32 98 74 17 44 +Card 139: 49 75 16 61 39 4 51 55 17 97 | 11 45 56 47 81 78 67 21 57 42 84 58 8 13 10 91 7 19 46 14 90 87 26 1 18 +Card 140: 39 19 41 45 17 30 29 66 61 25 | 61 53 29 41 37 30 95 93 45 17 8 21 66 10 14 78 65 18 39 5 52 91 19 25 4 +Card 141: 7 66 29 40 9 14 34 64 4 31 | 98 63 65 6 92 56 81 67 48 88 49 18 38 61 13 95 28 85 20 17 21 30 58 52 89 +Card 142: 32 88 54 27 21 86 49 87 44 45 | 15 44 67 75 87 79 21 10 34 70 54 49 88 3 28 32 65 27 43 98 53 64 45 86 9 +Card 143: 14 7 67 53 37 73 45 18 62 34 | 87 68 3 22 40 86 26 85 70 4 61 78 1 29 48 12 37 10 77 54 99 36 94 79 15 +Card 144: 92 35 52 27 19 16 58 4 22 85 | 47 37 30 51 96 28 58 81 85 9 19 10 46 22 27 7 35 52 16 60 4 92 53 13 84 +Card 145: 71 32 62 83 43 20 97 57 78 24 | 88 34 23 25 67 52 11 9 49 80 70 29 43 2 44 45 62 56 33 3 20 98 28 77 79 +Card 146: 99 11 17 93 16 77 1 46 55 68 | 25 17 77 99 35 53 3 84 98 2 21 74 27 58 16 20 33 22 39 28 69 9 92 46 52 +Card 147: 56 26 30 23 66 94 82 47 14 49 | 68 41 6 13 99 7 71 67 35 93 57 84 44 40 70 89 42 63 74 22 20 55 33 91 64 +Card 148: 21 6 43 36 7 44 61 23 93 57 | 53 20 51 59 74 77 16 92 47 25 62 58 18 85 3 63 46 81 99 5 79 70 69 75 34 +Card 149: 31 36 91 20 17 50 1 18 64 52 | 66 90 80 33 26 24 30 58 45 77 25 29 44 48 6 35 96 13 78 65 68 98 93 89 94 +Card 150: 81 91 37 66 12 33 59 97 38 32 | 61 38 91 95 75 85 48 44 37 47 84 66 35 62 79 94 25 22 97 17 10 31 96 5 78 +Card 151: 32 35 11 75 63 61 42 62 10 56 | 4 44 53 12 50 76 51 5 82 25 30 8 89 41 34 98 54 96 37 74 35 16 31 57 65 +Card 152: 96 60 29 43 99 19 80 8 5 2 | 87 52 19 11 99 35 20 60 55 80 24 21 8 61 38 78 42 28 95 6 64 65 49 59 26 +Card 153: 53 30 75 13 87 77 56 89 63 6 | 7 54 93 80 47 4 72 9 69 44 97 96 23 24 94 67 55 8 33 30 37 6 14 5 3 +Card 154: 10 65 46 58 13 25 69 52 19 3 | 47 41 9 3 40 79 89 21 33 73 14 7 74 65 31 62 24 69 60 87 12 16 53 80 82 +Card 155: 24 51 35 95 93 73 36 65 27 20 | 14 83 97 94 29 39 19 38 33 32 44 92 60 25 76 64 49 71 65 34 91 31 53 74 23 +Card 156: 52 31 50 54 82 42 23 9 39 3 | 29 64 88 70 48 74 12 90 75 57 23 25 58 68 36 33 73 5 84 28 47 92 50 41 21 +Card 157: 66 20 50 96 6 84 54 67 59 81 | 77 60 38 65 37 44 15 73 23 83 18 71 89 53 90 36 40 32 2 39 78 63 8 51 19 +Card 158: 38 46 85 81 87 86 98 90 37 34 | 41 71 35 26 12 19 51 93 39 20 76 24 7 80 50 56 49 2 57 84 68 92 54 1 75 +Card 159: 61 36 84 47 4 22 49 17 31 75 | 77 83 49 55 84 80 18 44 31 47 22 67 4 68 69 35 75 5 59 13 61 39 36 54 17 +Card 160: 90 70 62 65 87 95 15 77 76 35 | 70 94 97 10 90 80 35 27 84 87 42 62 54 26 95 57 82 63 1 18 92 25 49 64 21 +Card 161: 44 6 28 50 79 16 15 83 45 53 | 79 72 12 45 50 35 67 6 89 28 15 61 16 7 46 36 44 55 27 92 1 59 83 53 94 +Card 162: 29 51 46 64 4 75 37 78 81 71 | 83 71 37 39 74 66 32 1 51 93 43 46 20 3 15 50 81 64 75 73 78 29 33 4 22 +Card 163: 1 52 37 97 88 47 94 10 98 5 | 85 31 33 46 15 1 16 61 98 59 64 94 83 68 35 11 44 80 38 36 84 72 86 40 29 +Card 164: 60 40 94 62 18 71 92 25 21 64 | 64 18 58 76 38 55 40 45 71 92 73 75 25 62 12 94 68 79 23 91 21 60 72 39 7 +Card 165: 63 88 91 22 85 18 39 55 33 84 | 95 88 37 5 39 46 33 61 32 45 74 20 27 35 76 85 84 18 54 86 91 75 22 55 63 +Card 166: 72 11 31 50 53 82 41 74 62 87 | 42 34 50 11 96 3 77 7 37 22 44 38 62 1 87 68 12 54 74 53 47 82 69 89 85 +Card 167: 79 26 70 95 25 16 18 37 75 61 | 39 11 68 61 44 53 42 94 37 45 75 78 62 18 95 26 79 92 38 13 16 64 21 91 57 +Card 168: 94 86 69 88 31 15 62 44 19 14 | 3 24 29 8 44 61 89 7 75 15 91 36 45 70 66 4 35 6 71 22 25 39 55 33 18 +Card 169: 86 68 72 15 42 99 9 35 2 74 | 42 84 59 86 6 15 53 89 85 79 20 68 62 61 10 2 9 51 99 54 33 35 13 48 93 +Card 170: 83 6 15 80 93 63 79 50 69 5 | 15 25 6 93 69 50 83 68 16 40 66 58 63 79 52 7 80 34 61 95 5 33 78 91 32 +Card 171: 33 85 4 12 72 62 49 67 17 53 | 4 17 53 72 47 6 49 56 82 48 12 26 30 85 61 15 36 70 64 25 2 33 67 46 62 +Card 172: 98 63 26 82 12 61 56 95 27 99 | 76 30 14 95 26 97 71 19 57 67 73 48 63 54 82 18 98 27 61 5 12 44 1 56 74 +Card 173: 7 32 34 4 22 79 27 10 78 65 | 3 81 65 36 91 62 94 54 41 32 12 28 39 34 18 61 78 79 80 66 9 63 43 72 97 +Card 174: 14 78 60 32 26 31 15 80 11 72 | 1 31 33 35 73 83 97 36 21 3 26 9 91 23 51 84 82 70 22 20 34 90 98 87 69 +Card 175: 73 14 7 11 20 64 30 90 62 23 | 60 53 15 73 63 19 71 92 48 89 80 44 78 79 2 76 45 64 42 35 81 27 10 21 26 +Card 176: 32 30 39 10 1 3 67 66 94 62 | 86 95 56 54 58 35 90 19 74 43 5 48 17 2 46 65 97 71 36 31 69 8 47 94 42 +Card 177: 24 90 40 47 51 75 63 29 57 10 | 49 68 61 43 30 26 84 59 99 75 44 41 17 24 12 38 90 37 36 35 91 9 89 46 8 +Card 178: 73 74 31 76 10 21 70 3 30 41 | 39 14 30 70 79 75 97 44 87 20 92 12 86 56 18 46 8 90 23 98 2 59 28 53 3 +Card 179: 78 44 89 84 50 97 55 90 77 99 | 79 1 88 65 2 50 72 68 7 15 85 41 64 93 37 16 53 44 42 48 89 97 59 60 8 +Card 180: 55 98 13 45 33 91 88 4 49 37 | 18 44 64 83 56 79 81 26 78 54 72 75 11 70 66 57 73 61 62 34 19 95 93 94 76 +Card 181: 94 47 65 55 8 45 1 67 71 25 | 99 34 43 64 36 50 6 51 27 59 37 40 3 98 72 78 38 74 82 46 85 90 48 32 84 +Card 182: 78 75 63 31 30 70 84 50 28 19 | 61 18 58 87 77 48 71 50 91 92 60 86 73 94 85 57 97 15 1 25 74 67 11 68 47 +Card 183: 94 27 68 41 8 72 48 85 97 49 | 81 35 90 69 76 18 53 1 59 25 88 31 4 93 84 32 9 55 66 50 22 62 43 60 17 +Card 184: 40 31 56 54 59 98 93 81 24 44 | 62 42 93 56 99 10 81 59 37 6 41 66 44 72 31 30 20 54 51 24 27 83 40 73 98 +Card 185: 38 73 79 48 3 46 99 93 50 24 | 65 34 40 2 20 92 10 32 67 57 22 47 96 11 7 31 87 6 28 95 77 25 58 29 27 +Card 186: 47 65 99 98 90 68 13 49 51 10 | 90 82 27 68 84 83 57 50 18 5 49 65 85 10 46 13 21 81 73 51 71 47 98 88 99 +Card 187: 25 56 18 15 59 47 20 86 50 83 | 25 57 83 36 56 87 50 34 9 70 4 64 77 45 92 13 20 47 48 15 97 18 86 28 59 +Card 188: 99 16 44 2 85 17 71 45 49 11 | 94 13 45 36 77 89 26 6 39 27 84 1 80 21 73 41 33 90 46 72 65 96 34 71 83 +Card 189: 34 24 76 68 47 19 85 15 50 46 | 43 67 4 44 14 34 19 61 47 68 50 46 99 94 16 76 15 28 36 27 52 85 88 24 89 +Card 190: 56 20 43 86 2 88 87 30 14 4 | 43 14 19 92 3 23 87 74 50 97 2 88 18 80 20 86 36 41 95 27 57 98 49 30 26 +Card 191: 47 2 18 84 91 66 24 6 42 56 | 12 93 7 50 42 45 2 91 66 4 32 47 19 56 49 18 15 24 44 84 97 6 16 31 25 +Card 192: 42 88 68 56 93 48 9 52 20 70 | 30 93 42 4 68 70 36 56 9 15 88 98 64 67 33 91 20 61 50 27 13 94 52 48 85 +Card 193: 46 57 19 40 9 7 47 33 86 11 | 65 54 38 43 82 55 79 51 77 73 74 97 75 96 6 47 62 88 92 18 84 48 41 29 52 +Card 194: 58 23 35 79 82 72 44 93 12 43 | 43 60 2 24 77 48 61 25 44 75 35 12 93 51 36 72 6 31 29 50 37 80 19 14 87 +Card 195: 15 77 78 50 36 83 68 52 86 26 | 16 72 67 88 14 81 34 24 71 32 91 77 90 1 98 95 7 28 49 84 86 20 44 73 56 +Card 196: 25 3 32 15 1 56 27 51 82 81 | 87 79 15 11 98 54 56 88 18 92 69 25 66 27 60 58 44 1 51 3 32 81 12 72 41 +Card 197: 3 99 81 8 93 28 76 7 27 48 | 78 98 85 5 93 77 72 62 69 82 50 9 35 74 18 10 33 67 90 31 79 84 58 29 17 +Card 198: 26 81 19 24 59 82 8 95 86 17 | 13 22 10 96 19 20 88 3 90 78 24 9 50 34 6 94 7 60 44 76 31 81 26 33 43 +Card 199: 77 91 58 16 47 94 23 30 88 5 | 38 66 12 25 95 67 72 89 36 45 63 15 54 98 74 57 32 39 59 28 7 62 82 13 26 +Card 200: 82 47 52 12 83 4 26 93 33 9 | 31 30 91 2 6 27 28 1 81 8 75 92 56 57 41 24 72 85 53 74 59 11 66 32 54 +Card 201: 4 13 26 57 84 17 63 10 98 56 | 72 85 68 47 44 60 54 34 38 16 8 11 23 84 32 18 69 13 26 35 9 73 43 15 89 +Card 202: 11 9 1 42 71 78 97 89 8 10 | 33 17 81 48 60 96 69 37 12 46 73 4 76 54 86 91 28 5 51 98 99 84 13 85 32 +Card 203: 37 80 7 87 79 60 6 49 16 12 | 23 34 15 46 38 20 27 45 33 97 37 14 68 83 49 79 43 70 57 60 11 63 24 35 73 +Card 204: 84 24 48 76 7 18 77 37 69 5 | 88 39 92 94 34 37 11 40 85 35 2 81 73 58 42 66 83 9 56 12 14 51 62 20 7 +Card 205: 5 84 4 6 95 77 59 67 74 35 | 58 47 29 34 79 86 35 89 71 96 27 64 90 48 37 78 1 39 46 21 98 91 43 8 56 +Card 206: 56 21 34 13 1 17 99 11 76 60 | 36 24 83 31 50 19 82 32 61 9 98 71 79 39 97 37 29 13 27 10 52 22 41 40 59 +Card 207: 62 7 22 90 51 96 12 13 36 52 | 48 37 70 24 73 51 83 3 5 77 29 87 23 18 26 76 19 97 20 86 84 14 63 33 21 +Card 208: 40 42 5 91 29 59 70 49 23 94 | 82 81 30 61 64 65 19 9 67 75 92 16 26 52 73 43 55 35 17 93 39 90 74 53 51 \ No newline at end of file diff --git a/d05/exemple1.txt b/d05/exemple1.txt new file mode 100644 index 0000000..bd902a4 --- /dev/null +++ b/d05/exemple1.txt @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4 \ No newline at end of file diff --git a/d05/run.py b/d05/run.py new file mode 100644 index 0000000..320e608 --- /dev/null +++ b/d05/run.py @@ -0,0 +1,22 @@ +import sys +en=enumerate +L = open(0).read().split('\n\n') +L = [l.split(':') for l in L] +L = [l[1].strip().split('\n') for l in L] +L = [list(map(lambda x: tuple(map(int,x.split())),l)) for l in L] +S = list(v for s in L[0] for v in s) + +for i,l in en(L[1:]): + print(i, l) + # map all seads + R = [] + for s in S: + ns = None + for dst, src, rg in l: + if src <= s < src+rg: + ns = dst+(s-src) + break + R.append(ns if ns else s) + S = R + print(S) +print(min(S)) \ No newline at end of file diff --git a/d05/run1_print.py b/d05/run1_print.py new file mode 100644 index 0000000..4bd1a11 --- /dev/null +++ b/d05/run1_print.py @@ -0,0 +1,34 @@ +import sys + +lmap=100 + +alma = [ele for ele in sys.stdin.read().splitlines() if ele != ""] +planted = [int(ele) for ele in alma[0].replace("seeds: ", "").split(" ")] + +source = list(range(0, lmap)) +destin = list(range(0, lmap)) + +for d in alma: + if "map" not in d and "seeds:" not in d: + r = [int(i) for i in d.split(" ")] + print(r) + print(source) + print(destin) + for n in range(0, r[2]): + destin[r[1] + n] = source[r[0] + n] + print(source) + print(destin) + print("") + print("") + + else: + for i in planted: + print(destin[i]) + source = list(destin) + destin = list(range(0, lmap)) + print(d) + +print(destin) +for i in planted: + print(destin[i]) +print(min(s) for s in destin) \ No newline at end of file diff --git a/d06/exemple1.txt b/d06/exemple1.txt new file mode 100644 index 0000000..bd902a4 --- /dev/null +++ b/d06/exemple1.txt @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4 \ No newline at end of file diff --git a/d08/exemple1.txt b/d08/exemple1.txt new file mode 100644 index 0000000..34ffa8a --- /dev/null +++ b/d08/exemple1.txt @@ -0,0 +1,5 @@ +LLR + +AAA = (BBB, BBB) +BBB = (AAA, ZZZ) +ZZZ = (ZZZ, ZZZ) \ No newline at end of file diff --git a/d08/exemple2.txt b/d08/exemple2.txt new file mode 100644 index 0000000..a8e2c98 --- /dev/null +++ b/d08/exemple2.txt @@ -0,0 +1,10 @@ +LR + +11A = (11B, XXX) +11B = (XXX, 11Z) +11Z = (11B, XXX) +22A = (22B, XXX) +22B = (22C, 22C) +22C = (22Z, 22Z) +22Z = (22B, 22B) +XXX = (XXX, XXX) \ No newline at end of file diff --git a/d08/input.txt b/d08/input.txt new file mode 100644 index 0000000..e3792c5 --- /dev/null +++ b/d08/input.txt @@ -0,0 +1,704 @@ +LRRRLRRRLRRLRLRRLRLRRLRRLRLLRRRLRLRLRRRLRRRLRLRLRLLRRLLRRLRRRLLRLRRRLRLRLRRRLLRLRRLRRRLRLRRRLLRLRRLRRRLRRLRRLRLRRLRRRLRLRRRLRRLLRRLRRLRLRRRLRRLRRRLRRRLRLRRLRLRRRLRLRRLRRLRRRLRRRLRRRLLRRLRRRLRLRLRLRRRLRLRLRRLRRRLRRRLRRLRRLLRLRRLLRLRRLRRLLRLLRRRLLRRLLRRLRRLRLRLRRRLLRRLRRRR + +DBQ = (RTP, NBX) +NFX = (PXX, PLG) +VBK = (BRV, DKG) +BRS = (HLR, VBX) +DDK = (SPR, TCR) +FTS = (LJB, MDJ) +BLH = (DFM, GGG) +PCC = (GQR, RHD) +QKN = (VVR, GBL) +KHN = (FNB, LLT) +HTD = (NPJ, BTL) +FPL = (BRX, XQD) +RCJ = (QKN, XPD) +XRN = (RMQ, LQB) +HGM = (VPV, SVR) +RFG = (TLM, KPH) +SSG = (QGC, KJV) +LPA = (QQN, GNF) +SVN = (VLM, BDX) +VPF = (TTR, RNQ) +VNK = (DSX, MCZ) +KMS = (XNN, MTB) +RLS = (NHX, CRT) +VRS = (VBX, HLR) +TVK = (MKG, NKB) +CKH = (DFF, XPV) +KBS = (LJC, PRS) +JMT = (FPT, DLX) +LRV = (QCD, RLF) +TMM = (VPF, GKD) +HKH = (PRS, LJC) +GSM = (SVH, KRP) +SLG = (PTL, SNJ) +GVS = (DSN, CKH) +QGC = (HKS, DFP) +RFT = (VVQ, GMF) +FDF = (JKV, JKV) +MRL = (PKS, TKS) +HBN = (BDX, VLM) +CFB = (PPV, QVS) +TFJ = (KGN, JND) +HLB = (PFV, JXR) +RFJ = (SKL, QCN) +PQH = (KGN, JND) +HGR = (FKL, XHR) +CTB = (HNQ, HNQ) +XMN = (CJV, LKQ) +JVX = (FSS, CRC) +SFH = (MXD, RHN) +BRK = (QPL, DJB) +HBX = (DSN, CKH) +RFL = (VXB, FNF) +GXP = (LHR, SMV) +CHK = (NLQ, VCR) +QPG = (HHL, KHB) +VBC = (NFV, FST) +QJF = (JXL, JJC) +XKQ = (PCS, BSH) +SKS = (SNN, QSN) +GJJ = (VVG, XPR) +DJP = (SJM, DNR) +DQF = (MHG, BKZ) +MSB = (BRX, XQD) +PQR = (TLL, RVS) +XGB = (RMT, HGF) +HBD = (PFD, FDN) +NSN = (RFJ, NJT) +SNJ = (MVG, DBQ) +NMV = (SKG, TDJ) +PTN = (TNR, SSG) +SBG = (CVH, LMJ) +RDT = (SVQ, JTT) +MRC = (BKF, QMJ) +JKV = (CTB, CTB) +CTX = (QHL, BDV) +SQM = (DNR, SJM) +MVG = (RTP, NBX) +KKJ = (TQP, PST) +QKX = (BRD, SFT) +VFV = (NTL, VMQ) +LXK = (SSL, MFR) +HDH = (VPS, MJH) +RTP = (CGJ, XJC) +BXQ = (FLN, FLN) +GKD = (TTR, RNQ) +GPP = (SNN, QSN) +GDQ = (JLS, TND) +LTF = (GXP, TVB) +GVB = (LSV, FRL) +JCF = (HGR, GMX) +VCR = (JTR, MCM) +XJC = (DGP, XML) +XKA = (SFC, CHQ) +LJL = (VPX, PMS) +CPH = (PCQ, QKX) +VPV = (TFP, NJN) +TDJ = (PRV, DBK) +JGQ = (TPX, NMV) +LJS = (GDQ, QPV) +VHN = (CBJ, PFQ) +JHT = (XHM, NRK) +ZZZ = (HJS, LRV) +KJV = (HKS, DFP) +HNT = (XXT, KJT) +RHD = (KQH, TMD) +JKG = (HXJ, MGF) +SPL = (TTB, STB) +MBD = (CQK, NHH) +TPX = (TDJ, SKG) +HRC = (LBB, JLR) +QHN = (JHT, THC) +SPM = (DDG, MBK) +MFG = (JBD, GSM) +MHR = (PTN, HVB) +RLF = (GMG, TDQ) +XBQ = (KKN, QTN) +GLB = (DHS, SXC) +PRV = (PGC, NSK) +SJD = (BXQ, GHF) +THC = (XHM, NRK) +GBL = (GGR, HTK) +MDK = (JXX, DBD) +NJT = (QCN, SKL) +LLG = (KBL, LXK) +RVS = (DDB, QRV) +LHR = (LPL, TGJ) +TBD = (NNB, CQH) +DSN = (DFF, XPV) +QQN = (HRV, PTT) +XPP = (GSJ, RDT) +CBJ = (JQL, RBX) +RBX = (CNV, NKQ) +DDG = (NBS, KTV) +XNN = (TMC, GCG) +DSX = (CGR, SGM) +DFB = (RCJ, KJK) +XTG = (RFG, XSD) +PKQ = (DBD, JXX) +XPD = (GBL, VVR) +FFC = (JLR, LBB) +GMG = (KFH, PTP) +QHJ = (SHM, FKM) +MXD = (XGB, LTX) +SGM = (FTS, GXX) +LTX = (RMT, HGF) +RNQ = (SPL, DKH) +NHF = (VXC, HRS) +KFR = (JXR, PFV) +NRP = (XNN, MTB) +VDR = (LDL, JCP) +FSS = (KXJ, GKL) +QVS = (MKN, BLH) +SNN = (SBM, PNH) +VXB = (LLG, BHP) +BPK = (QVS, PPV) +SMV = (TGJ, LPL) +CXF = (XKV, PVR) +PGC = (NBJ, KCK) +VLG = (DDG, MBK) +FKL = (HFC, XPP) +KFC = (XNM, CNR) +FCC = (BRK, GLT) +HQC = (JKV, JHQ) +QQV = (CPG, HQD) +VVG = (XGJ, XGJ) +SVK = (HVH, HNJ) +XQT = (LQX, HNT) +JDB = (PXM, THR) +JHR = (XRF, DHN) +HRS = (TFJ, PQH) +SVQ = (XHX, QNG) +KGN = (FCV, SBH) +GJX = (MFG, LMS) +NBJ = (GVB, RMS) +VQJ = (JPB, PDF) +TKX = (JMT, LGM) +FLL = (GTX, HKP) +MFT = (FKM, SHM) +JCP = (SSP, VMD) +LPC = (KCD, JDB) +XHR = (XPP, HFC) +FKM = (DLL, XBQ) +MGF = (NFX, MQS) +JXJ = (MMP, CBT) +DFP = (TGM, RHV) +SSM = (NTC, TMT) +DLX = (PXF, SBG) +NNB = (TNT, MMF) +QNG = (RHP, QBT) +FLR = (CJK, QRL) +RCP = (KKG, NTD) +GJV = (SLG, DGN) +FDN = (TBR, QDT) +JTG = (RFT, PRC) +LGM = (DLX, FPT) +QDT = (CXV, SGD) +HKP = (BLB, PCL) +GXB = (MNH, GXT) +QDS = (LTF, FDX) +LMJ = (GJV, HVV) +TDQ = (PTP, KFH) +SGD = (HTT, PNR) +XPV = (BPM, CPH) +PTP = (MKL, KSP) +DKG = (DKK, KNQ) +QCN = (XTD, GQM) +LSV = (GDK, VVD) +MLG = (RLS, RKG) +GMX = (FKL, XHR) +QSN = (PNH, SBM) +CHQ = (KSB, CXF) +RHN = (LTX, XGB) +LVX = (JSF, MLT) +XHM = (FLR, QVK) +NCJ = (CPG, HQD) +MQV = (HBD, LDK) +VVD = (QBV, FKF) +QCD = (GMG, TDQ) +GTH = (DLJ, DQF) +KFH = (KSP, MKL) +NFC = (PKQ, MDK) +NCD = (FNB, LLT) +MKG = (HNS, DDK) +BTV = (KBS, HKH) +QGL = (QTF, CVS) +DDB = (DVF, HXV) +PXF = (CVH, LMJ) +NFV = (XMN, BQR) +DGN = (SNJ, PTL) +HHL = (PHC, QQJ) +XPR = (XGJ, LVQ) +PCQ = (BRD, SFT) +MMT = (RDS, SRS) +DMR = (GJM, BQS) +QPL = (XNQ, CMN) +PDF = (JBH, CTX) +CVR = (STX, MBQ) +LPL = (SFL, PHQ) +FXX = (PNX, PQL) +KLS = (NHG, CHF) +NHX = (TMN, JLJ) +NND = (QHN, XBR) +JTT = (QNG, XHX) +LML = (FDX, LTF) +PCS = (LKV, LXX) +SRV = (KCD, JDB) +NSK = (NBJ, KCK) +MRF = (NKP, JKG) +VPX = (NSN, SMB) +GFT = (FPL, MSB) +DFM = (XKQ, PPQ) +PPQ = (PCS, BSH) +JJC = (JHR, RQG) +JBH = (BDV, QHL) +KNQ = (KNP, MRL) +TBS = (NTD, KKG) +JXL = (RQG, JHR) +GKL = (MJC, QBM) +BQR = (LKQ, CJV) +DGP = (VNT, JRB) +DKR = (VBJ, GVF) +JXN = (BXD, XLT) +TVG = (HGR, GMX) +XSD = (TLM, KPH) +RMT = (GXB, DPT) +FRL = (VVD, GDK) +PNX = (NCD, KHN) +VGK = (CNR, XNM) +MQB = (KSF, LJS) +KDC = (MSB, FPL) +GCD = (CXS, PCC) +XML = (VNT, JRB) +TBL = (GCV, HDH) +BRV = (DKK, KNQ) +JKS = (XXB, ZZZ) +TMC = (MDQ, QJF) +TNT = (NQJ, SSM) +FLF = (XSD, RFG) +JRB = (FDF, HQC) +PTL = (DBQ, MVG) +BGQ = (KFR, HLB) +XTD = (VRS, BRS) +QXX = (SJD, CSH) +FRX = (BQS, GJM) +PQL = (NCD, KHN) +LKV = (PNK, DKR) +HQS = (VVG, XPR) +VPQ = (NTL, VMQ) +THR = (CBV, CVR) +FST = (BQR, XMN) +DMD = (CVS, QTF) +HXV = (RCP, TBS) +STM = (RFX, BFR) +JTR = (JTL, JXN) +FLG = (PFQ, CBJ) +CKM = (KFB, HTP) +NCT = (KJK, RCJ) +DKH = (STB, TTB) +QGA = (CGR, SGM) +XNQ = (HJM, MLG) +RGF = (LFN, FGC) +QBV = (VPJ, RMN) +QKJ = (KFC, VGK) +CSB = (FDL, FDL) +HFK = (DHS, SXC) +SVP = (NPJ, BTL) +GGR = (XTG, FLF) +XKV = (NDH, JXJ) +BMR = (FRX, DMR) +VVQ = (BFN, TVK) +HJM = (RKG, RLS) +RLK = (PDF, JPB) +DCX = (HNQ, BRZ) +TBG = (RTL, SML) +RMS = (FRL, LSV) +FCV = (STM, HTC) +SPR = (TBL, JGG) +BHP = (LXK, KBL) +NPJ = (XLV, PQR) +NKF = (TBD, DKP) +PDK = (JTK, JTK) +PFQ = (RBX, JQL) +LBB = (SVP, HTD) +GTX = (BLB, PCL) +SBH = (HTC, STM) +BFR = (RJN, BTN) +TCR = (TBL, JGG) +MQS = (PXX, PLG) +FRG = (XXB, XXB) +STX = (XQL, HGM) +HNJ = (HBN, SVN) +SSL = (RDL, NST) +HJS = (QCD, RLF) +KBL = (SSL, MFR) +CXS = (RHD, GQR) +DFD = (NFP, FCC) +VBJ = (HFK, GLB) +DKP = (NNB, CQH) +QSK = (TKX, CQT) +BNV = (JTK, GTH) +NBH = (LVX, GQB) +QBM = (VNC, VPK) +DBD = (HHR, RVQ) +DFF = (BPM, CPH) +LQX = (KJT, XXT) +FGC = (QKQ, QSK) +PXM = (CBV, CVR) +JHQ = (CTB, DCX) +NJN = (BGQ, FBP) +TLL = (DDB, QRV) +XSN = (THS, KJQ) +KXJ = (QBM, MJC) +GSC = (TQG, QXX) +QJP = (PQL, PNX) +PHH = (MXD, RHN) +SSC = (NQX, FCH) +XDF = (NLQ, VCR) +BRD = (MQV, FRQ) +AAA = (LRV, HJS) +PTT = (FFC, HRC) +VKF = (BFG, TGQ) +HHA = (FLG, VHN) +CNR = (TQX, VDV) +TGM = (FLL, TNV) +GLT = (DJB, QPL) +MBK = (NBS, KTV) +JPB = (JBH, CTX) +RHP = (SQM, DJP) +CHF = (CLQ, JGQ) +FTL = (PRC, RFT) +SKL = (XTD, GQM) +RBN = (SPM, VLG) +HGF = (GXB, DPT) +BQS = (NSP, BTV) +XHX = (RHP, QBT) +CGR = (GXX, FTS) +BLB = (QJP, FXX) +CRT = (JLJ, TMN) +PLG = (SLC, PDD) +HRV = (FFC, HRC) +MCM = (JXN, JTL) +JGH = (MFG, LMS) +NSP = (KBS, HKH) +MFR = (NST, RDL) +GMF = (TVK, BFN) +SML = (LJL, XFP) +MPL = (RDS, SRS) +QHP = (SPM, VLG) +FCH = (GDC, XRN) +NRQ = (FTL, JTG) +HMB = (CRC, FSS) +KPH = (BNH, SLK) +SRS = (MQB, GCN) +RQM = (TGQ, BFG) +FLN = (CSB, CSB) +BSH = (LKV, LXX) +CRC = (KXJ, GKL) +CJV = (XDF, CHK) +CGJ = (DGP, XML) +SFL = (GJJ, HQS) +PMR = (VPF, GKD) +QTN = (MMT, MPL) +KJQ = (RLK, VQJ) +PBJ = (LFN, FGC) +BTL = (PQR, XLV) +SBX = (KFC, VGK) +QQJ = (PDK, BNV) +BRZ = (GNF, QQN) +JTL = (XLT, BXD) +SKG = (PRV, DBK) +RQG = (DHN, XRF) +DRC = (SFC, CHQ) +TJQ = (NQX, FCH) +PKS = (TMM, PMR) +TRP = (GVD, FBL) +LKQ = (XDF, CHK) +RTL = (XFP, LJL) +PPV = (MKN, BLH) +MTB = (GCG, TMC) +FPT = (PXF, SBG) +LDK = (FDN, PFD) +TND = (PPX, SVK) +VPK = (NHF, JDX) +HTP = (NKF, RPV) +PMS = (SMB, NSN) +GGG = (XKQ, PPQ) +DLL = (KKN, QTN) +JXX = (HHR, RVQ) +KSF = (QPV, GDQ) +XQD = (FGK, BNJ) +RJF = (CSB, KTM) +GCN = (KSF, LJS) +JKP = (LML, QDS) +XFP = (VPX, PMS) +DPT = (GXT, MNH) +DKK = (KNP, MRL) +NKB = (DDK, HNS) +CJK = (GSC, GBQ) +NLM = (LDL, JCP) +VMD = (DFD, XFM) +NBX = (XJC, CGJ) +PRS = (NLM, VDR) +RMQ = (FRG, FRG) +XNM = (TQX, VDV) +LJC = (VDR, NLM) +PHQ = (GJJ, HQS) +KXN = (KHB, HHL) +BXD = (CKM, XVL) +KFB = (NKF, RPV) +NFS = (PRL, RFL) +RJN = (SFV, RRG) +GQM = (VRS, BRS) +KQH = (VBC, BSJ) +DNR = (BMR, LJQ) +HHR = (LPC, SRV) +DLJ = (MHG, MHG) +SMB = (RFJ, NJT) +RHV = (FLL, TNV) +NTD = (HBX, GVS) +VNT = (FDF, HQC) +PRC = (GMF, VVQ) +FBP = (HLB, KFR) +KTM = (FDL, LRZ) +TQP = (QGL, DMD) +SBM = (QPG, KXN) +QVK = (CJK, QRL) +XRF = (RGF, PBJ) +NDH = (CBT, MMP) +GVL = (RTL, SML) +LRZ = (VHN, FLG) +CQH = (MMF, TNT) +SLK = (TJQ, SSC) +QBT = (SQM, DJP) +FNF = (LLG, BHP) +STB = (KMS, NRP) +HVV = (SLG, DGN) +RFX = (BTN, RJN) +MKL = (GVM, LVP) +VDV = (BPK, CFB) +CBT = (GJX, JGH) +PPX = (HVH, HNJ) +NQJ = (TMT, NTC) +MJH = (MHP, XQT) +LTA = (KLS, BFV) +CSH = (BXQ, GHF) +HTK = (XTG, FLF) +VNC = (JDX, NHF) +BFG = (MRC, NKK) +KKG = (GVS, HBX) +PNK = (GVF, VBJ) +XXB = (LRV, HJS) +DVF = (TBS, RCP) +PNR = (NCJ, QQV) +QKQ = (CQT, TKX) +TTR = (SPL, DKH) +BTN = (RRG, SFV) +VLM = (PHH, SFH) +TQG = (SJD, CSH) +MHP = (LQX, HNT) +NQX = (GDC, XRN) +TQX = (BPK, CFB) +TVB = (LHR, SMV) +MBQ = (XQL, HGM) +HXJ = (MQS, NFX) +DHN = (PBJ, RGF) +BFN = (MKG, NKB) +PVR = (JXJ, NDH) +QRL = (GBQ, GSC) +GJM = (NSP, BTV) +KQV = (NHH, CQK) +KNP = (TKS, PKS) +PDD = (FND, JKP) +GXT = (VKF, RQM) +XDC = (FTL, JTG) +MMF = (SSM, NQJ) +BFV = (CHF, NHG) +DHS = (PHX, PHX) +VXC = (PQH, TFJ) +XLV = (TLL, RVS) +PXX = (SLC, PDD) +GVD = (DRC, DRC) +THS = (VQJ, RLK) +DBK = (PGC, NSK) +KHB = (PHC, QQJ) +TKS = (PMR, TMM) +SVR = (NJN, TFP) +HNQ = (QQN, GNF) +MKN = (GGG, DFM) +KRP = (NFM, NFC) +SHM = (XBQ, DLL) +NTL = (NCT, DFB) +NRK = (QVK, FLR) +HXL = (DSX, DSX) +KSB = (XKV, PVR) +NKK = (BKF, QMJ) +MHG = (KLS, BFV) +PNP = (XBR, QHN) +CLQ = (TPX, NMV) +RSG = (XDC, NRQ) +BPM = (PCQ, QKX) +PHC = (PDK, BNV) +TNR = (KJV, QGC) +XQL = (VPV, SVR) +MHV = (QTS, RSG) +XBR = (THC, JHT) +BDX = (PHH, SFH) +TBR = (CXV, SGD) +RVQ = (SRV, LPC) +NFM = (PKQ, MDK) +FBL = (DRC, QSZ) +TLM = (BNH, SLK) +NHH = (SKS, GPP) +FKF = (RMN, VPJ) +XVL = (HTP, KFB) +NHG = (CLQ, JGQ) +FGK = (NBH, KBX) +VMQ = (DFB, NCT) +LXX = (DKR, PNK) +SMJ = (QGB, NFS) +LVP = (KDC, GFT) +QGB = (PRL, RFL) +BRX = (BNJ, FGK) +BDV = (MRF, RXX) +SJM = (BMR, LJQ) +GBQ = (TQG, QXX) +JXR = (XJT, CVX) +TMN = (XSN, PQM) +CQT = (LGM, JMT) +CPG = (QHP, RBN) +BKZ = (BFV, KLS) +VVR = (HTK, GGR) +XFM = (NFP, FCC) +CVH = (GJV, HVV) +VPS = (XQT, MHP) +MDJ = (QHJ, MFT) +SNF = (QTS, RSG) +NKQ = (HMB, JVX) +PRL = (FNF, VXB) +CMN = (MLG, HJM) +JQL = (NKQ, CNV) +QSZ = (CHQ, SFC) +HLR = (MHV, SNF) +RDL = (TBG, GVL) +GVM = (KDC, GFT) +KTV = (CKK, VBK) +SLC = (JKP, FND) +QHL = (MRF, RXX) +KKN = (MPL, MMT) +TNV = (HKP, GTX) +QMJ = (TVG, JCF) +BSJ = (NFV, FST) +BNJ = (NBH, KBX) +XXQ = (GCD, CMQ) +TGQ = (NKK, MRC) +SVH = (NFC, NFM) +LQB = (FRG, JKS) +GNF = (HRV, PTT) +PFV = (CVX, XJT) +JTK = (DLJ, DLJ) +KSP = (LVP, GVM) +PFD = (TBR, QDT) +MLT = (KSQ, KKJ) +GVF = (HFK, GLB) +JLS = (PPX, SVK) +TBK = (CMQ, GCD) +LJB = (QHJ, MFT) +KSQ = (PST, TQP) +SXC = (PHX, TRP) +TTB = (NRP, KMS) +VBX = (MHV, SNF) +CXV = (PNR, HTT) +XCT = (NFS, QGB) +JBD = (KRP, SVH) +JDX = (HRS, VXC) +BNH = (TJQ, SSC) +HQD = (RBN, QHP) +RXX = (NKP, JKG) +NTC = (NND, PNP) +QTF = (TVQ, MHR) +JND = (FCV, SBH) +RDS = (MQB, GCN) +FDL = (FLG, VHN) +TGJ = (SFL, PHQ) +KBX = (GQB, LVX) +GQR = (TMD, KQH) +LMS = (JBD, GSM) +VPJ = (SMJ, XCT) +LVQ = (HXL, VNK) +GDK = (QBV, FKF) +KCD = (PXM, THR) +JGG = (GCV, HDH) +NFP = (BRK, GLT) +SFV = (TBK, XXQ) +KJK = (QKN, XPD) +CVX = (SBX, QKJ) +GCG = (QJF, MDQ) +FNB = (VFV, VPQ) +CBV = (STX, MBQ) +PNH = (QPG, KXN) +HFC = (GSJ, RDT) +GHF = (FLN, RJF) +CKK = (BRV, DKG) +LFN = (QKQ, QSK) +MNH = (VKF, RQM) +MMP = (GJX, JGH) +HVB = (SSG, TNR) +TMD = (BSJ, VBC) +QTS = (NRQ, XDC) +TVQ = (PTN, HVB) +HTT = (QQV, NCJ) +PQM = (KJQ, THS) +XJT = (QKJ, SBX) +PST = (QGL, DMD) +XXT = (MBD, KQV) +PCL = (QJP, FXX) +MJC = (VPK, VNC) +QPV = (JLS, TND) +JLJ = (PQM, XSN) +BKF = (TVG, JCF) +SFT = (FRQ, MQV) +XGJ = (HXL, HXL) +JSF = (KKJ, KSQ) +RMN = (XCT, SMJ) +RPV = (TBD, DKP) +XLT = (CKM, XVL) +DJB = (CMN, XNQ) +KCK = (GVB, RMS) +LLT = (VFV, VPQ) +CVS = (MHR, TVQ) +NBS = (VBK, CKK) +LJQ = (DMR, FRX) +HKS = (TGM, RHV) +HTC = (BFR, RFX) +LDL = (VMD, SSP) +QRV = (HXV, DVF) +NST = (TBG, GVL) +GQB = (JSF, MLT) +KJT = (MBD, KQV) +GSJ = (SVQ, JTT) +FDX = (TVB, GXP) +SSP = (XFM, DFD) +FRQ = (LDK, HBD) +JLR = (HTD, SVP) +HNS = (SPR, TCR) +MCZ = (SGM, CGR) +GCV = (VPS, MJH) +MDQ = (JJC, JXL) +RKG = (NHX, CRT) +TMT = (NND, PNP) +SFC = (KSB, CXF) +CQK = (SKS, GPP) +FND = (LML, QDS) +HVH = (HBN, SVN) +CNV = (HMB, JVX) +CMQ = (CXS, PCC) +NLQ = (JTR, MCM) +GDC = (RMQ, RMQ) +PHX = (GVD, GVD) +NKP = (HXJ, MGF) +RRG = (XXQ, TBK) +TFP = (BGQ, FBP) +GXX = (LJB, MDJ) \ No newline at end of file diff --git a/d08/run1.py b/d08/run1.py new file mode 100644 index 0000000..a510e99 --- /dev/null +++ b/d08/run1.py @@ -0,0 +1,26 @@ +import sys +from itertools import cycle + +L = sys.stdin.read().splitlines() +N = L[2:] + +M = [] +for x in N: + (a, b) = x.split(" = ") + c = b.split(", ") + M.append( (a, c[0].replace("(", ""), c[1].replace(")", "")) ) + +S = 0 +tri = "AAA" + +for i in cycle(L[0]) : + for a, b, c in M: + if a == tri: + #print(a, b, c) + tri = b if i == "L" else c + break + S+=1 + if tri == "ZZZ" : break + +print(S) + diff --git a/d08/run2.py b/d08/run2.py new file mode 100644 index 0000000..0223415 --- /dev/null +++ b/d08/run2.py @@ -0,0 +1,41 @@ +import sys +from itertools import cycle + +L = sys.stdin.read().splitlines() +N = L[2:] + +M = [] +for x in N: + (a, b) = x.split(" = ") + c = b.split(", ") + M.append( (a, c[0].replace("(", ""), c[1].replace(")", "")) ) + +S = 0 +tri = [] +for a, b, c in M: + for d, e, f in a.split(): + if f == "A" : tri.append(a) + +#print(tri) + +for i in cycle(L[0]) : + for idx, t in enumerate(tri): + for a, b, c in M: + if a == t: + #print(t, a, b, c) + tri[idx] = b if i == "L" else c + break + S+=1 + #print(tri) + fin = True + for a in tri: + for d, e, f in a.split(): + #print(a, f) + if f == "Z": + fin = True and fin + else: + fin = False + if fin: break + +print(S) + diff --git a/d09/input.txt b/d09/input.txt new file mode 100644 index 0000000..054fe96 --- /dev/null +++ b/d09/input.txt @@ -0,0 +1,200 @@ +12 20 25 35 64 137 305 670 1420 2874 5537 10165 17840 30055 48809 76712 117100 174160 253065 360119 502912 +4 13 35 72 138 283 626 1388 2906 5608 9961 16503 26276 42338 73621 143357 305888 678423 1499107 3231106 6746590 +-6 -9 -13 -18 -24 -31 -39 -48 -58 -69 -81 -94 -108 -123 -139 -156 -174 -193 -213 -234 -256 +18 36 73 131 225 404 773 1526 3020 5945 11675 22920 44839 86819 165175 307081 556102 979762 1679653 2804665 4567997 +17 31 46 67 109 199 385 775 1650 3729 8722 20406 46627 102917 218904 449526 894459 1731467 3273058 6061549 11026301 +2 6 26 71 146 246 345 385 290 59 36 1541 8237 29022 84081 217384 522055 1190948 2615907 5580283 11629317 +12 21 26 32 65 187 511 1216 2562 4905 8712 14576 23231 35567 52645 75712 106216 145821 196422 260160 339437 +19 40 72 106 141 209 426 1095 2907 7321 17258 38315 80781 162797 315036 587344 1058110 1848293 3145159 5247819 8660620 +13 13 23 70 203 501 1092 2208 4327 8488 16904 34050 68520 136271 266715 515104 988950 1904948 3709702 7328655 14662978 +24 39 54 69 84 99 114 129 144 159 174 189 204 219 234 249 264 279 294 309 324 +7 23 56 125 258 487 856 1466 2597 4971 10261 22027 47409 100206 206569 415728 820556 1597628 3086552 5949705 11498367 +3 4 13 37 81 153 291 637 1607 4241 10866 26285 59856 129126 266300 530120 1028523 1963486 3722239 7065077 13510923 +14 24 57 142 319 639 1167 1988 3216 5006 7569 11190 16249 23245 32823 45804 63218 86340 116729 156270 207219 +0 3 18 73 223 574 1330 2878 5932 11776 22703 42884 80178 149892 282329 537277 1030620 1981333 3791768 7181107 13402261 +1 2 7 22 71 206 514 1121 2193 3934 6581 10396 15655 22634 31592 42751 56273 72234 90595 111170 133591 +10 23 53 118 259 555 1140 2226 4144 7426 12968 22337 38311 65782 113288 195931 341930 608937 1125228 2190007 4505341 +8 24 59 130 257 463 774 1219 1830 2642 3693 5024 6679 8705 11152 14073 17524 21564 26255 31662 37853 +-5 -1 24 79 168 290 439 604 769 913 1010 1029 934 684 233 -470 -1481 -2861 -4676 -6997 -9900 +15 30 63 114 187 312 590 1276 2932 6720 14984 32418 68369 141221 286394 570321 1113889 2130302 3984201 7281214 12999963 +14 33 65 120 219 398 725 1342 2547 4946 9746 19341 38473 76428 150937 294658 565256 1060083 1936163 3435442 5913859 +13 23 49 105 201 338 503 664 765 721 413 -317 -1671 -3900 -7309 -12262 -19187 -28581 -41015 -57139 -77687 +17 32 46 59 69 68 32 -100 -463 -1324 -3166 -6803 -13531 -25320 -45052 -76810 -126223 -200872 -310762 -468865 -691739 +14 17 25 48 110 259 586 1269 2665 5480 11054 21805 41883 78092 141145 247324 420624 695467 1120079 1760630 2706244 +14 8 9 30 85 189 358 609 960 1430 2039 2808 3759 4915 6300 7939 9858 12084 14645 17570 20889 +16 43 85 156 281 496 848 1395 2206 3361 4951 7078 9855 13406 17866 23381 30108 38215 47881 59296 72661 +19 44 91 172 296 466 677 924 1251 1918 3844 9613 25529 65528 158335 360406 779575 1619184 3262021 6431310 12498130 +0 4 12 44 135 335 709 1337 2314 3750 5770 8514 12137 16809 22715 30055 39044 49912 62904 78280 96315 +16 24 46 91 161 248 338 441 691 1595 4568 13006 34383 84308 194283 426251 899158 1835982 3644382 7050745 13316497 +7 29 70 137 240 394 619 949 1478 2503 4891 10937 26256 63759 151635 348678 772493 1649381 3399400 6776661 13093860 +4 4 5 13 34 74 139 235 368 544 769 1049 1390 1798 2279 2839 3484 4220 5053 5989 7034 +4 -4 -7 8 59 169 365 671 1095 1624 2264 3194 5144 10157 22954 53189 118958 252012 505219 962924 1754969 +26 42 74 139 263 487 877 1543 2672 4587 7863 13560 23658 41777 74239 131622 231718 407726 733983 1402568 2931267 +11 33 70 131 245 486 1027 2238 4843 10151 20376 39061 71621 126020 213597 350056 556635 861469 1301162 1922583 2784901 +23 36 60 110 212 411 788 1488 2763 5049 9135 16554 30434 57184 109535 211570 406399 766978 1410118 2512830 4328616 +9 21 53 112 202 321 466 654 967 1629 3123 6356 12880 25177 47016 83890 143541 236581 377217 584088 881222 +1 12 44 109 239 501 1018 1996 3753 6743 11566 18954 29723 44682 64492 89471 119345 152950 187896 220211 243991 +5 8 15 37 102 271 668 1537 3347 6972 13982 27113 51102 94431 173443 322385 617316 1230502 2548499 5417988 11639807 +22 32 42 52 62 72 82 92 102 112 122 132 142 152 162 172 182 192 202 212 222 +26 52 91 142 204 276 357 446 542 644 751 862 976 1092 1209 1326 1442 1556 1667 1774 1876 +24 49 87 138 202 279 369 472 588 717 859 1014 1182 1363 1557 1764 1984 2217 2463 2722 2994 +9 19 42 78 127 189 264 352 453 567 694 834 987 1153 1332 1524 1729 1947 2178 2422 2679 +-3 -2 3 24 99 302 758 1676 3415 6612 12449 23248 43805 84286 166263 334878 682850 1397511 2853324 5795757 11710724 +4 16 41 95 214 468 975 1915 3544 6208 10357 16559 25514 38068 55227 78171 108268 147088 196417 258271 334910 +11 15 29 64 141 299 617 1259 2547 5059 9732 17919 31299 51465 78912 111010 138371 138799 67743 -156150 -672167 +5 1 3 18 62 174 431 964 1975 3755 6703 11346 18360 28592 43083 63092 90121 125941 172619 232546 308466 +26 51 99 184 339 632 1182 2174 3872 6638 10991 17798 28811 48009 84666 159878 319614 659405 1368755 2807428 5631043 +15 31 66 141 300 634 1325 2728 5517 10935 21220 40345 75348 138842 254046 465448 862165 1629328 3158970 6281548 12730658 +15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195 205 215 +13 28 56 103 181 308 508 811 1253 1876 2728 3863 5341 7228 9596 12523 16093 20396 25528 31591 38693 +6 14 37 87 177 324 552 895 1400 2130 3167 4615 6603 9288 12858 17535 23578 31286 41001 53111 68053 +7 8 24 73 191 441 920 1764 3151 5302 8480 12987 19159 27359 37968 51374 67959 88084 112072 140189 172623 +-2 -2 12 49 123 269 565 1156 2284 4356 8142 15299 29577 59291 121951 252342 515850 1029450 1993520 3738533 6791719 +4 18 57 143 320 671 1342 2569 4699 8191 13578 21366 31841 44750 58817 71050 75790 63448 18871 -80727 -268338 +20 38 71 128 214 335 513 809 1360 2467 4852 10383 23936 57774 141126 339947 795762 1798994 3922635 8258484 16823056 +8 23 43 72 128 263 609 1478 3558 8273 18421 39274 80432 158922 304459 568717 1042388 1887535 3399479 6123936 11073736 +-2 11 49 137 313 643 1251 2364 4372 7903 13913 23791 39479 63607 99643 152058 226506 330019 471217 660533 910453 +20 31 52 97 178 300 456 622 752 773 580 31 -1058 -2918 -5832 -10140 -16244 -24613 -35788 -50387 -69110 +-5 3 17 38 76 154 313 628 1253 2518 5099 10262 20122 37721 66459 107930 156415 187029 132637 -158066 -992728 +8 8 4 -5 -7 36 201 617 1478 3056 5714 9919 16255 25436 38319 55917 79412 110168 149744 199907 262645 +10 31 59 95 157 308 702 1659 3795 8256 17136 34198 66064 124095 227245 406244 709544 1211549 2023745 3309449 5303007 +25 52 96 157 230 305 367 396 367 250 10 -393 -1004 -1873 -3055 -4610 -6603 -9104 -12188 -15935 -20430 +18 37 77 154 307 616 1230 2412 4621 8671 16030 29344 53288 95854 170181 297010 507804 848505 1383803 2201662 3417681 +9 20 38 68 119 223 484 1169 2848 6589 14224 28739 54945 100848 180737 322294 582607 1082858 2080310 4111590 8267015 +16 18 33 83 206 461 946 1857 3630 7218 14557 29273 57696 110321 204066 366139 641204 1105050 1890401 3234215 5561242 +14 39 80 138 211 310 503 1012 2395 5849 13675 29974 61745 120819 227613 418689 761752 1384239 2525270 4625678 8477307 +19 45 82 127 174 220 274 368 586 1153 2671 6688 17013 42674 104354 247812 570611 1273115 2752498 5772143 11763838 +28 38 42 49 77 148 287 540 1031 2078 4381 9279 19046 37156 68392 118602 193814 298310 431124 580269 713811 +11 21 27 29 29 29 33 66 233 867 2865 8396 22316 54917 127224 281225 599691 1244513 2530267 5063511 10002115 +12 24 40 58 72 67 23 -54 -55 377 2098 6907 18400 43773 97860 212323 456296 981519 2117896 4569227 9801250 +24 32 39 42 29 -11 -65 -47 306 1640 5357 14241 33467 72245 146671 285119 539198 1006862 1881469 3554582 6826371 +0 10 24 38 55 91 181 385 794 1536 2782 4752 7721 12025 18067 26323 37348 51782 70356 93898 123339 +10 8 6 4 2 0 -2 -4 -6 -8 -10 -12 -14 -16 -18 -20 -22 -24 -26 -28 -30 +23 36 57 99 187 369 743 1519 3140 6491 13242 26420 51424 97971 184086 344653 650095 1247110 2446146 4905196 10007393 +6 3 1 0 0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 +3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 +27 44 63 84 107 132 159 188 219 252 287 324 363 404 447 492 539 588 639 692 747 +-1 -7 1 47 173 448 984 1975 3790 7182 13743 26886 53965 110835 231521 488214 1031309 2166751 4500097 9195505 18426041 +5 17 35 67 143 330 753 1622 3265 6167 11015 18749 30619 48248 73701 109560 159005 225901 314891 431495 582215 +-6 -2 7 21 40 64 93 127 166 210 259 313 372 436 505 579 658 742 831 925 1024 +5 0 -4 -3 7 30 70 131 217 332 480 665 891 1162 1482 1855 2285 2776 3332 3957 4655 +-2 9 35 94 215 440 844 1582 2973 5640 10750 20449 38679 72726 136138 254178 473924 882791 1642073 3046724 5629899 +10 14 30 70 158 349 763 1655 3561 7584 15905 32613 64946 125058 232597 419003 736198 1276697 2222168 3959477 7350468 +26 35 42 44 33 -4 -85 -233 -476 -847 -1384 -2130 -3133 -4446 -6127 -8239 -10850 -14033 -17866 -22432 -27819 +8 4 13 52 139 289 508 786 1087 1337 1434 1368 1675 4707 17679 59383 174380 462612 1141265 2674334 6042821 +10 23 36 49 62 75 88 101 114 127 140 153 166 179 192 205 218 231 244 257 270 +5 7 9 13 27 82 254 695 1695 3828 8282 17539 36659 75535 152627 300855 576537 1072501 1936783 3398649 5804051 +4 12 35 82 161 278 436 634 866 1120 1377 1610 1783 1850 1754 1426 784 -268 -1841 -4062 -7075 +-6 -8 -10 -12 -14 -16 -18 -20 -22 -24 -26 -28 -30 -32 -34 -36 -38 -40 -42 -44 -46 +13 22 42 92 218 505 1089 2169 4019 7000 11572 18306 27896 41171 59107 82839 113673 153098 202798 264664 340806 +16 13 21 55 130 261 463 751 1140 1645 2281 3063 4006 5125 6435 7951 9688 11661 13885 16375 19146 +18 27 47 88 160 273 437 662 958 1335 1803 2372 3052 3853 4785 5858 7082 8467 10023 11760 13688 +7 6 17 58 155 342 661 1162 1903 2950 4377 6266 8707 11798 15645 20362 26071 32902 40993 50490 61547 +11 13 24 50 109 246 543 1125 2175 3985 7097 12658 23281 45058 92042 195689 423683 915597 1947414 4043610 8164997 +6 0 5 31 87 200 455 1071 2540 5886 13167 28475 59942 123730 251825 506902 1009910 1989788 3870441 7418499 13987325 +-2 8 27 55 92 138 193 257 330 412 503 603 712 830 957 1093 1238 1392 1555 1727 1908 +13 22 31 40 49 58 67 76 85 94 103 112 121 130 139 148 157 166 175 184 193 +14 35 68 128 246 470 871 1568 2805 5143 9869 19770 40471 82590 165018 319686 598232 1081027 1889058 3199196 5263396 +15 24 35 58 111 227 481 1046 2297 5016 10835 23231 49728 106580 228292 486215 1023782 2122091 4321254 8645623 17024708 +12 19 40 83 160 292 519 913 1602 2837 5172 9879 19786 40806 84519 172277 341424 654359 1211320 2167931 3758732 +18 36 68 124 214 348 536 788 1114 1524 2028 2636 3358 4204 5184 6308 7586 9028 10644 12444 14438 +12 20 33 45 47 24 -54 -236 -556 -887 -527 2807 15236 51518 144801 365619 857408 1900374 4022237 8183901 16081297 +11 22 33 49 89 203 511 1293 3174 7478 16893 36733 77363 158858 319822 633666 1237753 2383938 4523501 8445701 15497657 +11 27 54 110 220 428 835 1670 3410 6992 14206 28422 55898 108100 205914 387755 726239 1363956 2591066 5011451 9889470 +25 33 54 116 273 627 1364 2810 5519 10416 19034 33905 59191 101672 172244 288121 475981 776347 1249550 1983682 3105013 +4 5 10 23 64 183 481 1157 2623 5768 12514 26902 57092 118886 241719 478527 921458 1725895 3145362 5578917 9629452 +13 18 25 38 72 159 357 772 1610 3302 6805 14297 30695 66820 145791 315686 674243 1416334 2923593 5930084 11821362 +9 22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269 +9 32 76 153 275 454 702 1031 1453 1980 2624 3397 4311 5378 6610 8019 9617 11416 13428 15665 18139 +20 31 45 59 80 140 311 720 1564 3125 5785 10041 16520 25994 39395 57830 82596 115195 157349 211015 278400 +13 34 81 180 383 779 1505 2757 4801 7984 12745 19626 29283 42497 60185 83411 113397 151534 199393 258736 331527 +11 5 -4 -6 24 128 377 921 2123 4846 10990 24409 52376 107807 212503 401722 730451 1281811 2178096 3595020 5779824 +18 33 65 129 254 496 951 1774 3217 5699 9911 16936 28325 46012 71871 106613 147588 184893 194989 130795 -93048 +8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 +22 27 35 57 123 295 675 1408 2681 4714 7734 11938 17521 25028 36693 60269 118556 271189 661633 1614015 3824955 +-5 -5 -2 13 74 258 712 1704 3727 7703 15360 29910 57292 108555 204579 385428 728331 1380599 2616414 4928519 9165614 +6 18 41 74 113 150 183 257 568 1674 4869 12788 30323 65942 133515 254763 462458 804514 1349121 2191086 3459557 +12 32 70 144 289 562 1047 1860 3154 5124 8012 12112 17775 25414 35509 48612 65352 86440 112674 144944 184237 +4 7 26 89 233 513 1028 1982 3817 7474 14867 29724 59116 116351 226576 437541 839650 1601693 3031396 5672739 10454035 +7 11 21 37 59 87 121 161 207 259 317 381 451 527 609 697 791 891 997 1109 1227 +-7 2 36 105 233 474 929 1764 3229 5678 9590 15591 24477 37238 55083 79466 112113 155050 210632 281573 370977 +19 22 21 20 27 60 160 405 916 1850 3392 5794 9570 16048 28609 55115 112249 232766 476991 950304 1828829 +6 5 0 -6 0 51 230 744 2075 5250 12281 26835 55203 107646 200205 357071 613620 1020227 1646982 2589440 3975546 +12 37 74 122 181 253 357 565 1076 2385 5694 13877 33581 79455 182089 402060 853572 1742597 3426234 6502268 11940701 +4 10 11 11 21 59 153 358 813 1892 4560 11162 27101 64273 147816 328805 707113 1470932 2962722 5786321 10978172 +2 -4 -14 -18 12 132 452 1185 2736 5872 12053 24061 47144 91002 173091 323920 595278 1072668 1893660 3274424 5547388 +23 41 67 100 149 247 471 965 1969 3883 7451 14250 27840 56227 116812 245915 516543 1070717 2176959 4330256 8422019 +-8 -1 26 83 188 387 799 1712 3775 8367 18292 39066 81247 164533 324739 625287 1175530 2159111 3876662 6808509 11704702 +16 38 75 146 286 563 1110 2172 4168 7768 13985 24282 40694 65965 103700 158532 236304 344266 491287 688082 947454 +3 13 24 47 116 313 808 1918 4203 8640 16944 32132 59444 107734 191412 332941 565755 937247 1511160 2368277 3603724 +2 16 51 124 266 545 1099 2180 4216 7907 14378 25406 43703 73161 118865 186656 282365 412201 589508 861747 1389619 +5 18 39 68 105 150 203 264 333 410 495 588 689 798 915 1040 1173 1314 1463 1620 1785 +1 12 50 141 322 641 1157 1940 3071 4642 6756 9527 13080 17551 23087 29846 37997 47720 59206 72657 88286 +4 16 50 124 269 540 1042 1983 3766 7129 13340 24457 43668 75726 127504 208826 334362 529529 849438 1435283 2668205 +15 35 66 111 173 255 360 491 651 843 1070 1335 1641 1991 2388 2835 3335 3891 4506 5183 5925 +13 21 53 130 286 580 1111 2043 3651 6395 11024 18730 31461 52741 89851 159160 297973 588757 1205355 2496214 5127228 +8 8 25 87 239 540 1055 1842 2934 4316 5897 7477 8709 9056 7743 3704 -4476 -18624 -41047 -74605 -122789 +-7 -9 -1 35 138 374 851 1761 3471 6696 12810 24386 46095 86118 158201 284361 497961 846321 1391101 2203233 3347012 +6 25 62 140 292 567 1043 1842 3136 5122 7923 11332 14243 13482 1523 -37788 -136855 -357062 -808189 -1674217 -3239703 +19 45 92 165 260 365 468 573 730 1101 2119 4861 11861 28749 67333 151061 324229 666861 1317902 2510261 4622346 +-5 -2 2 2 -11 -53 -145 -295 -444 -333 813 5032 17356 49671 128921 313695 726202 1611289 3441257 7095887 14162940 +9 10 21 64 187 481 1104 2321 4569 8551 15353 26563 44351 71444 110900 165550 236937 323536 417989 503034 545747 +13 11 9 7 5 3 1 -1 -3 -5 -7 -9 -11 -13 -15 -17 -19 -21 -23 -25 -27 +20 27 27 32 64 150 317 587 972 1469 2055 2682 3272 3712 3849 3485 2372 207 -3373 -8796 -16560 +8 12 17 29 59 128 272 546 1040 1949 3795 8014 18355 43992 106087 251024 576095 1277813 2740616 5697006 11513670 +13 23 39 67 110 168 238 314 387 445 473 453 364 182 -120 -572 -1207 -2061 -3173 -4585 -6342 +15 30 54 93 161 295 578 1180 2445 5079 10538 21785 44698 90622 181037 356507 695002 1351447 2644938 5249563 10601080 +15 30 49 72 99 130 165 204 247 294 345 400 459 522 589 660 735 814 897 984 1075 +0 2 10 36 96 215 444 911 1953 4421 10323 24086 54908 121006 257211 528674 1056138 2063596 3969400 7560556 14322468 +19 48 92 151 225 314 418 537 671 820 984 1163 1357 1566 1790 2029 2283 2552 2836 3135 3449 +19 29 38 54 96 194 391 747 1345 2299 3764 5948 9126 13656 19997 28729 40575 56425 77362 104690 139964 +-10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 -95 -100 -105 -110 +20 35 62 113 200 345 611 1160 2344 4842 9886 19707 38540 74949 146995 293023 592748 1206017 2440198 4861569 9471136 +15 18 23 39 98 273 696 1582 3277 6368 11928 22026 40718 75857 142225 266705 496483 911606 1643629 2902569 5014954 +0 -1 8 38 103 226 448 850 1612 3147 6362 13112 26927 54106 105286 197608 357616 625039 1057620 1737170 2777039 +9 16 34 87 224 535 1183 2463 4899 9399 17522 31996 57798 104412 190375 351970 659005 1242114 2338026 4361877 8019004 +4 0 6 35 101 219 405 676 1050 1546 2184 2985 3971 5165 6591 8274 10240 12516 15130 18111 21489 +10 27 60 117 212 385 745 1542 3286 6958 14400 29028 57084 109730 206389 379855 683826 1203661 2071324 3485655 5739300 +5 7 22 60 131 245 412 642 945 1331 1810 2392 3087 3905 4856 5950 7197 8607 10190 11956 13915 +18 30 43 52 47 21 -14 9 296 1369 4407 11874 28661 64160 136010 276761 545454 1047184 1965179 3611880 6508043 +22 46 92 168 282 442 656 932 1278 1702 2212 2816 3522 4338 5272 6332 7526 8862 10348 11992 13802 +8 13 20 44 110 253 518 960 1644 2645 4048 5948 8450 11669 15730 20768 26928 34365 43244 53740 66038 +-3 1 10 24 43 67 96 130 169 213 262 316 375 439 508 582 661 745 834 928 1027 +13 39 85 169 321 590 1056 1847 3161 5293 8667 13873 21709 33228 49790 73119 105365 149171 207745 284937 385321 +5 14 36 83 195 464 1065 2288 4561 8450 14618 23721 36215 52044 70175 87942 100157 97942 67232 -13105 -173589 +15 19 30 62 145 335 724 1453 2731 4863 8290 13644 21821 34075 52136 78355 115879 168859 242694 344314 482505 +2 11 44 125 296 629 1253 2418 4645 9063 18123 37017 76329 156717 316782 625734 1203028 2247827 4081966 7211053 12409462 +11 35 81 170 335 621 1094 1881 3275 5959 11445 22918 46892 96576 198907 409378 843048 1738176 3583686 7367983 15052310 +22 31 41 57 91 170 363 840 1989 4657 10673 23996 53165 116277 250554 529758 1094371 2201726 4306420 8185830 15132182 +-1 7 15 33 92 259 668 1582 3518 7495 15514 31474 62920 124397 243884 474989 919525 1767999 3369645 6349039 11792984 +9 6 4 22 93 267 617 1248 2307 3990 6549 10333 15971 24949 41114 74263 148526 322161 734795 1719395 4061142 +17 28 42 71 134 259 488 894 1635 3095 6196 13008 27836 59024 121786 242453 464613 857718 1528838 2638357 4420530 +20 33 55 105 212 427 857 1727 3474 6875 13209 24451 43494 74393 122623 195341 301640 452781 662387 946581 1324048 +-2 -6 -6 16 84 227 476 858 1392 2102 3076 4617 7550 13765 27086 54555 108202 207330 381270 672446 1139424 +11 28 58 105 175 280 442 697 1099 1724 2674 4081 6111 8968 12898 18193 25195 34300 45962 60697 79087 +6 6 4 10 50 174 461 1020 1989 3537 5877 9301 14251 21443 32064 48065 72576 110472 169122 259356 396688 +9 33 72 143 291 617 1321 2757 5491 10347 18432 31172 50503 79595 124911 201104 341341 617245 1174920 2296653 4502083 +1 -3 -6 6 57 181 422 834 1481 2437 3786 5622 8049 11181 15142 20066 26097 33389 42106 52422 64521 +20 45 92 183 353 648 1120 1828 2877 4577 7895 15519 34068 78280 178405 392536 826242 1662637 3206942 5950687 10661971 +9 20 49 105 197 326 471 562 423 -334 -2454 -7125 -15718 -28520 -41047 -34951 42817 325984 1127851 3148993 7902215 +4 13 22 31 40 49 58 67 76 85 94 103 112 121 130 139 148 157 166 175 184 +3 18 39 62 84 110 166 321 721 1638 3537 7164 13658 24690 42632 70759 113487 176650 267819 396666 575376 +23 33 49 79 132 217 335 464 539 441 41 -595 -643 2719 16711 57254 156427 375417 827593 1720891 3437190 +7 24 50 85 142 258 514 1069 2207 4385 8261 14704 24907 41055 68751 123960 250328 558763 1312713 3104284 7206249 +-7 -1 21 79 208 466 962 1919 3787 7421 14339 27075 49642 88120 151384 251987 407213 640315 981953 1471847 2160660 +-7 -4 0 6 17 40 94 224 527 1208 2702 5922 12723 26708 54544 108004 207005 383972 689924 1202750 2038221 +18 29 55 112 225 446 901 1884 4033 8657 18343 38083 77387 154338 303618 592833 1156238 2264577 4468621 8890194 17802535 +13 27 43 70 138 306 667 1350 2519 4369 7119 11002 16252 23088 31695 42202 54657 68999 85027 102366 120430 +1 14 48 125 277 551 1022 1814 3129 5284 8756 14235 22685 35413 54146 81116 119153 171786 243352 339113 465381 +-1 8 23 44 71 104 143 188 239 296 359 428 503 584 671 764 863 968 1079 1196 1319 +19 43 77 127 215 395 790 1669 3597 7724 16343 33959 69302 139053 274682 535059 1030155 1966898 3740787 7123974 13657889 +18 45 91 164 275 438 677 1048 1684 2871 5163 9544 17645 32024 56517 96668 160246 257857 403659 616188 919303 +6 22 59 136 291 594 1160 2162 3844 6534 10657 16748 25465 37602 54102 76070 104786 141718 188535 247120 319583 +23 37 65 118 212 377 687 1329 2735 5816 12367 25768 52224 103069 199356 381630 731614 1420871 2818778 5726452 11868843 +13 24 32 38 55 126 345 876 1970 3996 7534 13631 24400 44252 82197 155837 297907 566504 1060484 1941908 3467885 +9 11 8 7 38 173 559 1479 3462 7483 15333 30296 58341 110127 204263 372559 668647 1182699 2067602 3586753 6201896 +18 44 92 182 354 678 1272 2352 4352 8165 15568 29905 57112 107177 196136 348713 601718 1008322 1643332 2609592 4045638 +-6 -2 12 37 85 189 422 952 2183 5066 11718 26576 58470 124296 255549 510096 993680 1899506 3581116 6685619 12394363 +10 18 40 85 167 323 635 1262 2502 4919 9598 18672 36477 72155 145400 298517 620281 1290667 2661351 5397302 10725062 +8 7 10 36 112 276 581 1096 1900 3059 4565 6212 7427 7257 5226 4991 25352 128511 485816 1520388 4200090 +6 1 -4 -9 -14 -19 -24 -29 -34 -39 -44 -49 -54 -59 -64 -69 -74 -79 -84 -89 -94 \ No newline at end of file diff --git a/d09/run1_p.py b/d09/run1_p.py new file mode 100644 index 0000000..8bb1533 --- /dev/null +++ b/d09/run1_p.py @@ -0,0 +1,28 @@ +import sys + +L = sys.stdin.read().splitlines() +S = 0 + +l = [0, 3, 6, 9, 12, 15] +#l = [1, 3, 6, 10, 15, 21] +#l = [10, 13, 16, 21, 30, 45] +#l = [-6, -9, -13, -18] +#l = [1, 12, 44, 109, 239, 501, 1018, 1996, 3753, 6743, 11566, 18954, 29723, 44682, 64492, 89471, 119345, 152950, 187896, 220211, 243991] +m = list(l) +latest=[] +latest.append(m[len(m)-1]) +print(m) + +while not all(v == 0 for v in l): + m = [] + for i in range(0,len(l)-1): + m.append(l[i+1] - l[i]) + + latest.append(m[len(m)-1]) + print(m) + l = list(m) + +S+=sum(latest) +#print(sum(latest)) + +print(S) \ No newline at end of file diff --git a/d09/run1_s.py b/d09/run1_s.py new file mode 100644 index 0000000..1e373bd --- /dev/null +++ b/d09/run1_s.py @@ -0,0 +1,13 @@ +import sys +L = [list(map(int,l.split(' '))) for l in sys.stdin.read().splitlines()] + +def extrapolate(L): + if all(not a for a in L): + return L+[0] + M = [b-a for a,b in zip(L,L[1:])] + return L+[L[-1]+extrapolate(M)[-1]] + + +for l in L: + print(extrapolate(l)[-1]) +#print(sum(extrapolate(l)[-1] for l in L)) \ No newline at end of file diff --git a/d09/run2.py b/d09/run2.py index 9e45d72..fcf47a4 100644 --- a/d09/run2.py +++ b/d09/run2.py @@ -4,7 +4,6 @@ L = sys.stdin.read().splitlines() S = 0 for report in L: l = [int(r) for r in report.split(' ')] - prem = [l[0]] while not all(v == 0 for v in l): @@ -22,5 +21,4 @@ for report in L: signe *= -1 S+=s - print(S) \ No newline at end of file diff --git a/d09/run2_p.py b/d09/run2_p.py new file mode 100644 index 0000000..fdde15e --- /dev/null +++ b/d09/run2_p.py @@ -0,0 +1,33 @@ +import sys + +L = sys.stdin.read().splitlines() +S = 0 + +l = [0, 3, 6, 9, 12, 15] #-3 +#l = [1, 3, 6, 10, 15, 21] #0 +l = [10, 13, 16, 21, 30, 45] +#l = [-6, -9, -13, -18] +m = list(l) +prem=[] +prem.append(m[0]) +print(m) + +while not all(v == 0 for v in l): + m = [] + for i in range(0,len(l)-1): + m.append(l[i+1] - l[i]) + + prem.append(m[0]) + print(m) + l = list(m) + +s = prem[0] +signe = -1 +for a in prem[1:]: + s+=(a*signe) + signe *= -1 +print(s) +S+=s +#print(sum(prem)) + +print(S) \ No newline at end of file diff --git a/d11/exemple1.txt b/d11/exemple1.txt new file mode 100644 index 0000000..a0bda53 --- /dev/null +++ b/d11/exemple1.txt @@ -0,0 +1,10 @@ +...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#..... \ No newline at end of file diff --git a/d11/input.txt b/d11/input.txt new file mode 100644 index 0000000..124062c --- /dev/null +++ b/d11/input.txt @@ -0,0 +1,140 @@ +..#..........#................................................#............................................................................. +...................................#............................................#..........................#............................#... +......................................................................#.............................#....................................... +........#...................................#..................................................................................#............ +.................#.........#..........#...............#........................................#.................#.......................... +.................................#..............#...................................#....................................................... +#.........................................................................#...............#............................#.................... +.......................#........................................................#........................................................... +.......#.........................................................#................................#.................................#....... +..................#...............................#...........................................................#............................. +...........#.................................#..............#................................................................#...........#.. +..........................#........#........................................................................................................ +.#..................................................................#................#.................#.................................... +......................#.........................#.....................................................................................#..... +..........................................#....................#..............#....................#........................................ +.........................................................................................#.........................#.....#.................. +..............#............................................................................................................................. +..........................................................................................................#........................#........ +.....#.........................#.............#....................#.......#........#........................................#............... +..........................#...........#...............................................................#..................................... +...................#...........................................................................#................#........................... +#............#........................................#................................................................................#.... +......................................................................................................................#.........#........... +........................................#................................................................................................... +...#............#........#...........................................................#...................................................... +.............................................#.............................................................................................. +............#.......#..........................................................................#..................#.....#................... +................................................................................#.........................#....................#.....#...... +.................................................................#.......................................................................... +..........................#...............#.................................................#.................#............................. +#.........#...........................................#............................................#........................................ +.....................#................#................................#.................................................................... +.....................................................................................#.....................#............#................... +............................................................................................................................................ +.............................#..........................................................................................................#... +.................#..................#......#......#............................#......................#..........#...........#.............. +.......#.................#...........................................#...................................................................... +......................................................................................#..................................................... +...#....................................................#......#..................................#......................................... +............#........#.........#..............#.........................#....................................#.............................. +.......................................................................................................#................#.....#............. +..............................................................................................#............................................. +....................................................................................#..............................#......................#. +#.............#.........#..................#.............................................#...........................................#...... +.............................#......#...........#.........#...................#............................................................. +.......#...........................................................................................#.....#.................................. +...................#........................................................................................................#.....#......... +....................................................#..................#.................................................................... +.................................#............................#............................................................................. +.......................#.................................#...........................................................................#...... +........................................#..........................................#............#...............#........................... +.........................................................................................#.................................................. +.............................................#......................#....................................................................... +..........................#...........................................................................#.........................#........... +............................................................................................................................................ +...........#....................................................................#......#.................................................... +....................................................................................................................#......................# +...............#........................#....................................................#.............................................. +.....#.........................................#................#........................................................................... +.......................#.............................................#................................#..................#.........#........ +#.........#.........................................#..........................#........#.......................#........................... +..............................#............................................................................................................. +.....................................#....................................................................#.....................#........... +..............................................................#.............#............................................................... +..#......................................................................................................................................#.. +.................#.........#........................................................#....................................#.................. +................................#.......................#.......................................#........................................... +..........................................#.....#...................................................................#....................... +......#......#.........................................................................................#......................#............. +......................................#..............#...................................................................................... +..................#...........#.................................#........................................................................... +..#.......#............................................................................#...................................................# +......................#..................................#..............#................................................................... +..........................................................................................................................#................. +.................................#.........#....................................................#........................................... +............................................................................................................................................ +....................#...............................................................................#....................................... +.#...................................#..........#........................................................................................... +.......#..............................................................#.................................#................................... +.............................#...........#.....................#.................................#.............................#............ +.......................#....................................................................#...................#......................#.... +.............#.....................#.................#..........................#....................................#...................... +...........................................................................#............#...........#..............................#........ +..........................................................................................................................................#. +.#..............................#........................................................................................................... +.............................................#............#...............................................#................................. +...............#.......#..........................#.................#.......................#...........................#................... +...............................................................................#.................................................#.......... +.........#..............................#..............................................................#......#............................. +............................................................................................................................................ +................................................#........................................#.................................................. +.........................................................................#......................#.....................................#..... +...........#......#..........#......................#......................................................................#................ +..........................................................#...................#.....#.......#.....................#......................... +......................................#..................................................................................................... +........#................................................................................................................................#.. +......................#........................#................#....................................#........#............................. +..#.......................................#.......................................................................................#......... +..............#............................................................................................................................. +.........................................................................#.................................................................. +.........................#..........#........#........................................#..................................................... +.....#..................................................#..................................................................................# +..............................#................................#..............#..............#................#............#................ +........................................................................................................#.............#.........#........... +.#.............#.......................................................#.................................................................... +.......................................#.................................................................................................... +.......................#..........................#.......#................................................................................. +.......#........................................................................#........................................................... +............................#........................................#................................................................#..... +..........................................#..........#........................................................#............................. +..............#..........................................................................#.....#..................................#......... +#........................................................................................................................................... +..................................#................................................................#........................#............... +..................................................................#.........................#...............#..........................#.... +.......................................#...................................#..........#............................#........................ +..................#.....#.....#.............#..........................................................#.................................... +...................................................................................................................................#........ +......................................................#.......................................................#............................. +...........#...............#...................#...............#....................#...............#.................#..................... +.........................................#......................................................................................#........... +...............................#.........................................................#......#.................#.....................#... +..#.................................................#....................................................#...............#.................. +........#.............................#..................................................................................................... +..............#.........#................................................#.................................................................. +..........................................#.....................................#....................#.......................#.............. +............................................................................................................................................ +................................#...............#..........................................................#.....#...............#.......... +..#.......#................................................................................................................................. +........................................................................#...............................................#................... +............................#.................................#.........................#..........#........................................ +....................#.............................#.........................................................................#............... +........................................................#....................................#..........#......#............................ +........#................................................................................................................................... +.........................................................................#..........#....................................................... +............#......................#............#.................................................................#.....................#... +.............................#.....................................................................#........................................ +........................................................................................................................#................... +.......#.........#...........................................................................#.........#......#............................. +........................#.............................#..........#...................................................................#...... +...#.................................#........#................................#.....#.......................................#.............. \ No newline at end of file diff --git a/d11/run1_p.py b/d11/run1_p.py new file mode 100644 index 0000000..0ada1ae --- /dev/null +++ b/d11/run1_p.py @@ -0,0 +1,59 @@ +import sys + +L = sys.stdin.read().splitlines() + +gal = [] + +for line, P in enumerate(L): + for col, p in enumerate(P): + if p != ".": + gal.append([line, col]) + +print(gal) + +# Expansion +lines = [l[0] for l in gal] +cols = [l[1] for l in gal] +#print(lines) + +lines_empty = [] +for line in range(0, len(L)): + if lines.count(line) == 0: + lines_empty.append(line) + +print(lines_empty) + +for line in reversed(lines_empty): + for g in gal: + if g[0] > line: + g[0] +=1 + +print(gal) + +cols_empty = [] +for col in range(0, len(L[0])): + if cols.count(col) == 0: + cols_empty.append(col) + +print(cols_empty) + +for col in reversed(cols_empty): + for g in gal: + if g[1] > col: + g[1] +=1 + +print(gal) + +nb = 0 +S=0 + +for s in range(0, len(gal)): + print("s ", s) + for n in range(1, len(gal)-s): + nb+=1 + print(gal[s], gal[s+n]) + l = (abs(gal[s+n][0] - gal[s][0])) + abs((gal[s+n][1] - gal[s][1])) + print(l) + S+=l + +print(nb, S) \ No newline at end of file