adventofcode

git clone https://git.ce9e.org/adventofcode.git

commit
7840fa7d86228f6f6644181d5f7c3048d4f00811
parent
eed68ad94a779b4650b340bd679bb6f4928a7feb
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2022-12-10 14:56
2022-12-10

Diffstat

A 2022/10/input.txt 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2022/10/solution.rs 44 ++++++++++++++++++++++++++++++++++++++++++++
A 2022/10/test.txt 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3 files changed, 330 insertions, 0 deletions


diff --git a/2022/10/input.txt b/2022/10/input.txt

@@ -0,0 +1,140 @@
   -1     1 addx 1
   -1     2 noop
   -1     3 addx 5
   -1     4 addx -1
   -1     5 addx 5
   -1     6 addx 1
   -1     7 noop
   -1     8 noop
   -1     9 addx 2
   -1    10 addx 5
   -1    11 addx 2
   -1    12 addx 1
   -1    13 noop
   -1    14 addx -21
   -1    15 addx 26
   -1    16 addx -6
   -1    17 addx 8
   -1    18 noop
   -1    19 noop
   -1    20 addx 7
   -1    21 noop
   -1    22 noop
   -1    23 noop
   -1    24 addx -37
   -1    25 addx 13
   -1    26 addx -6
   -1    27 addx -2
   -1    28 addx 5
   -1    29 addx 25
   -1    30 addx 2
   -1    31 addx -24
   -1    32 addx 2
   -1    33 addx 5
   -1    34 addx 5
   -1    35 noop
   -1    36 noop
   -1    37 addx -2
   -1    38 addx 2
   -1    39 addx 5
   -1    40 addx 2
   -1    41 addx 7
   -1    42 addx -2
   -1    43 noop
   -1    44 addx -8
   -1    45 addx 9
   -1    46 addx -36
   -1    47 noop
   -1    48 noop
   -1    49 addx 5
   -1    50 addx 6
   -1    51 noop
   -1    52 addx 25
   -1    53 addx -24
   -1    54 addx 3
   -1    55 addx -2
   -1    56 noop
   -1    57 addx 3
   -1    58 addx 6
   -1    59 noop
   -1    60 addx 9
   -1    61 addx -8
   -1    62 addx 5
   -1    63 addx 2
   -1    64 addx -7
   -1    65 noop
   -1    66 addx 12
   -1    67 addx -10
   -1    68 addx 11
   -1    69 addx -38
   -1    70 addx 22
   -1    71 addx -15
   -1    72 addx -3
   -1    73 noop
   -1    74 addx 32
   -1    75 addx -25
   -1    76 addx -7
   -1    77 addx 11
   -1    78 addx 5
   -1    79 addx 10
   -1    80 addx -9
   -1    81 addx 17
   -1    82 addx -12
   -1    83 addx 2
   -1    84 noop
   -1    85 addx 2
   -1    86 addx -15
   -1    87 addx 22
   -1    88 noop
   -1    89 noop
   -1    90 noop
   -1    91 addx -35
   -1    92 addx 7
   -1    93 addx 21
   -1    94 addx -25
   -1    95 noop
   -1    96 addx 3
   -1    97 addx 2
   -1    98 noop
   -1    99 addx 7
   -1   100 noop
   -1   101 addx 3
   -1   102 noop
   -1   103 addx 2
   -1   104 addx 9
   -1   105 addx -4
   -1   106 addx -2
   -1   107 addx 5
   -1   108 addx 2
   -1   109 addx -2
   -1   110 noop
   -1   111 addx 7
   -1   112 addx 2
   -1   113 addx -39
   -1   114 addx 2
   -1   115 noop
   -1   116 addx 1
   -1   117 noop
   -1   118 addx 5
   -1   119 addx 24
   -1   120 addx -20
   -1   121 addx 1
   -1   122 addx 5
   -1   123 noop
   -1   124 noop
   -1   125 addx 4
   -1   126 noop
   -1   127 addx 1
   -1   128 noop
   -1   129 addx 4
   -1   130 addx 3
   -1   131 noop
   -1   132 addx 2
   -1   133 noop
   -1   134 noop
   -1   135 addx 1
   -1   136 addx 2
   -1   137 noop
   -1   138 addx 3
   -1   139 noop
   -1   140 noop

diff --git a/2022/10/solution.rs b/2022/10/solution.rs

