Skip to content

Commit ea94fae

Browse files
committed
feat: added part 1 of day 7
1 parent 62b0d8e commit ea94fae

File tree

8 files changed

+317
-218
lines changed

8 files changed

+317
-218
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
- [Day 4](https://github.com/ankjevel/adventofcode/tree/2019/day_04) 🌟 🌟
1010
- [Day 5](https://github.com/ankjevel/adventofcode/tree/2019/day_05) 🌟 🌟
1111
- [Day 6](https://github.com/ankjevel/adventofcode/tree/2019/day_06) 🌟 🌟
12+
- [Day 7](https://github.com/ankjevel/adventofcode/tree/2019/day_07) 🌟

day_05/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@ authors = ["Dennis Pettersson <mail@dennispettersson.se>"]
55
edition = "2018"
66

77
[dependencies]
8+
9+
[[bin]]
10+
name = "day_04"
11+
path = "src/bin/main.rs"

day_05/src/bin/main.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
use ::day_05::{parse_input, program::Program};
2+
use std::io::Result;
3+
4+
#[allow(dead_code)]
5+
fn main() -> Result<()> {
6+
let input = parse_input(include_str!("../../../input/day_05"));
7+
let mut program = Program::new(&input[0]);
8+
9+
program.new_input(&vec![1]);
10+
program.run();
11+
println!("part_01: {:?}", program.output);
12+
13+
program.new_input(&vec![5]);
14+
program.run();
15+
println!("part_02: {:?}", program.output);
16+
17+
Ok(())
18+
}
19+
20+
#[cfg(test)]
21+
mod tests {
22+
use super::*;
23+
24+
const EXAMPLE_DATA_FROM_DAY_02: &'static str = "
25+
1,0,0,0,99
26+
2,3,0,3,99
27+
2,4,4,5,99,0
28+
1,1,1,4,99,5,6,0,99
29+
";
30+
31+
const EXAMPLE_DATA_01: &'static str = "
32+
1101,100,-1,4,0
33+
1002,4,3,4,33
34+
";
35+
36+
#[test]
37+
fn it_still_works_with_example_data_from_day_02() {
38+
let input = parse_input(EXAMPLE_DATA_FROM_DAY_02);
39+
40+
let results = input
41+
.iter()
42+
.map(|row| {
43+
let mut program = Program::new(&row);
44+
program.run();
45+
46+
program.memory
47+
})
48+
.collect::<Vec<Vec<i32>>>();
49+
50+
assert_eq!(results[0], [2, 0, 0, 0, 99]);
51+
assert_eq!(results[1], [2, 3, 0, 6, 99]);
52+
assert_eq!(results[2], [2, 4, 4, 5, 99, 9801]);
53+
assert_eq!(results[3], [30, 1, 1, 4, 2, 5, 6, 0, 99]);
54+
}
55+
56+
#[test]
57+
fn examples_for_part_1() {
58+
let input = parse_input(EXAMPLE_DATA_01);
59+
60+
let results = input
61+
.iter()
62+
.map(|row| {
63+
let mut program = Program::new(&row);
64+
program.run();
65+
program
66+
})
67+
.collect::<Vec<Program>>();
68+
69+
assert_eq!(results[0].memory, [1101, 100, -1, 4, 99]);
70+
assert_eq!(results[1].memory, [1002, 4, 3, 4, 99]);
71+
assert_eq!(results[0].output, []);
72+
assert_eq!(results[1].output, []);
73+
}
74+
}

day_05/src/lib.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
pub fn parse_input(string: &str) -> Vec<Vec<i32>> {
2+
string
3+
.lines()
4+
.map(|string| string.trim())
5+
.filter(|string| !string.is_empty())
6+
.map(|string| {
7+
string
8+
.split(',')
9+
.map(|part| part.parse::<i32>().unwrap())
10+
.collect::<Vec<i32>>()
11+
})
12+
.collect()
13+
}
14+
15+
pub mod program;

day_05/src/main.rs

Lines changed: 0 additions & 218 deletions
This file was deleted.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy