Day 10 part 2
This commit is contained in:
parent
e81333b41a
commit
786ed49808
|
@ -1,5 +1,5 @@
|
||||||
use std::env::var as envvar;
|
use std::env::var as envvar;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Display;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
@ -20,12 +20,12 @@ pub fn day_input(day: u8) -> String {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub fn show_answers(answer1: &impl Debug, answer2: &impl Debug) {
|
pub fn show_answers(answer1: &impl Display, answer2: &impl Display) {
|
||||||
println!("Part 1: {:?}", answer1);
|
println!("Part 1: {}", answer1);
|
||||||
println!("Part 2: {:?}", answer2);
|
println!("Part 2: {}", answer2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub fn show_both_answers((a, b): &(impl Debug, impl Debug)) {
|
pub fn show_both_answers((a, b): &(impl Display, impl Display)) {
|
||||||
show_answers(a, b)
|
show_answers(a, b)
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,34 +53,30 @@ fn part2(input: &Input) -> Answer2 {
|
||||||
let w = 40;
|
let w = 40;
|
||||||
let mut crt = String::new();
|
let mut crt = String::new();
|
||||||
let mut x = 1;
|
let mut x = 1;
|
||||||
let mut cycles = 0;
|
let mut draw_pixel = |now_x| {
|
||||||
for i in input {
|
let mut pixel = ' ';
|
||||||
println!("{:?}", i);
|
|
||||||
let now_x = x.clone();
|
|
||||||
cycles += match i {
|
|
||||||
Instruction::Noop => 1,
|
|
||||||
Instruction::AddX(n) => {
|
|
||||||
x += n;
|
|
||||||
2
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut pixel = '.';
|
|
||||||
if ((crt.len() % w) as i32).abs_diff(now_x) <= 1 {
|
if ((crt.len() % w) as i32).abs_diff(now_x) <= 1 {
|
||||||
pixel = '#';
|
pixel = '#';
|
||||||
}
|
}
|
||||||
crt.push(pixel);
|
crt.push(pixel);
|
||||||
crt.push('#');
|
};
|
||||||
|
for i in input {
|
||||||
|
println!("{:?}", i);
|
||||||
|
let now_x = x.clone();
|
||||||
|
match i {
|
||||||
|
Instruction::Noop => draw_pixel(now_x),
|
||||||
|
Instruction::AddX(n) => {
|
||||||
|
draw_pixel(now_x);
|
||||||
|
draw_pixel(now_x);
|
||||||
|
x += n;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
crt.chars()
|
crt.chars()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.flat_map(|(i, c)| {
|
.flat_map(|(i, c)| {
|
||||||
if i > 0 && i % w == 0 {
|
if i % w == 0 { Some('\n') } else { None }
|
||||||
Some('\n')
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.chain(std::iter::once(c))
|
.chain(std::iter::once(c))
|
||||||
})
|
})
|
||||||
|
@ -256,12 +252,13 @@ noop";
|
||||||
assert_eq!(part1(&input), 13140);
|
assert_eq!(part1(&input), 13140);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
part2(&input),
|
part2(&input),
|
||||||
"##..##..##..##..##..##..##..##..##..##..
|
"\n##..##..##..##..##..##..##..##..##..##..
|
||||||
###...###...###...###...###...###...###.
|
###...###...###...###...###...###...###.
|
||||||
####....####....####....####....####....
|
####....####....####....####....####....
|
||||||
#####.....#####.....#####.....#####.....
|
#####.....#####.....#####.....#####.....
|
||||||
######......######......######......####
|
######......######......######......####
|
||||||
#######.......#######.......#######....."
|
#######.......#######.......#######....."
|
||||||
|
.replace('.', " ")
|
||||||
);
|
);
|
||||||
// assert_eq!(both_parts(&input), (0, 0));
|
// assert_eq!(both_parts(&input), (0, 0));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue