adventofcode

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

commit
1db2b94025adb8299a3133cb7d5b30e903ce5c0b
parent
360f969eb0b3ca9dab459d3c4733cf0362a1ea00
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2021-12-24 09:58
day 24 approach 1

Diffstat

A 2021/24/input.txt 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2021/24/part1.rs 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2 files changed, 309 insertions, 0 deletions


diff --git a/2021/24/input.txt b/2021/24/input.txt

@@ -0,0 +1,252 @@
   -1     1 inp w
   -1     2 mul x 0
   -1     3 add x z
   -1     4 mod x 26
   -1     5 div z 1
   -1     6 add x 11
   -1     7 eql x w
   -1     8 eql x 0
   -1     9 mul y 0
   -1    10 add y 25
   -1    11 mul y x
   -1    12 add y 1
   -1    13 mul z y
   -1    14 mul y 0
   -1    15 add y w
   -1    16 add y 5
   -1    17 mul y x
   -1    18 add z y
   -1    19 inp w
   -1    20 mul x 0
   -1    21 add x z
   -1    22 mod x 26
   -1    23 div z 1
   -1    24 add x 13
   -1    25 eql x w
   -1    26 eql x 0
   -1    27 mul y 0
   -1    28 add y 25
   -1    29 mul y x
   -1    30 add y 1
   -1    31 mul z y
   -1    32 mul y 0
   -1    33 add y w
   -1    34 add y 5
   -1    35 mul y x
   -1    36 add z y
   -1    37 inp w
   -1    38 mul x 0
   -1    39 add x z
   -1    40 mod x 26
   -1    41 div z 1
   -1    42 add x 12
   -1    43 eql x w
   -1    44 eql x 0
   -1    45 mul y 0
   -1    46 add y 25
   -1    47 mul y x
   -1    48 add y 1
   -1    49 mul z y
   -1    50 mul y 0
   -1    51 add y w
   -1    52 add y 1
   -1    53 mul y x
   -1    54 add z y
   -1    55 inp w
   -1    56 mul x 0
   -1    57 add x z
   -1    58 mod x 26
   -1    59 div z 1
   -1    60 add x 15
   -1    61 eql x w
   -1    62 eql x 0
   -1    63 mul y 0
   -1    64 add y 25
   -1    65 mul y x
   -1    66 add y 1
   -1    67 mul z y
   -1    68 mul y 0
   -1    69 add y w
   -1    70 add y 15
   -1    71 mul y x
   -1    72 add z y
   -1    73 inp w
   -1    74 mul x 0
   -1    75 add x z
   -1    76 mod x 26
   -1    77 div z 1
   -1    78 add x 10
   -1    79 eql x w
   -1    80 eql x 0
   -1    81 mul y 0
   -1    82 add y 25
   -1    83 mul y x
   -1    84 add y 1
   -1    85 mul z y
   -1    86 mul y 0
   -1    87 add y w
   -1    88 add y 2
   -1    89 mul y x
   -1    90 add z y
   -1    91 inp w
   -1    92 mul x 0
   -1    93 add x z
   -1    94 mod x 26
   -1    95 div z 26
   -1    96 add x -1
   -1    97 eql x w
   -1    98 eql x 0
   -1    99 mul y 0
   -1   100 add y 25
   -1   101 mul y x
   -1   102 add y 1
   -1   103 mul z y
   -1   104 mul y 0
   -1   105 add y w
   -1   106 add y 2
   -1   107 mul y x
   -1   108 add z y
   -1   109 inp w
   -1   110 mul x 0
   -1   111 add x z
   -1   112 mod x 26
   -1   113 div z 1
   -1   114 add x 14
   -1   115 eql x w
   -1   116 eql x 0
   -1   117 mul y 0
   -1   118 add y 25
   -1   119 mul y x
   -1   120 add y 1
   -1   121 mul z y
   -1   122 mul y 0
   -1   123 add y w
   -1   124 add y 5
   -1   125 mul y x
   -1   126 add z y
   -1   127 inp w
   -1   128 mul x 0
   -1   129 add x z
   -1   130 mod x 26
   -1   131 div z 26
   -1   132 add x -8
   -1   133 eql x w
   -1   134 eql x 0
   -1   135 mul y 0
   -1   136 add y 25
   -1   137 mul y x
   -1   138 add y 1
   -1   139 mul z y
   -1   140 mul y 0
   -1   141 add y w
   -1   142 add y 8
   -1   143 mul y x
   -1   144 add z y
   -1   145 inp w
   -1   146 mul x 0
   -1   147 add x z
   -1   148 mod x 26
   -1   149 div z 26
   -1   150 add x -7
   -1   151 eql x w
   -1   152 eql x 0
   -1   153 mul y 0
   -1   154 add y 25
   -1   155 mul y x
   -1   156 add y 1
   -1   157 mul z y
   -1   158 mul y 0
   -1   159 add y w
   -1   160 add y 14
   -1   161 mul y x
   -1   162 add z y
   -1   163 inp w
   -1   164 mul x 0
   -1   165 add x z
   -1   166 mod x 26
   -1   167 div z 26
   -1   168 add x -8
   -1   169 eql x w
   -1   170 eql x 0
   -1   171 mul y 0
   -1   172 add y 25
   -1   173 mul y x
   -1   174 add y 1
   -1   175 mul z y
   -1   176 mul y 0
   -1   177 add y w
   -1   178 add y 12
   -1   179 mul y x
   -1   180 add z y
   -1   181 inp w
   -1   182 mul x 0
   -1   183 add x z
   -1   184 mod x 26
   -1   185 div z 1
   -1   186 add x 11
   -1   187 eql x w
   -1   188 eql x 0
   -1   189 mul y 0
   -1   190 add y 25
   -1   191 mul y x
   -1   192 add y 1
   -1   193 mul z y
   -1   194 mul y 0
   -1   195 add y w
   -1   196 add y 7
   -1   197 mul y x
   -1   198 add z y
   -1   199 inp w
   -1   200 mul x 0
   -1   201 add x z
   -1   202 mod x 26
   -1   203 div z 26
   -1   204 add x -2
   -1   205 eql x w
   -1   206 eql x 0
   -1   207 mul y 0
   -1   208 add y 25
   -1   209 mul y x
   -1   210 add y 1
   -1   211 mul z y
   -1   212 mul y 0
   -1   213 add y w
   -1   214 add y 14
   -1   215 mul y x
   -1   216 add z y
   -1   217 inp w
   -1   218 mul x 0
   -1   219 add x z
   -1   220 mod x 26
   -1   221 div z 26
   -1   222 add x -2
   -1   223 eql x w
   -1   224 eql x 0
   -1   225 mul y 0
   -1   226 add y 25
   -1   227 mul y x
   -1   228 add y 1
   -1   229 mul z y
   -1   230 mul y 0
   -1   231 add y w
   -1   232 add y 13
   -1   233 mul y x
   -1   234 add z y
   -1   235 inp w
   -1   236 mul x 0
   -1   237 add x z
   -1   238 mod x 26
   -1   239 div z 26
   -1   240 add x -13
   -1   241 eql x w
   -1   242 eql x 0
   -1   243 mul y 0
   -1   244 add y 25
   -1   245 mul y x
   -1   246 add y 1
   -1   247 mul z y
   -1   248 mul y 0
   -1   249 add y w
   -1   250 add y 6
   -1   251 mul y x
   -1   252 add z y

