done with part2
This commit is contained in:
parent
af99955fc2
commit
100be8c55f
1 changed files with 38 additions and 3 deletions
|
@ -71,6 +71,12 @@ impl Vm {
|
|||
}
|
||||
}
|
||||
|
||||
fn cycle2beam(cycle: usize) -> (usize, usize) {
|
||||
let col = (cycle - 1) % 40;
|
||||
let row = (cycle - 1) / 40;
|
||||
(row, col)
|
||||
}
|
||||
|
||||
#[aoc_generator(day10)]
|
||||
fn parse_input(input: &str) -> Vm {
|
||||
let mut data = Vec::new();
|
||||
|
@ -102,8 +108,28 @@ fn part1(input: &Vm) -> i32 {
|
|||
}
|
||||
|
||||
#[aoc_run(day10, part2)]
|
||||
fn part2(input: &Vm) -> u32 {
|
||||
0
|
||||
fn part2(input: &Vm) -> String {
|
||||
let mut vm = input.clone();
|
||||
let mut crt = vec![vec![' '; 40]; 6];
|
||||
|
||||
for _ in 0..240 {
|
||||
let (cycle, x) = vm.run();
|
||||
let (row, col) = cycle2beam(cycle);
|
||||
let diff = (x.abs() - col as i32).abs();
|
||||
if diff < 2 {
|
||||
crt[row][col] = '#';
|
||||
}
|
||||
}
|
||||
|
||||
let mut out = String::with_capacity(248);
|
||||
out.push('\n');
|
||||
for row in crt {
|
||||
for char in row.iter() {
|
||||
out.push(*char);
|
||||
}
|
||||
out.push('\n');
|
||||
}
|
||||
out
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -267,6 +293,15 @@ noop";
|
|||
#[test]
|
||||
fn part2_test() {
|
||||
let vm = parse_input(INPUT);
|
||||
assert_eq!(part2(&vm), 1);
|
||||
let expected = "
|
||||
##..##..##..##..##..##..##..##..##..##..
|
||||
###...###...###...###...###...###...###.
|
||||
####....####....####....####....####....
|
||||
#####.....#####.....#####.....#####.....
|
||||
######......######......######......####
|
||||
#######.......#######.......#######.....";
|
||||
let out = part2(&vm);
|
||||
println!("{}", &out);
|
||||
assert_eq!(&out.trim(), &expected.trim());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue