Compare commits

...

2 Commits

Author SHA1 Message Date
02f92114d3 Update readme for 2022
Add links to days in table
2022-12-10 15:31:39 +01:00
dcbed83ea4 Update solution for 2022 day 10
Move tested outputs into files
Make some micro-adjustments to code
2022-12-10 15:30:51 +01:00
5 changed files with 74 additions and 51 deletions

View File

@ -2,34 +2,59 @@
## Progress ## Progress
| Day | Part 1 | Part 2 | Language | | Day | Part 1 | Part 2 | Language |
| :-: | :----: | :----: | :------- | | :--: | :----: | :----: | :------- |
| 01 | ✓ | ✓ | [Rust] | | [01] | ✓ | ✓ | [Rust] |
| 02 | ✓ | ✓ | [Rust] | | [02] | ✓ | ✓ | [Rust] |
| 03 | ✓ | ✓ | [Rust] | | [03] | ✓ | ✓ | [Rust] |
| 04 | ✓ | ✓ | [Rust] | | [04] | ✓ | ✓ | [Rust] |
| 05 | ✓ | ✓ | [Rust] | | [05] | ✓ | ✓ | [Rust] |
| 06 | ✓ | ✓ | [Rust] | | [06] | ✓ | ✓ | [Rust] |
| 07 | ✓ | ✓ | [Rust] | | [07] | ✓ | ✓ | [Rust] |
| 08 | ✓ | ✓ | [Rust] | | [08] | ✓ | ✓ | [Rust] |
| 09 | ✓ | ✓ | [Rust] | | [09] | ✓ | ✓ | [Rust] |
| 10 | ✓ | ✓ | [Rust] | | [10] | ✓ | ✓ | [Rust] |
| 11 | | | | | [11] | | | |
| 12 | | | | | [12] | | | |
| 13 | | | | | [13] | | | |
| 14 | | | | | [14] | | | |
| 15 | | | | | [15] | | | |
| 16 | | | | | [16] | | | |
| 17 | | | | | [17] | | | |
| 18 | | | | | [18] | | | |
| 19 | | | | | [19] | | | |
| 20 | | | | | [20] | | | |
| 21 | | | | | [21] | | | |
| 22 | | | | | [22] | | | |
| 23 | | | | | [23] | | | |
| 24 | | | | | [24] | | | |
| 25 | | | | | [25] | | | |
<!-- links --> <!-- links -->
[rust]: https://www.rust-lang.org [rust]: https://www.rust-lang.org
[01]: day-01/
[02]: day-02/
[03]: day-03/
[04]: day-04/
[05]: day-05/
[06]: day-06/
[07]: day-07/
[08]: day-08/
[09]: day-09/
[10]: day-10/
[11]: day-11/
[12]: day-12/
[13]: day-13/
[14]: day-14/
[15]: day-15/
[16]: day-16/
[17]: day-17/
[18]: day-18/
[19]: day-19/
[20]: day-20/
[21]: day-21/
[22]: day-22/
[23]: day-23/
[24]: day-24/
[25]: day-25/

View File

@ -0,0 +1,6 @@
###..####.#..#.####..##..###..####.####.
#..#.#....#.#.....#.#..#.#..#.#....#....
#..#.###..##.....#..#....#..#.###..###..
###..#....#.#...#...#....###..#....#....
#.#..#....#.#..#....#..#.#....#....#....
#..#.#....#..#.####..##..#....####.#....

View File

@ -0,0 +1,6 @@
##..##..##..##..##..##..##..##..##..##..
###...###...###...###...###...###...###.
####....####....####....####....####....
#####.....#####.....#####.....#####.....
######......######......######......####
#######.......#######.......#######.....

View File

@ -15,9 +15,9 @@ fn main() -> io::Result<()> {
fn solve(path: &str) -> io::Result<i64> { fn solve(path: &str) -> io::Result<i64> {
let instructions = parse_input(path)?; let instructions = parse_input(path)?;
let mut cycles_total = 0; let mut cycles_total: i64 = 0;
let mut reg_x = 1; let mut reg_x: i64 = 1;
let mut sig_strength_total = 0; let mut sig_strength_total: i64 = 0;
for instruction in instructions { for instruction in instructions {
let (cycles, add_x) = match instruction { let (cycles, add_x) = match instruction {

View File

@ -22,8 +22,8 @@ fn solve(path: &str) -> io::Result<String> {
let mut crt = Vec::<[char; 40]>::new(); let mut crt = Vec::<[char; 40]>::new();
let mut crt_row = [PIXEL_UNLIT; 40]; let mut crt_row = [PIXEL_UNLIT; 40];
let mut cycles_total = 0; let mut cycles_total: i64 = 0;
let mut reg_x = 1_i64; let mut reg_x: i64 = 1;
for instruction in instructions { for instruction in instructions {
let (cycles, add_x) = match instruction { let (cycles, add_x) = match instruction {
@ -34,7 +34,7 @@ fn solve(path: &str) -> io::Result<String> {
for _ in 0..cycles { for _ in 0..cycles {
let cur_row_pos = cycles_total % DRAW_CYCLE; let cur_row_pos = cycles_total % DRAW_CYCLE;
if (reg_x - 1..=reg_x + 1).contains(&cur_row_pos) { if ((reg_x - 1)..=(reg_x + 1)).contains(&cur_row_pos) {
crt_row[cur_row_pos as usize] = PIXEL_LIT; crt_row[cur_row_pos as usize] = PIXEL_LIT;
} }
@ -52,8 +52,8 @@ fn solve(path: &str) -> io::Result<String> {
let lines = crt let lines = crt
.iter() .iter()
.map(|elem| elem.iter().collect::<String>()) .map(|elem| elem.iter().collect::<String>())
.collect::<Vec<_>>() .reduce(|acc, elem| acc + "\n" + &elem)
.join("\n"); .unwrap();
Ok(lines) Ok(lines)
} }
@ -64,28 +64,14 @@ mod test {
#[test] #[test]
fn sample() { fn sample() {
const OUTPUT: &str = "\ const OUTPUT: &str = include_str!("../../outputs/part_two/test.txt");
##..##..##..##..##..##..##..##..##..##..
###...###...###...###...###...###...###.
####....####....####....####....####....
#####.....#####.....#####.....#####.....
######......######......######......####
#######.......#######.......#######.....";
let result = solve("inputs/test.txt").unwrap(); let result = solve("inputs/test.txt").unwrap();
assert_eq!(OUTPUT, &result) assert_eq!(OUTPUT, &result)
} }
#[test] #[test]
fn puzzle() { fn puzzle() {
const OUTPUT: &str = "\ const OUTPUT: &str = include_str!("../../outputs/part_two/puzzle.txt");
###..####.#..#.####..##..###..####.####.
#..#.#....#.#.....#.#..#.#..#.#....#....
#..#.###..##.....#..#....#..#.###..###..
###..#....#.#...#...#....###..#....#....
#.#..#....#.#..#....#..#.#....#....#....
#..#.#....#..#.####..##..#....####.#....";
let result = solve("inputs/puzzle.txt").unwrap(); let result = solve("inputs/puzzle.txt").unwrap();
assert_eq!(OUTPUT, result); assert_eq!(OUTPUT, result);
} }