From de5d368eba780fda208a61c44d8bbcca146f0462 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 16 Dec 2018 16:23:51 +0100 Subject: [PATCH] added next day --- 10/input.txt | 350 ++++++++++++++++++++++++++++++++++++++++++++ 10/input_sample.txt | 31 ++++ 10/solve01.py | 49 +++++++ 11/solve01.py | 49 +++++++ 11/solve02.py | 44 ++++++ 5 files changed, 523 insertions(+) create mode 100644 10/input.txt create mode 100644 10/input_sample.txt create mode 100755 10/solve01.py create mode 100755 11/solve01.py create mode 100755 11/solve02.py diff --git a/10/input.txt b/10/input.txt new file mode 100644 index 0000000..4b2520f --- /dev/null +++ b/10/input.txt @@ -0,0 +1,350 @@ +position=<-10166, -20343> velocity=< 1, 2> +position=< 10430, 20752> velocity=<-1, -2> +position=< 51470, -20342> velocity=<-5, 2> +position=<-40983, -10076> velocity=< 4, 1> +position=< 30947, -40894> velocity=<-3, 4> +position=< 20709, 51575> velocity=<-2, -5> +position=< 20704, -40898> velocity=<-2, 4> +position=<-40946, 51577> velocity=< 4, -5> +position=<-30712, 41294> velocity=< 3, -4> +position=<-40939, 41298> velocity=< 4, -4> +position=< 30975, 41295> velocity=<-3, -4> +position=<-30671, -40898> velocity=< 3, 4> +position=< 41249, -40897> velocity=<-4, 4> +position=<-51230, 31026> velocity=< 5, -3> +position=<-20448, 31027> velocity=< 2, -3> +position=< 30978, 31023> velocity=<-3, -3> +position=<-30711, 41298> velocity=< 3, -4> +position=<-10147, -20348> velocity=< 1, 2> +position=< 41244, 51570> velocity=<-4, -5> +position=< 41204, 41300> velocity=<-4, -4> +position=< 30938, 31020> velocity=<-3, -3> +position=<-20397, -40893> velocity=< 2, 4> +position=<-20424, -20347> velocity=< 2, 2> +position=<-30717, 41302> velocity=< 3, -4> +position=<-10174, -40896> velocity=< 1, 4> +position=< 30962, 51573> velocity=<-3, -5> +position=< 41236, 10478> velocity=<-4, -1> +position=<-51254, 51575> velocity=< 5, -5> +position=< 41236, -30621> velocity=<-4, 3> +position=<-10141, 10481> velocity=< 1, -1> +position=<-40991, -20344> velocity=< 4, 2> +position=<-51241, 41294> velocity=< 5, -4> +position=<-30678, -30624> velocity=< 3, 3> +position=<-30672, 31020> velocity=< 3, -3> +position=<-40975, 41300> velocity=< 4, -4> +position=<-30669, 41299> velocity=< 3, -4> +position=< 51491, -30618> velocity=<-5, 3> +position=<-20444, -30616> velocity=< 2, 3> +position=< 30946, 10474> velocity=<-3, -1> +position=< 20704, -51171> velocity=<-2, 5> +position=<-10155, 10477> velocity=< 1, -1> +position=<-51267, 51577> velocity=< 5, -5> +position=<-10129, -20349> velocity=< 1, 2> +position=< 20659, 41298> velocity=<-2, -4> +position=<-20408, -20346> velocity=< 2, 2> +position=<-40951, -40891> velocity=< 4, 4> +position=< 41212, 41302> velocity=<-4, -4> +position=<-51246, 31028> velocity=< 5, -3> +position=< 10390, -20349> velocity=<-1, 2> +position=<-30701, 31025> velocity=< 3, -3> +position=<-51262, 31021> velocity=< 5, -3> +position=< 51518, -30616> velocity=<-5, 3> +position=<-40935, -20344> velocity=< 4, 2> +position=< 10419, -30615> velocity=<-1, 3> +position=< 41196, -30622> velocity=<-4, 3> +position=<-10150, -10075> velocity=< 1, 1> +position=< 10414, 20751> velocity=<-1, -2> +position=<-10153, 20747> velocity=< 1, -2> +position=< 20649, 41294> velocity=<-2, -4> +position=< 10431, -30620> velocity=<-1, 3> +position=<-10172, 51577> velocity=< 1, -5> +position=<-40936, -40894> velocity=< 4, 4> +position=<-20429, 41299> velocity=< 2, -4> +position=< 51514, 51576> velocity=<-5, -5> +position=< 41252, 41302> velocity=<-4, -4> +position=<-40953, -10071> velocity=< 4, 1> +position=< 51480, 10472> velocity=<-5, -1> +position=<-30682, 51575> velocity=< 3, -5> +position=< 10395, 10475> velocity=<-1, -1> +position=< 30978, -20343> velocity=<-3, 2> +position=< 51512, -51172> velocity=<-5, 5> +position=< 30924, 20746> velocity=<-3, -2> +position=< 41216, 20754> velocity=<-4, -2> +position=< 30940, 20749> velocity=<-3, -2> +position=<-51262, 51572> velocity=< 5, -5> +position=<-30661, -20350> velocity=< 3, 2> +position=< 30939, 31021> velocity=<-3, -3> +position=< 51491, 41294> velocity=<-5, -4> +position=<-51270, -30618> velocity=< 5, 3> +position=< 30975, -20342> velocity=<-3, 2> +position=<-40945, -30619> velocity=< 4, 3> +position=< 41222, 20752> velocity=<-4, -2> +position=< 30954, 51574> velocity=<-3, -5> +position=< 51499, -10076> velocity=<-5, 1> +position=< 10406, -40894> velocity=<-1, 4> +position=<-51254, 10473> velocity=< 5, -1> +position=< 41244, -51164> velocity=<-4, 5> +position=< 10411, 51569> velocity=<-1, -5> +position=<-30674, 41296> velocity=< 3, -4> +position=<-20448, -51164> velocity=< 2, 5> +position=<-20432, -30618> velocity=< 2, 3> +position=<-51260, -30620> velocity=< 5, 3> +position=< 10430, 31026> velocity=<-1, -3> +position=<-40940, -20349> velocity=< 4, 2> +position=<-20398, -10076> velocity=< 2, 1> +position=<-40940, 41302> velocity=< 4, -4> +position=< 10379, 20755> velocity=<-1, -2> +position=< 51506, 41294> velocity=<-5, -4> +position=< 51515, 10477> velocity=<-5, -1> +position=<-51235, 51568> velocity=< 5, -5> +position=<-51249, -10073> velocity=< 5, 1> +position=<-10124, -20350> velocity=< 1, 2> +position=< 20691, 10472> velocity=<-2, -1> +position=< 30955, -20350> velocity=<-3, 2> +position=< 20699, 10472> velocity=<-2, -1> +position=<-30673, 31020> velocity=< 3, -3> +position=< 51526, -40894> velocity=<-5, 4> +position=< 41204, -10069> velocity=<-4, 1> +position=<-20429, 31026> velocity=< 2, -3> +position=<-10129, 51576> velocity=< 1, -5> +position=< 30943, -20347> velocity=<-3, 2> +position=<-20395, -30615> velocity=< 2, 3> +position=<-40994, 51568> velocity=< 4, -5> +position=< 10382, -10075> velocity=<-1, 1> +position=< 51473, 51573> velocity=<-5, -5> +position=<-40963, 20746> velocity=< 4, -2> +position=<-20422, -10070> velocity=< 2, 1> +position=< 30954, 31024> velocity=<-3, -3> +position=<-20422, 31023> velocity=< 2, -3> +position=< 41201, 20751> velocity=<-4, -2> +position=< 10382, 10476> velocity=<-1, -1> +position=<-40991, -20343> velocity=< 4, 2> +position=<-20400, -40897> velocity=< 2, 4> +position=<-30702, -51164> velocity=< 3, 5> +position=<-51245, 10477> velocity=< 5, -1> +position=< 10390, 20753> velocity=<-1, -2> +position=<-20439, -51168> velocity=< 2, 5> +position=<-40970, 10475> velocity=< 4, -1> +position=< 51489, -30618> velocity=<-5, 3> +position=<-20387, -40895> velocity=< 2, 4> +position=<-40953, 31029> velocity=< 4, -3> +position=<-30670, -51164> velocity=< 3, 5> +position=< 20669, -30623> velocity=<-2, 3> +position=<-10124, 20755> velocity=< 1, -2> +position=< 30962, 10475> velocity=<-3, -1> +position=<-30665, 41298> velocity=< 3, -4> +position=< 51494, 31029> velocity=<-5, -3> +position=<-20416, -10073> velocity=< 2, 1> +position=< 20672, 20750> velocity=<-2, -2> +position=< 41217, -51170> velocity=<-4, 5> +position=< 41244, -10070> velocity=<-4, 1> +position=< 20704, 20749> velocity=<-2, -2> +position=<-30661, 20747> velocity=< 3, -2> +position=< 41225, 20755> velocity=<-4, -2> +position=<-10126, 31026> velocity=< 1, -3> +position=< 10430, 31026> velocity=<-1, -3> +position=< 20649, 20746> velocity=<-2, -2> +position=< 20676, -40897> velocity=<-2, 4> +position=< 10414, -10075> velocity=<-1, 1> +position=<-20444, -20345> velocity=< 2, 2> +position=< 51482, -51172> velocity=<-5, 5> +position=<-51225, -30617> velocity=< 5, 3> +position=<-40940, 20755> velocity=< 4, -2> +position=<-20405, -51172> velocity=< 2, 5> +position=< 20672, 31026> velocity=<-2, -3> +position=< 51519, -51172> velocity=<-5, 5> +position=< 10407, -51163> velocity=<-1, 5> +position=<-10122, 20746> velocity=< 1, -2> +position=< 51504, 41294> velocity=<-5, -4> +position=<-30703, 51574> velocity=< 3, -5> +position=<-40948, -30617> velocity=< 4, 3> +position=<-10165, 10476> velocity=< 1, -1> +position=<-30674, 41298> velocity=< 3, -4> +position=< 30930, 31020> velocity=<-3, -3> +position=< 10408, 20746> velocity=<-1, -2> +position=<-10158, 41303> velocity=< 1, -4> +position=< 10398, 10479> velocity=<-1, -1> +position=<-51269, 41303> velocity=< 5, -4> +position=< 51490, -20343> velocity=<-5, 2> +position=< 10378, 51568> velocity=<-1, -5> +position=<-51242, -10075> velocity=< 5, 1> +position=< 20683, 20755> velocity=<-2, -2> +position=<-20427, 10473> velocity=< 2, -1> +position=<-30717, -20344> velocity=< 3, 2> +position=<-20436, -10072> velocity=< 2, 1> +position=< 10379, -10070> velocity=<-1, 1> +position=<-20387, 10474> velocity=< 2, -1> +position=<-51270, 51570> velocity=< 5, -5> +position=< 51470, -10072> velocity=<-5, 1> +position=<-30677, -10069> velocity=< 3, 1> +position=< 30954, -30622> velocity=<-3, 3> +position=<-40959, 20754> velocity=< 4, -2> +position=<-51234, 51577> velocity=< 5, -5> +position=<-20446, -20341> velocity=< 2, 2> +position=< 51471, -20341> velocity=<-5, 2> +position=< 30967, -51164> velocity=<-3, 5> +position=<-20430, 31023> velocity=< 2, -3> +position=<-30661, 41302> velocity=< 3, -4> +position=<-51230, 10474> velocity=< 5, -1> +position=<-51258, 41298> velocity=< 5, -4> +position=< 30954, -20348> velocity=<-3, 2> +position=<-20436, -51168> velocity=< 2, 5> +position=<-10153, -20350> velocity=< 1, 2> +position=<-10142, -51171> velocity=< 1, 5> +position=<-10174, 20753> velocity=< 1, -2> +position=<-10118, -30621> velocity=< 1, 3> +position=< 10385, -51168> velocity=<-1, 5> +position=<-30690, -20347> velocity=< 3, 2> +position=< 20683, -51172> velocity=<-2, 5> +position=<-30664, 41298> velocity=< 3, -4> +position=< 30947, 20751> velocity=<-3, -2> +position=< 10407, 41303> velocity=<-1, -4> +position=< 51502, 51575> velocity=<-5, -5> +position=< 51495, -20345> velocity=<-5, 2> +position=<-20424, -51169> velocity=< 2, 5> +position=< 30941, -30619> velocity=<-3, 3> +position=<-51244, 41300> velocity=< 5, -4> +position=<-10153, -20345> velocity=< 1, 2> +position=< 30964, 10472> velocity=<-3, -1> +position=<-10147, -10074> velocity=< 1, 1> +position=<-20444, -40898> velocity=< 2, 4> +position=< 51522, 20754> velocity=<-5, -2> +position=<-10134, -20342> velocity=< 1, 2> +position=<-40953, -10067> velocity=< 4, 1> +position=<-30698, -40893> velocity=< 3, 4> +position=<-20432, -10072> velocity=< 2, 1> +position=< 41228, -20347> velocity=<-4, 2> +position=<-30669, -40893> velocity=< 3, 4> +position=<-10118, 10476> velocity=< 1, -1> +position=<-40978, -10072> velocity=< 4, 1> +position=< 51482, -30624> velocity=<-5, 3> +position=<-40940, -30617> velocity=< 4, 3> +position=<-40969, 51575> velocity=< 4, -5> +position=< 30964, 51577> velocity=<-3, -5> +position=<-30690, -40890> velocity=< 3, 4> +position=< 10382, -10074> velocity=<-1, 1> +position=< 41201, -51171> velocity=<-4, 5> +position=< 41249, -30617> velocity=<-4, 3> +position=< 10374, -10075> velocity=<-1, 1> +position=<-30701, 31024> velocity=< 3, -3> +position=<-20387, -51169> velocity=< 2, 5> +position=<-51262, 31021> velocity=< 5, -3> +position=<-40980, -30622> velocity=< 4, 3> +position=< 51491, -40890> velocity=<-5, 4> +position=< 20709, -10071> velocity=<-2, 1> +position=<-40991, 31021> velocity=< 4, -3> +position=< 30925, -30624> velocity=<-3, 3> +position=< 51488, -20347> velocity=<-5, 2> +position=<-30685, -10068> velocity=< 3, 1> +position=< 10432, 20750> velocity=<-1, -2> +position=< 51486, 20749> velocity=<-5, -2> +position=<-10113, 20746> velocity=< 1, -2> +position=< 41224, 41302> velocity=<-4, -4> +position=<-30711, 31020> velocity=< 3, -3> +position=<-51214, -51167> velocity=< 5, 5> +position=< 10406, 31025> velocity=<-1, -3> +position=< 51519, -10067> velocity=<-5, 1> +position=< 51470, 41299> velocity=<-5, -4> +position=< 41205, -40898> velocity=<-4, 4> +position=< 41212, 41295> velocity=<-4, -4> +position=<-20424, 41296> velocity=< 2, -4> +position=<-30701, -10070> velocity=< 3, 1> +position=< 51494, 20752> velocity=<-5, -2> +position=< 10406, -30620> velocity=<-1, 3> +position=< 51494, 20746> velocity=<-5, -2> +position=< 20704, -40891> velocity=<-2, 4> +position=<-20392, -51164> velocity=< 2, 5> +position=< 10435, -30623> velocity=<-1, 3> +position=< 20672, 41298> velocity=<-2, -4> +position=<-30679, -20350> velocity=< 3, 2> +position=< 30957, 20746> velocity=<-3, -2> +position=< 41247, -20341> velocity=<-4, 2> +position=<-51260, 31024> velocity=< 5, -3> +position=< 41228, -20344> velocity=<-4, 2> +position=< 20704, -10074> velocity=<-2, 1> +position=<-10174, -30620> velocity=< 1, 3> +position=< 20648, 20754> velocity=<-2, -2> +position=< 20693, 10473> velocity=<-2, -1> +position=<-30661, 51569> velocity=< 3, -5> +position=<-40968, 51569> velocity=< 4, -5> +position=< 10379, -51163> velocity=<-1, 5> +position=<-20424, -51166> velocity=< 2, 5> +position=< 10406, -51170> velocity=<-1, 5> +position=<-51222, 41297> velocity=< 5, -4> +position=< 30935, 41294> velocity=<-3, -4> +position=<-40980, 51573> velocity=< 4, -5> +position=<-20396, -20345> velocity=< 2, 2> +position=<-30701, -20343> velocity=< 3, 2> +position=< 41206, 10476> velocity=<-4, -1> +position=< 20653, 10479> velocity=<-2, -1> +position=<-51226, 20754> velocity=< 5, -2> +position=<-30669, 10477> velocity=< 3, -1> +position=<-51262, 10475> velocity=< 5, -1> +position=< 51510, 20749> velocity=<-5, -2> +position=< 51478, -51163> velocity=<-5, 5> +position=<-30706, -20345> velocity=< 3, 2> +position=< 20709, 20755> velocity=<-2, -2> +position=< 30926, -51172> velocity=<-3, 5> +position=<-30721, 10481> velocity=< 3, -1> +position=< 51515, -51167> velocity=<-5, 5> +position=< 51518, 10480> velocity=<-5, -1> +position=< 20676, -10068> velocity=<-2, 1> +position=<-51217, -30618> velocity=< 5, 3> +position=< 41236, 51569> velocity=<-4, -5> +position=< 51518, 10477> velocity=<-5, -1> +position=< 10414, 20747> velocity=<-1, -2> +position=<-51214, 51570> velocity=< 5, -5> +position=< 41241, -30623> velocity=<-4, 3> +position=<-10166, -51164> velocity=< 1, 5> +position=<-40972, -10067> velocity=< 4, 1> +position=<-51214, 51568> velocity=< 5, -5> +position=<-20414, -20341> velocity=< 2, 2> +position=<-30677, 31026> velocity=< 3, -3> +position=< 10422, 31023> velocity=<-1, -3> +position=< 10374, 51571> velocity=<-1, -5> +position=< 10390, -10068> velocity=<-1, 1> +position=<-51209, -20341> velocity=< 5, 2> +position=< 41213, -20348> velocity=<-4, 2> +position=<-10145, -30615> velocity=< 1, 3> +position=< 51511, 51577> velocity=<-5, -5> +position=< 30930, 31027> velocity=<-3, -3> +position=<-20389, 20750> velocity=< 2, -2> +position=< 30971, 20755> velocity=<-3, -2> +position=<-10142, 20751> velocity=< 1, -2> +position=<-20427, -51163> velocity=< 2, 5> +position=<-20387, -30624> velocity=< 2, 3> +position=<-30661, 10479> velocity=< 3, -1> +position=<-30706, -20347> velocity=< 3, 2> +position=<-20387, 41299> velocity=< 2, -4> +position=< 30962, 31026> velocity=<-3, -3> +position=<-51209, -51168> velocity=< 5, 5> +position=< 41201, -51165> velocity=<-4, 5> +position=< 41252, 51573> velocity=<-4, -5> +position=< 30927, -10075> velocity=<-3, 1> +position=<-40962, 10481> velocity=< 4, -1> +position=< 10382, -10067> velocity=<-1, 1> +position=<-30722, 31027> velocity=< 3, -3> +position=<-10126, 20750> velocity=< 1, -2> +position=<-20444, 20754> velocity=< 2, -2> +position=< 20664, 41302> velocity=<-2, -4> +position=<-10154, -51164> velocity=< 1, 5> +position=<-51229, 31020> velocity=< 5, -3> +position=<-40983, 31020> velocity=< 4, -3> +position=<-40970, 10475> velocity=< 4, -1> +position=< 30966, -40893> velocity=<-3, 4> +position=<-30701, -20342> velocity=< 3, 2> +position=< 51507, 10473> velocity=<-5, -1> +position=< 51526, -20341> velocity=<-5, 2> +position=< 20690, -30624> velocity=<-2, 3> +position=<-20440, 31025> velocity=< 2, -3> +position=<-40940, -10075> velocity=< 4, 1> +position=<-51238, 10477> velocity=< 5, -1> +position=< 51518, -10073> velocity=<-5, 1> +position=< 51479, -10072> velocity=<-5, 1> +position=<-10126, -51168> velocity=< 1, 5> +position=< 41244, -20345> velocity=<-4, 2> +position=< 41225, -30624> velocity=<-4, 3> +position=< 51519, 41303> velocity=<-5, -4> +position=<-40956, -30616> velocity=< 4, 3> +position=<-20447, -40898> velocity=< 2, 4> diff --git a/10/input_sample.txt b/10/input_sample.txt new file mode 100644 index 0000000..e499c03 --- /dev/null +++ b/10/input_sample.txt @@ -0,0 +1,31 @@ +position=< 9, 1> velocity=< 0, 2> +position=< 7, 0> velocity=<-1, 0> +position=< 3, -2> velocity=<-1, 1> +position=< 6, 10> velocity=<-2, -1> +position=< 2, -4> velocity=< 2, 2> +position=<-6, 10> velocity=< 2, -2> +position=< 1, 8> velocity=< 1, -1> +position=< 1, 7> velocity=< 1, 0> +position=<-3, 11> velocity=< 1, -2> +position=< 7, 6> velocity=<-1, -1> +position=<-2, 3> velocity=< 1, 0> +position=<-4, 3> velocity=< 2, 0> +position=<10, -3> velocity=<-1, 1> +position=< 5, 11> velocity=< 1, -2> +position=< 4, 7> velocity=< 0, -1> +position=< 8, -2> velocity=< 0, 1> +position=<15, 0> velocity=<-2, 0> +position=< 1, 6> velocity=< 1, 0> +position=< 8, 9> velocity=< 0, -1> +position=< 3, 3> velocity=<-1, 1> +position=< 0, 5> velocity=< 0, -1> +position=<-2, 2> velocity=< 2, 0> +position=< 5, -2> velocity=< 1, 2> +position=< 1, 4> velocity=< 2, 1> +position=<-2, 7> velocity=< 2, -2> +position=< 3, 6> velocity=<-1, -1> +position=< 5, 0> velocity=< 1, 0> +position=<-6, 0> velocity=< 2, 0> +position=< 5, 9> velocity=< 1, -2> +position=<14, 7> velocity=<-2, 0> +position=<-3, 6> velocity=< 2, -1> diff --git a/10/solve01.py b/10/solve01.py new file mode 100755 index 0000000..6d72669 --- /dev/null +++ b/10/solve01.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +import time +import re + +points = [] +def read_input(): + with open('input.txt', 'r') as f: + for line in f: + yield [int(x) for x in re.findall(r'-?\d+', line)] + +def print_points(points): + max_x = max([p[0] for p in points]) + min_x = min([p[0] for p in points]) + max_y = max([p[1] for p in points]) + min_y = min([p[1] for p in points]) + + delta_x = abs(max_x - min_x) + delta_y = abs(max_y - min_y) + + grid = [['.' for x in range(delta_x+1)] for y in range(delta_y+1)] + move_x = min_x if min_x < 0 else min_x*-1 + move_y = min_y if min_y < 0 else min_y*-1 + for p in points: + grid[p[1]+move_y][p[0]+move_x] = 'x' + + for line in grid: + print(''.join(line)) + time.sleep(1) + +for point in read_input(): + points.append(point) + +elapsed = 0 +while True: + max_x = max([p[0] for p in points]) + min_x = min([p[0] for p in points]) + max_y = max([p[1] for p in points]) + min_y = min([p[1] for p in points]) + + delta_x = abs(max_x - min_x) + delta_y = abs(max_y - min_y) + + print("elapsed: {}, delta: {}/{}".format(elapsed,delta_x, delta_y)) + if delta_x < 70: + print_points(points) + + elapsed += 1 + points = [ [p[0]+p[2], p[1]+p[3], p[2], p[3]] for p in points] diff --git a/11/solve01.py b/11/solve01.py new file mode 100755 index 0000000..6f3e557 --- /dev/null +++ b/11/solve01.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +SIZE_X=300 +SIZE_Y=300 + +def get_cell_power(x, y, serial): + rack_id = x + 10 + power = rack_id * y + power += serial + power *= rack_id + + h = str(power)[-3] if power > 100 else '0' + return int(h) - 5 + + +def calculate(serial): + square = dict() + + for x in range(1, SIZE_X+1): + for y in range(1, SIZE_Y+1): + p = get_cell_power(x, y, serial) + for dx in range(-2, 1): + cx = x + dx + if cx < 1: + continue + if cx > SIZE_X: + continue + for dy in range(-2, 1): + cy = y + dy + if cy < 1: + continue + if cy > SIZE_Y: + continue + key = "{},{}".format(cx,cy) + if key not in square: + square[key] = 0 + square[key] += p + + m = max([v for v in square.values()]) + cell = [ k for k,v in square.items() if v == m] + print(m) + print(cell) + +#calculate(18) +#calculate(42) +calculate(8444) + + + diff --git a/11/solve02.py b/11/solve02.py new file mode 100755 index 0000000..12be821 --- /dev/null +++ b/11/solve02.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +from collections import defaultdict + +SIZE=300 +SERIAL=8444 + +def get_cell_power(x, y, serial): + rack_id = x + 10 + power = rack_id * y + power += serial + power *= rack_id + + h = str(power)[-3] if power > 100 else '0' + return int(h) - 5 + +# creating summed area table +# https://en.wikipedia.org/wiki/Summed-area_table +def create_field(serial): + f = defaultdict(int) + for y in range(1, SIZE+1): + for x in range(1, SIZE+1): + p = get_cell_power(x,y,serial) + f[(x,y)] = f[(x-1,y)] + f[(x, y-1)] - f[(x-1,y-1)] + p + return f + +def get_region_sum(t,x,y,s): + (x1, y1) = (x-1, y -1) + (x2, y2) = (x + s -1, y + s - 1) + return t[(x1,y1)] + t[(x2, y2)] - t[(x1, y2)] - t[(x2, y1)] + +def get_best(t, s): + rs = [] + for y in range(1, SIZE -s + 2): + for x in range(1, SIZE -s +2): + r = get_region_sum(t, x, y, s) + rs.append((r,x,y,s)) + return max(rs) + + +t = create_field(SERIAL) +print("%d,%d" % get_best(t, 3)[1:3]) + +print("%d,%d,%d" % max([get_best(t, s) for s in range(1, SIZE+1)])[1:])