diff --git a/2021/24/part1.rs b/2021/24/part1.rs

@@ -0,0 +1,57 @@
   -1     1 use std::collections::HashMap;
   -1     2 use std::env::args;
   -1     3 use std::fs::File;
   -1     4 use std::io::BufRead;
   -1     5 use std::io::BufReader;
   -1     6 
   -1     7 fn s2c(s: &str) -> char {
   -1     8     assert_eq!(s.len(), 1);
   -1     9     return s.chars().next().unwrap();
   -1    10 }
   -1    11 
   -1    12 #[derive(Debug)]
   -1    13 struct Condition {
   -1    14     not: bool,
   -1    15     value: i16,
   -1    16 }
   -1    17 
   -1    18 fn op_i(op: &str, a: Option<&Condition>, bi: i16) -> Condition {
   -1    19     return Condition {not: false, value: 0};
   -1    20 }
   -1    21 
   -1    22 fn op_c(op: &str, a: Option<&Condition>, b: Option<&Condition>) -> Condition {
   -1    23     return Condition {not: false, value: 0};
   -1    24 }
   -1    25 
   -1    26 fn main() {
   -1    27     let path = args().nth(1).unwrap();
   -1    28     let file = File::open(path).unwrap();
   -1    29 
   -1    30     let mut inputs = 0;
   -1    31     let mut conditions: HashMap<char, Condition> = HashMap::new();
   -1    32 
   -1    33     conditions.insert('z', Condition {not: false, value: 0});
   -1    34 
   -1    35     // FIXME: reverse
   -1    36     for line in BufReader::new(file).lines() {
   -1    37         let l = line.unwrap();
   -1    38 
   -1    39         match l.split(" ").collect::<Vec<&str>>()[..] {
   -1    40             ["inp", s] => {
   -1    41                 let c = s2c(s);
   -1    42                 println!("{:?}", conditions.get(&c));
   -1    43                 conditions.remove(&c);
   -1    44                 inputs += 1;
   -1    45             },
   -1    46             [op, a, b] => {
   -1    47                 let ac = s2c(a);
   -1    48                 conditions.insert(ac, match b.parse::<i16>() {
   -1    49                     Ok(bi) => op_i(op, conditions.get(&ac), bi),
   -1    50                     Err(_) => op_c(op, conditions.get(&ac), conditions.get(&s2c(b))),
   -1    51                 });
   -1    52             },
   -1    53             _ => unreachable!(),
   -1    54         }
   -1    55     }
   -1    56     println!("{:?}", conditions);
   -1    57 }