- 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 }