From 5849a1bab2419f3e2e41c02b4a5e770213bea904 Mon Sep 17 00:00:00 2001 From: Mika Suhonen Date: Sat, 10 Dec 2022 09:07:25 +0200 Subject: [PATCH] day 10 part 2 --- 10/j.py | 36 +++++- 10/out.txt | 361 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 393 insertions(+), 4 deletions(-) create mode 100644 10/out.txt diff --git a/10/j.py b/10/j.py index f78617d..aadb0cd 100644 --- a/10/j.py +++ b/10/j.py @@ -8,23 +8,51 @@ cost = { 'addx': 2 } +H = 6 +W = 40 + +screen = [] +for y in range(H): + tmp = '' + for x in range(W): + tmp += '.' + screen.append(tmp) + cycle = 1 -l = 0 -finish = len(input) X = 1 strs = [] +line = 1 for l in input: cmd = l.split() for i in range(cost[cmd[0]]): - #print(cycle, X, strs) + pos = cycle % 40 - 1 + # p1 if ((cycle+20) % 40) == 0: strenth = cycle*X - # print(">> " + str(cycle) + " " + str(strenth)) strs.append(strenth) + + # p2 + if cycle % 40 == 0: + line += 1 + + if (pos == X-1 or pos == X or pos == X+1): + + cur = screen[line-1] + screen[line-1] = cur[:pos] + "#" + cur[pos+1:] + cycle += 1 + if cmd[0] == 'addx': X += int(cmd[1]) +# p1 print(sum(strs)) + +# p2 +for y in range(H): + tmp = '' + for x in range(W): + tmp += screen[y][x] + print(tmp) diff --git a/10/out.txt b/10/out.txt new file mode 100644 index 0000000..7a6ed20 --- /dev/null +++ b/10/out.txt @@ -0,0 +1,361 @@ +1 1 1 +.#...................................... +2 1 2 +.##..................................... +3 16 3 +4 16 4 +5 5 5 +.##..#.................................. +6 5 6 +.##..##................................. +7 11 7 +8 11 8 +9 8 9 +.##..##..#.............................. +10 8 10 +11 13 11 +12 13 12 +.##..##..#..#........................... +13 12 13 +.##..##..#..##.......................... +14 12 14 +15 4 15 +16 4 16 +17 17 17 +.##..##..#..##...#...................... +18 17 18 +.##..##..#..##...##..................... +19 21 19 +20 21 20 +.##..##..#..##...##.#................... +21 21 21 +.##..##..#..##...##.##.................. +22 20 22 +23 20 23 +24 25 24 +.##..##..#..##...##.##..#............... +25 25 25 +.##..##..#..##...##.##..##.............. +26 24 26 +27 24 27 +28 29 28 +.##..##..#..##...##.##..##..#........... +29 29 29 +.##..##..#..##...##.##..##..##.......... +30 28 30 +31 28 31 +32 33 32 +.##..##..#..##...##.##..##..##..#....... +33 33 33 +.##..##..#..##...##.##..##..##..##...... +34 32 34 +35 32 35 +36 37 36 +.##..##..#..##...##.##..##..##..##..#... +37 37 37 +.##..##..#..##...##.##..##..##..##..##.. +38 36 38 +39 36 39 +40 1 0 +#....................................... +41 1 1 +##...................................... +42 2 2 +###..................................... +43 2 3 +####.................................... +44 26 4 +45 26 5 +46 7 6 +####..#................................. +47 7 7 +####..##................................ +48 8 8 +####..###............................... +49 8 9 +####..####.............................. +50 24 10 +51 24 11 +52 13 12 +####..####..#........................... +53 13 13 +####..####..##.......................... +54 13 14 +####..####..###......................... +55 13 15 +56 34 16 +57 34 17 +58 19 18 +####..####..###...#..................... +59 19 19 +####..####..###...##.................... +60 19 20 +####..####..###...###................... +61 19 21 +62 16 22 +63 16 23 +64 25 24 +####..####..###...###...#............... +65 25 25 +####..####..###...###...##.............. +66 26 26 +####..####..###...###...###............. +67 26 27 +####..####..###...###...####............ +68 23 28 +69 23 29 +70 31 30 +####..####..###...###...####..#......... +71 31 31 +####..####..###...###...####..##........ +72 32 32 +####..####..###...###...####..###....... +73 32 33 +####..####..###...###...####..####...... +74 37 34 +75 37 35 +76 37 36 +####..####..###...###...####..####..#... +77 37 37 +####..####..###...###...####..####..##.. +78 37 38 +####..####..###...###...####..####..###. +79 37 39 +80 37 0 +81 1 1 +.#...................................... +82 1 2 +.##..................................... +83 1 3 +84 2 4 +85 2 5 +86 9 6 +87 9 7 +88 9 8 +.##.....#............................... +89 9 9 +.##.....##.............................. +90 9 10 +.##.....###............................. +91 11 11 +.##.....####............................ +92 11 12 +.##.....#####........................... +93 17 13 +94 17 14 +95 17 15 +96 17 16 +.##.....#####...#....................... +97 17 17 +.##.....#####...##...................... +98 17 18 +.##.....#####...###..................... +99 17 19 +100 18 20 +101 18 21 +102 18 22 +103 18 23 +104 25 24 +.##.....#####...###.....#............... +105 25 25 +.##.....#####...###.....##.............. +106 26 26 +.##.....#####...###.....###............. +107 26 27 +.##.....#####...###.....####............ +108 26 28 +109 13 29 +110 13 30 +111 26 31 +112 26 32 +113 33 33 +.##.....#####...###.....####.....#...... +114 33 34 +.##.....#####...###.....####.....##..... +115 33 35 +116 34 36 +117 34 37 +118 1 38 +119 1 39 +120 1 0 +#....................................... +121 1 1 +##...................................... +122 1 2 +###..................................... +123 3 3 +####.................................... +124 3 4 +#####................................... +125 3 5 +126 3 6 +127 3 7 +128 11 8 +129 11 9 +130 11 10 +#####.....#............................. +131 10 11 +#####.....##............................ +132 10 12 +133 12 13 +#####.....##.#.......................... +134 12 14 +135 13 15 +136 13 16 +137 13 17 +138 30 18 +139 30 19 +140 21 20 +#####.....##.#......#................... +141 21 21 +#####.....##.#......##.................. +142 22 22 +#####.....##.#......###................. +143 22 23 +#####.....##.#......####................ +144 23 24 +#####.....##.#......#####............... +145 23 25 +146 20 26 +147 20 27 +148 31 28 +149 31 29 +150 31 30 +#####.....##.#......#####.....#......... +151 31 31 +#####.....##.#......#####.....##........ +152 32 32 +#####.....##.#......#####.....###....... +153 32 33 +#####.....##.#......#####.....####...... +154 32 34 +155 33 35 +156 33 36 +157 33 37 +158 33 38 +159 20 39 +160 20 0 +161 1 1 +.#...................................... +162 1 2 +.##..................................... +163 2 3 +.###.................................... +164 2 4 +165 5 5 +.###.#.................................. +166 5 6 +.###.##................................. +167 31 7 +168 31 8 +169 1 9 +170 1 10 +171 13 11 +172 13 12 +.###.##.....#........................... +173 12 13 +.###.##.....##.......................... +174 12 14 +175 15 15 +.###.##.....##.#........................ +176 15 16 +.###.##.....##.##....................... +177 16 17 +.###.##.....##.###...................... +178 16 18 +179 16 19 +180 16 20 +181 16 21 +182 7 22 +183 7 23 +184 25 24 +.###.##.....##.###......#............... +185 25 25 +.###.##.....##.###......##.............. +186 26 26 +.###.##.....##.###......###............. +187 26 27 +.###.##.....##.###......####............ +188 28 28 +.###.##.....##.###......#####........... +189 28 29 +.###.##.....##.###......######.......... +190 28 30 +191 28 31 +192 37 32 +193 37 33 +194 37 34 +195 37 35 +196 37 36 +.###.##.....##.###......######......#... +197 36 37 +.###.##.....##.###......######......##.. +198 36 38 +199 38 39 +.###.##.....##.###......######......##.# +200 38 0 +201 1 1 +.#...................................... +202 1 2 +.##..................................... +203 2 3 +.###.................................... +204 2 4 +205 5 5 +.###.#.................................. +206 5 6 +.###.##................................. +207 5 7 +208 20 8 +209 20 9 +210 -1 10 +211 -1 11 +212 21 12 +213 21 13 +214 15 14 +.###.##.......#......................... +215 15 15 +.###.##.......##........................ +216 16 16 +.###.##.......###....................... +217 16 17 +.###.##.......####...................... +218 16 18 +219 18 19 +.###.##.......####.#.................... +220 18 20 +221 19 21 +222 19 22 +223 19 23 +224 9 24 +225 9 25 +226 9 26 +227 9 27 +228 29 28 +.###.##.......####.#........#........... +229 29 29 +.###.##.......####.#........##.......... +230 30 30 +.###.##.......####.#........###......... +231 30 31 +.###.##.......####.#........####........ +232 32 32 +.###.##.......####.#........#####....... +233 32 33 +.###.##.......####.#........######...... +234 34 34 +.###.##.......####.#........#######..... +235 34 35 +.###.##.......####.#........########.... +236 28 36 +237 28 37 +238 17 38 +239 17 39 +240 17 0 +13140 +####..####..###...###...####..####..###. +.##.....#####...###.....####.....##..... +#####.....##.#......#####.....####...... +.###.##.....##.###......######......##.# +.###.##.......####.#........########.... +.##..##..#..##...##.##..##..##..##..##..