@@ -0,0 +1,44 @@
   -1     1 #[path = "../lib.rs"] mod lib;
   -1     2 
   -1     3 use std::convert::TryFrom;
   -1     4 
   -1     5 fn main() {
   -1     6     let mut cycle: i64 = 1;
   -1     7     let mut x: i64 = 1;
   -1     8     let mut part1_sum: i64 = 0;
   -1     9     let mut screen = [[false; 40]; 6];
   -1    10 
   -1    11     for line in lib::iter_input() {
   -1    12         let (duration, value) = match line.split(" ").collect::<Vec<&str>>()[..] {
   -1    13             ["noop"] => (1, 0),
   -1    14             ["addx", v] => (2, v.parse::<i64>().unwrap()),
   -1    15             _ => unreachable!(),
   -1    16         };
   -1    17         for _ in 0..duration {
   -1    18             if cycle % 40 == 20 {
   -1    19                 part1_sum += cycle * x;
   -1    20             }
   -1    21 
   -1    22             let screen_x = (cycle - 1) % 40;
   -1    23             if (x - screen_x).abs() <= 1 {
   -1    24                 let screen_y = ((cycle - 1) / 40) % 6;
   -1    25                 let ux = usize::try_from(screen_x).unwrap();
   -1    26                 let uy = usize::try_from(screen_y).unwrap();
   -1    27                 screen[uy][ux] = true;
   -1    28             }
   -1    29 
   -1    30             cycle += 1;
   -1    31         }
   -1    32         x += value;
   -1    33     }
   -1    34 
   -1    35     println!("part1: {}", part1_sum);
   -1    36     println!("part2:");
   -1    37 
   -1    38     for row in screen.iter() {
   -1    39         for cell in row.iter() {
   -1    40             print!("{}", if *cell { "#" } else { " " });
   -1    41         }
   -1    42         print!("\n");
   -1    43     }
   -1    44 }

diff --git a/2022/10/test.txt b/2022/10/test.txt

@@ -0,0 +1,146 @@
   -1     1 addx 15
   -1     2 addx -11
   -1     3 addx 6
   -1     4 addx -3
   -1     5 addx 5
   -1     6 addx -1
   -1     7 addx -8
   -1     8 addx 13
   -1     9 addx 4
   -1    10 noop
   -1    11 addx -1
   -1    12 addx 5
   -1    13 addx -1
   -1    14 addx 5
   -1    15 addx -1
   -1    16 addx 5
   -1    17 addx -1
   -1    18 addx 5
   -1    19 addx -1
   -1    20 addx -35
   -1    21 addx 1
   -1    22 addx 24
   -1    23 addx -19
   -1    24 addx 1
   -1    25 addx 16
   -1    26 addx -11
   -1    27 noop
   -1    28 noop
   -1    29 addx 21
   -1    30 addx -15
   -1    31 noop
   -1    32 noop
   -1    33 addx -3
   -1    34 addx 9
   -1    35 addx 1
   -1    36 addx -3
   -1    37 addx 8
   -1    38 addx 1
   -1    39 addx 5
   -1    40 noop
   -1    41 noop
   -1    42 noop
   -1    43 noop
   -1    44 noop
   -1    45 addx -36
   -1    46 noop
   -1    47 addx 1
   -1    48 addx 7
   -1    49 noop
   -1    50 noop
   -1    51 noop
   -1    52 addx 2
   -1    53 addx 6
   -1    54 noop
   -1    55 noop
   -1    56 noop
   -1    57 noop
   -1    58 noop
   -1    59 addx 1
   -1    60 noop
   -1    61 noop
   -1    62 addx 7
   -1    63 addx 1
   -1    64 noop
   -1    65 addx -13
   -1    66 addx 13
   -1    67 addx 7
   -1    68 noop
   -1    69 addx 1
   -1    70 addx -33
   -1    71 noop
   -1    72 noop
   -1    73 noop
   -1    74 addx 2
   -1    75 noop
   -1    76 noop
   -1    77 noop
   -1    78 addx 8
   -1    79 noop
   -1    80 addx -1
   -1    81 addx 2
   -1    82 addx 1
   -1    83 noop
   -1    84 addx 17
   -1    85 addx -9
   -1    86 addx 1
   -1    87 addx 1
   -1    88 addx -3
   -1    89 addx 11
   -1    90 noop
   -1    91 noop
   -1    92 addx 1
   -1    93 noop
   -1    94 addx 1
   -1    95 noop
   -1    96 noop
   -1    97 addx -13
   -1    98 addx -19
   -1    99 addx 1
   -1   100 addx 3
   -1   101 addx 26
   -1   102 addx -30
   -1   103 addx 12
   -1   104 addx -1
   -1   105 addx 3
   -1   106 addx 1
   -1   107 noop
   -1   108 noop
   -1   109 noop
   -1   110 addx -9
   -1   111 addx 18
   -1   112 addx 1
   -1   113 addx 2
   -1   114 noop
   -1   115 noop
   -1   116 addx 9
   -1   117 noop
   -1   118 noop
   -1   119 noop
   -1   120 addx -1
   -1   121 addx 2
   -1   122 addx -37
   -1   123 addx 1
   -1   124 addx 3
   -1   125 noop
   -1   126 addx 15
   -1   127 addx -21
   -1   128 addx 22
   -1   129 addx -6
   -1   130 addx 1
   -1   131 noop
   -1   132 addx 2
   -1   133 addx 1
   -1   134 noop
   -1   135 addx -10
   -1   136 noop
   -1   137 noop
   -1   138 addx 20
   -1   139 addx 1
   -1   140 addx 2
   -1   141 addx 2
   -1   142 addx -6
   -1   143 addx -11
   -1   144 noop
   -1   145 noop
   -1   146 noop