diff --git a/src/day9/1.rs b/src/day9/1.rs new file mode 100644 index 0000000..54a8abb --- /dev/null +++ b/src/day9/1.rs @@ -0,0 +1,94 @@ +#![feature(byte_slice_trim_ascii)] +#![feature(test)] + +use std::collections::HashSet; + +extern crate test; + +const INPUTS: [&[u8]; 2] = [ + include_bytes!("./sample1.txt"), + include_bytes!("./input.txt"), +]; + +#[derive(Debug)] +enum Move { + R(usize), + L(usize), + U(usize), + D(usize), +} + +fn parse(input: &[u8]) -> impl Iterator + '_ { + input.trim_ascii().split(|&c| c == b'\n').map(|line| { + let (a, b) = line.split_at(1); + + let b = b + .iter() + .skip(1) + .fold(0, |a, x| (a * 10) + (x - b'0') as usize); + + match &a { + [b'R'] => Move::R(b), + [b'L'] => Move::L(b), + [b'U'] => Move::U(b), + [b'D'] => Move::D(b), + + _ => unreachable!(), + } + }) +} + +fn main() { + for input in INPUTS.iter() { + let output = parse(input); + let score = solution(output); + println!("{}", score); + } +} + +fn solution(input: impl Iterator) -> usize { + let (mut sxh, mut syh) = (0, 0); + let (mut sxt, mut syt) = (0, 0); + + let mut set = HashSet::with_capacity(5000); + + for mmove in input { + let (steps, (dsxh, dsyh)): (usize, (i32, i32)) = match mmove { + Move::R(v) => (v, (1, 0)), + Move::L(v) => (v, (-1, 0)), + Move::U(v) => (v, (0, -1)), + Move::D(v) => (v, (0, 1)), + }; + for _ in 0..steps { + sxh += dsxh; + syh += dsyh; + + (sxt, syt) = move_tail((sxh, syh), (sxt, syt)); + + set.insert((sxt, syt)); + } + } + + set.len() +} + +#[inline] +const fn move_tail((sxh, syh): (i32, i32), (sxt, syt): (i32, i32)) -> (i32, i32) { + let dx = sxh - sxt; + let dy = syh - syt; + + if dx.abs() == 2 || dy.abs() == 2 { + (sxt + dx.signum(), syt + dy.signum()) + } else { + (sxt, syt) + } +} + +#[bench] +fn solution_bench(b: &mut test::Bencher) { + b.iter(|| { + let input = parse(INPUTS[1]); + let result = solution(input); + test::black_box(result); + }) +} diff --git a/src/day9/2.rs b/src/day9/2.rs new file mode 100644 index 0000000..7a31ec1 --- /dev/null +++ b/src/day9/2.rs @@ -0,0 +1,107 @@ +#![feature(byte_slice_trim_ascii)] +#![feature(test)] +extern crate test; + +use std::collections::HashSet; + +const INPUTS: [&[u8]; 2] = [ + include_bytes!("./sample.txt"), + include_bytes!("./input.txt"), +]; + +#[derive(Debug)] +enum Move { + R(u8), + L(u8), + U(u8), + D(u8), +} + +fn parse(input: &[u8]) -> Vec { + input + .trim_ascii() + .split(|&c| c == b'\n') + .map(|line| { + let (a, b) = line.split_at(1); + + let b = b.iter().skip(1).fold(0, |a, x| (a * 10) + (x - b'0')); + + match &a { + [b'R'] => Move::R(b), + [b'L'] => Move::L(b), + [b'U'] => Move::U(b), + [b'D'] => Move::D(b), + + _ => unreachable!(), + } + }) + .collect() +} + +fn main() { + for input in INPUTS.iter() { + let output = parse(input); + let score = solution(output); + println!("{}", score); + } +} + +fn solution(input: Vec) -> usize { + let mut locs = [(0, 0); 10]; + let mut set: HashSet<(i32, i32)> = HashSet::with_capacity_and_hasher(3000, Default::default()); + set.insert((0, 0)); + + for mmove in input { + let (steps, (dsxh, dsyh)) = match mmove { + Move::R(v) => (v, (1, 0)), + Move::L(v) => (v, (-1, 0)), + Move::U(v) => (v, (0, -1)), + Move::D(v) => (v, (0, 1)), + }; + + let locs9 = locs[9]; + + for _ in 0..steps { + // Update Head position + locs[0].0 += dsxh; + locs[0].1 += dsyh; + + // One by one, Updated position of each knot + for i in 1..10 { + let loci = move_tail(locs[i - 1], locs[i]); + if loci == locs[i] { + break; + } + locs[i] = loci; + } + + if locs9 != locs[9] { + set.insert(locs[9]); + } + } + } + + set.len() +} + +#[inline] +const fn move_tail((sxh, syh): (i32, i32), (sxt, syt): (i32, i32)) -> (i32, i32) { + let dx = sxh - sxt; + let dy = syh - syt; + + if dx.abs() == 2 || dy.abs() == 2 { + // signum gets you 1 or -1 depending on the sign of number + (sxt + dx.signum(), syt + dy.signum()) + } else { + (sxt, syt) + } +} + +#[bench] +fn solution_bench(b: &mut test::Bencher) { + b.iter(|| { + let input = parse(INPUTS[1]); + let result = solution(input); + test::black_box(result); + }) +} diff --git a/src/day9/input.txt b/src/day9/input.txt new file mode 100644 index 0000000..bbd1f5c --- /dev/null +++ b/src/day9/input.txt @@ -0,0 +1,2000 @@ +D 2 +R 1 +L 2 +U 1 +R 2 +L 2 +R 2 +L 1 +R 1 +L 1 +R 2 +L 2 +R 1 +D 2 +U 1 +R 1 +L 2 +U 2 +R 2 +U 2 +R 2 +D 1 +L 1 +U 1 +R 2 +L 1 +D 1 +U 1 +L 1 +U 1 +D 2 +U 1 +R 2 +U 1 +L 1 +D 1 +L 1 +U 1 +R 1 +L 1 +U 2 +L 2 +D 2 +L 2 +R 2 +U 1 +R 1 +U 2 +D 2 +R 2 +L 1 +R 1 +D 1 +U 2 +R 1 +L 1 +U 2 +L 2 +U 1 +L 2 +U 1 +R 1 +L 1 +D 2 +U 2 +R 2 +D 1 +R 1 +U 2 +R 2 +L 2 +U 1 +L 1 +D 2 +R 2 +L 1 +R 1 +D 1 +R 1 +L 1 +D 2 +R 1 +U 1 +L 1 +R 1 +L 1 +D 2 +L 1 +U 1 +R 1 +D 1 +R 1 +D 1 +L 2 +U 1 +D 1 +R 2 +D 2 +R 2 +L 2 +U 2 +L 1 +U 1 +L 1 +R 1 +L 1 +U 2 +L 2 +U 2 +L 1 +U 1 +D 1 +U 3 +R 2 +D 2 +R 1 +U 2 +L 2 +D 1 +U 1 +R 2 +U 3 +D 1 +L 3 +U 2 +D 2 +R 1 +D 1 +L 1 +D 2 +L 2 +U 1 +L 2 +R 3 +U 3 +L 1 +U 3 +L 1 +D 1 +U 3 +R 1 +U 3 +D 2 +L 3 +R 3 +L 2 +U 1 +D 1 +U 1 +L 1 +D 1 +R 2 +U 3 +D 3 +L 3 +R 1 +U 3 +D 1 +U 3 +L 1 +D 3 +R 3 +U 2 +D 1 +R 2 +U 1 +R 3 +U 1 +D 1 +U 1 +L 1 +R 3 +U 2 +D 3 +U 2 +R 2 +L 1 +D 3 +R 3 +L 2 +U 1 +L 2 +U 2 +R 3 +U 3 +D 2 +U 2 +D 3 +R 1 +D 1 +R 3 +D 1 +L 3 +R 2 +D 1 +L 1 +D 1 +L 3 +D 1 +L 3 +D 2 +L 2 +D 2 +R 1 +U 2 +D 1 +U 3 +L 3 +D 1 +R 3 +L 2 +D 2 +U 2 +R 1 +U 2 +R 3 +L 1 +R 3 +L 1 +D 1 +U 2 +L 3 +U 3 +R 2 +L 1 +R 2 +U 4 +R 1 +U 2 +L 2 +D 3 +U 1 +L 2 +U 1 +L 2 +D 3 +U 1 +D 3 +U 1 +D 3 +L 2 +R 1 +L 3 +R 2 +U 2 +L 2 +D 3 +L 2 +U 3 +R 4 +L 3 +D 4 +L 3 +U 2 +L 2 +U 4 +R 2 +D 4 +R 1 +D 4 +U 4 +D 3 +R 2 +D 4 +U 1 +D 4 +U 4 +R 2 +D 3 +R 4 +D 2 +L 2 +R 4 +L 1 +D 2 +U 4 +R 4 +U 4 +L 4 +U 2 +D 3 +L 3 +U 3 +R 1 +L 2 +D 2 +L 3 +R 2 +U 3 +D 4 +L 1 +D 4 +U 3 +L 3 +U 4 +D 1 +U 2 +D 4 +L 4 +D 3 +R 3 +U 1 +L 4 +D 2 +R 4 +U 4 +L 4 +U 3 +L 4 +R 3 +D 3 +L 1 +U 2 +R 1 +U 2 +D 3 +U 4 +L 1 +D 2 +U 1 +D 1 +L 1 +D 1 +U 1 +D 3 +L 1 +D 4 +L 2 +R 3 +L 2 +R 4 +L 4 +U 2 +R 3 +L 2 +D 3 +L 2 +U 2 +R 3 +U 1 +D 3 +U 5 +D 4 +U 3 +L 1 +D 4 +U 3 +D 2 +L 1 +R 3 +U 5 +L 5 +R 1 +D 2 +R 2 +D 3 +L 4 +D 4 +U 2 +D 3 +R 5 +D 3 +U 2 +D 4 +L 1 +D 5 +R 2 +D 1 +U 2 +L 1 +R 5 +U 4 +L 5 +D 2 +U 4 +D 5 +U 4 +L 4 +U 3 +D 2 +L 2 +R 2 +D 1 +U 1 +R 5 +L 3 +R 4 +D 5 +R 5 +D 4 +L 1 +R 2 +U 3 +R 5 +D 5 +R 3 +D 1 +R 3 +D 2 +U 4 +D 1 +U 5 +L 1 +U 3 +L 3 +D 1 +R 3 +U 1 +L 3 +R 2 +L 4 +R 4 +U 1 +D 5 +R 2 +L 5 +R 5 +U 3 +D 1 +R 4 +D 5 +L 5 +R 4 +U 5 +R 4 +D 3 +R 4 +D 2 +R 2 +U 1 +D 2 +L 1 +R 1 +L 3 +D 3 +L 5 +D 4 +R 5 +D 2 +L 5 +U 3 +R 3 +L 5 +U 3 +L 5 +R 5 +L 2 +U 4 +D 2 +R 1 +L 5 +R 1 +U 5 +L 2 +R 2 +U 6 +L 6 +U 2 +R 5 +U 3 +R 2 +D 3 +U 3 +D 1 +L 1 +U 2 +R 5 +L 1 +R 5 +D 6 +R 4 +L 4 +U 1 +R 3 +D 5 +U 3 +L 6 +U 1 +D 6 +R 6 +L 4 +R 4 +U 6 +R 6 +U 3 +R 6 +U 2 +R 6 +U 4 +R 2 +L 5 +U 2 +D 6 +L 4 +U 5 +L 4 +R 6 +L 1 +R 3 +L 3 +D 1 +L 5 +D 1 +L 5 +R 2 +D 3 +L 1 +U 6 +R 6 +U 2 +L 3 +R 4 +U 6 +R 3 +L 4 +U 1 +R 1 +D 1 +L 4 +D 6 +U 1 +R 2 +L 6 +U 3 +R 1 +L 1 +D 3 +R 1 +U 4 +D 2 +L 1 +D 3 +R 2 +D 5 +L 3 +R 6 +U 4 +D 4 +L 4 +U 2 +D 2 +L 4 +D 6 +U 5 +D 5 +R 6 +D 1 +L 4 +R 2 +U 3 +D 5 +R 4 +U 6 +R 4 +U 6 +L 7 +U 6 +D 1 +U 2 +D 6 +R 4 +U 7 +D 2 +L 6 +R 2 +U 7 +R 7 +L 1 +U 2 +L 5 +R 4 +L 7 +R 3 +D 5 +U 7 +D 4 +L 6 +U 5 +L 4 +D 2 +U 2 +D 2 +U 5 +R 7 +D 3 +U 3 +D 6 +U 4 +D 2 +R 6 +L 5 +U 3 +R 1 +D 7 +R 7 +U 4 +R 7 +U 2 +R 1 +L 4 +U 6 +L 1 +D 1 +U 3 +R 7 +U 1 +R 3 +L 3 +R 2 +U 6 +L 6 +D 7 +L 7 +R 3 +U 5 +L 5 +D 4 +L 7 +R 5 +U 7 +D 5 +R 2 +U 2 +L 4 +U 4 +D 5 +L 6 +R 3 +D 4 +U 3 +D 6 +L 5 +U 1 +L 4 +R 2 +L 2 +U 7 +R 4 +U 4 +L 4 +D 1 +U 1 +D 3 +U 3 +D 3 +R 6 +L 5 +R 6 +D 1 +U 4 +L 5 +U 2 +D 6 +L 1 +U 5 +D 5 +R 5 +D 1 +L 4 +D 2 +U 1 +R 3 +U 3 +L 3 +D 5 +U 2 +R 4 +U 1 +D 8 +R 2 +U 4 +L 4 +D 8 +R 2 +U 6 +D 4 +R 5 +U 4 +R 2 +L 2 +U 4 +D 8 +R 7 +L 5 +R 5 +U 6 +R 6 +U 7 +D 2 +U 6 +D 1 +R 5 +U 1 +D 6 +R 7 +L 1 +R 1 +D 1 +R 3 +D 8 +R 1 +U 2 +L 4 +R 4 +L 6 +R 2 +U 7 +R 1 +L 3 +D 1 +L 3 +U 7 +R 8 +L 7 +D 1 +R 1 +L 7 +D 7 +U 5 +D 5 +L 1 +U 7 +D 7 +R 5 +D 5 +U 5 +R 6 +L 8 +R 6 +L 1 +R 3 +D 1 +L 2 +U 7 +R 5 +L 4 +U 3 +L 6 +U 6 +R 6 +L 4 +U 6 +R 5 +U 2 +R 7 +U 8 +R 5 +U 2 +R 4 +L 5 +R 1 +D 4 +L 8 +R 3 +L 2 +U 7 +R 4 +L 6 +R 5 +U 2 +L 3 +D 8 +R 8 +D 7 +L 4 +D 4 +R 6 +L 7 +U 8 +L 5 +R 4 +D 4 +R 8 +D 2 +L 7 +D 6 +U 3 +L 4 +R 6 +U 8 +L 2 +R 6 +L 7 +U 4 +L 3 +D 2 +R 8 +U 3 +D 2 +U 5 +R 7 +D 7 +L 6 +U 8 +D 6 +U 5 +D 6 +U 2 +L 7 +R 4 +L 9 +R 2 +U 3 +R 7 +U 6 +L 3 +U 8 +L 9 +U 5 +R 1 +L 5 +D 5 +R 8 +L 3 +U 1 +L 2 +D 5 +U 1 +D 8 +U 5 +D 7 +L 9 +U 6 +D 4 +R 5 +U 3 +L 1 +D 9 +R 4 +D 7 +U 2 +R 2 +D 4 +L 2 +U 9 +R 7 +U 1 +R 2 +D 7 +R 3 +D 6 +L 7 +U 5 +R 9 +U 4 +L 7 +R 5 +U 7 +L 4 +D 4 +R 9 +D 5 +L 5 +D 1 +R 2 +D 6 +L 8 +U 8 +L 6 +D 7 +L 5 +U 2 +L 3 +D 9 +U 8 +D 3 +L 8 +R 2 +D 7 +R 5 +D 3 +U 1 +R 3 +L 9 +U 3 +D 2 +L 4 +D 7 +R 8 +U 7 +D 5 +U 5 +R 7 +L 8 +D 7 +L 7 +D 8 +U 5 +R 9 +U 10 +R 5 +U 6 +R 7 +D 9 +L 2 +R 1 +D 2 +R 9 +L 4 +U 4 +R 5 +D 9 +U 4 +L 7 +D 9 +L 4 +D 4 +L 10 +U 9 +L 8 +R 10 +U 9 +L 10 +U 2 +R 8 +L 2 +D 6 +R 1 +D 1 +L 5 +U 2 +R 9 +U 2 +R 1 +U 1 +L 6 +D 1 +R 2 +D 10 +L 7 +R 2 +U 7 +D 4 +R 9 +L 7 +D 8 +U 5 +R 10 +L 10 +D 2 +U 2 +R 8 +U 9 +D 1 +R 2 +L 10 +U 5 +R 8 +L 7 +D 1 +R 7 +D 3 +U 8 +L 4 +D 3 +U 4 +R 5 +U 9 +R 10 +U 3 +R 10 +L 6 +R 5 +U 8 +D 9 +R 4 +U 9 +L 1 +U 7 +R 4 +U 2 +L 7 +D 9 +U 8 +L 7 +U 8 +L 3 +R 7 +D 7 +L 7 +D 6 +L 2 +D 5 +U 4 +R 8 +L 6 +R 7 +D 4 +U 10 +L 8 +R 10 +D 2 +R 1 +U 7 +L 5 +R 5 +L 10 +D 5 +R 10 +U 7 +L 7 +R 9 +D 2 +L 8 +R 11 +D 4 +R 6 +L 5 +R 8 +U 1 +L 6 +U 3 +L 1 +D 10 +L 9 +D 3 +U 10 +L 9 +U 8 +D 11 +U 11 +L 1 +R 2 +U 1 +L 3 +U 2 +D 1 +U 4 +R 6 +L 6 +R 7 +L 9 +R 8 +L 4 +D 11 +L 4 +U 10 +D 6 +L 10 +U 2 +R 3 +L 10 +D 5 +L 1 +D 2 +R 6 +U 2 +L 2 +U 9 +R 10 +L 4 +D 2 +R 10 +L 5 +U 2 +L 1 +D 6 +L 4 +U 5 +D 8 +U 11 +D 5 +U 10 +L 8 +R 5 +L 6 +R 5 +L 2 +R 7 +D 4 +L 9 +D 2 +R 11 +D 5 +U 6 +D 2 +L 4 +R 9 +L 2 +D 5 +R 2 +D 9 +R 8 +L 3 +U 8 +R 9 +D 8 +R 4 +D 5 +U 7 +D 7 +R 4 +D 10 +L 1 +D 5 +U 11 +L 11 +U 11 +L 10 +U 9 +L 6 +D 4 +R 6 +D 8 +U 6 +D 11 +R 2 +U 9 +L 6 +U 5 +R 10 +D 8 +L 9 +R 8 +D 6 +L 8 +D 12 +U 2 +R 1 +L 1 +U 1 +R 6 +D 3 +U 6 +D 5 +R 9 +L 12 +U 7 +R 6 +L 9 +U 1 +R 12 +D 11 +R 6 +U 11 +D 4 +L 2 +R 12 +U 5 +R 3 +U 11 +D 6 +U 9 +L 10 +U 2 +L 9 +U 9 +R 6 +L 12 +D 2 +U 10 +R 3 +U 12 +L 12 +R 4 +L 11 +D 1 +L 3 +D 11 +U 5 +D 1 +U 12 +L 12 +U 5 +R 8 +L 1 +D 1 +L 3 +U 1 +R 4 +D 4 +L 6 +R 11 +U 11 +D 2 +U 7 +L 3 +D 3 +R 10 +D 1 +U 8 +D 7 +U 6 +L 10 +R 3 +L 6 +D 10 +L 2 +U 6 +D 8 +R 2 +L 5 +U 1 +D 5 +U 10 +D 5 +L 7 +U 3 +R 6 +D 2 +U 5 +D 10 +L 5 +D 2 +R 9 +L 11 +D 3 +L 6 +R 11 +U 10 +L 12 +D 12 +U 8 +D 5 +R 1 +L 6 +D 11 +U 12 +R 11 +D 12 +L 5 +D 7 +R 10 +U 4 +L 1 +R 3 +U 9 +L 13 +U 8 +R 3 +D 4 +R 8 +D 3 +R 8 +D 13 +U 1 +R 12 +U 12 +L 8 +R 5 +D 1 +U 3 +R 9 +D 6 +U 11 +R 3 +D 12 +R 8 +L 6 +D 8 +U 6 +R 13 +L 10 +U 6 +R 5 +L 11 +U 9 +L 12 +R 8 +L 6 +R 3 +D 12 +L 9 +D 3 +U 5 +L 6 +R 7 +L 13 +D 4 +R 7 +U 5 +D 13 +R 4 +U 11 +D 8 +R 5 +D 5 +U 3 +L 6 +U 4 +R 8 +D 8 +U 9 +L 8 +U 2 +R 7 +L 2 +U 1 +D 12 +R 3 +L 2 +R 8 +D 4 +L 7 +R 8 +D 6 +U 10 +R 7 +L 9 +D 5 +R 12 +U 2 +R 10 +U 4 +L 13 +R 9 +L 12 +U 3 +R 10 +U 3 +L 8 +R 12 +U 8 +R 11 +U 5 +L 3 +D 10 +R 8 +D 4 +R 4 +U 9 +L 13 +U 5 +R 11 +L 12 +U 11 +D 9 +L 5 +R 13 +U 2 +L 1 +U 12 +R 13 +L 1 +R 2 +U 6 +R 12 +D 11 +L 8 +U 13 +L 14 +U 13 +L 3 +U 9 +L 10 +R 11 +D 6 +U 8 +D 11 +U 5 +L 11 +U 8 +L 3 +R 2 +D 11 +L 12 +U 14 +R 3 +D 1 +U 14 +R 7 +D 14 +R 4 +D 5 +L 13 +R 2 +L 13 +U 8 +L 7 +D 14 +L 2 +U 13 +D 2 +L 13 +D 13 +U 5 +L 12 +U 3 +L 6 +D 2 +U 3 +L 9 +D 14 +R 3 +L 1 +R 6 +D 3 +U 6 +D 9 +L 5 +D 11 +L 1 +D 11 +L 9 +D 8 +U 13 +D 4 +R 5 +D 14 +L 10 +U 14 +D 14 +R 1 +L 8 +U 5 +D 11 +U 8 +D 14 +L 4 +D 13 +U 13 +R 6 +U 11 +L 9 +U 6 +D 11 +R 11 +U 11 +D 14 +R 6 +L 13 +U 1 +R 11 +L 9 +R 11 +L 4 +R 14 +L 2 +D 14 +R 3 +U 9 +D 6 +U 12 +R 7 +U 9 +L 4 +D 9 +R 11 +L 9 +R 14 +L 12 +U 1 +L 10 +U 7 +R 13 +D 3 +R 8 +L 4 +R 4 +L 3 +U 1 +R 14 +D 4 +R 9 +U 3 +L 12 +U 11 +R 5 +U 4 +L 11 +D 14 +L 12 +R 7 +L 15 +R 14 +D 12 +U 10 +R 11 +D 9 +U 14 +R 5 +D 13 +L 14 +D 9 +U 1 +R 10 +U 15 +R 12 +D 13 +L 9 +R 9 +U 8 +R 2 +U 3 +R 3 +D 8 +U 14 +R 4 +L 7 +U 11 +D 6 +L 14 +D 6 +R 8 +U 8 +R 5 +L 13 +R 9 +D 6 +R 6 +L 9 +U 2 +R 13 +U 4 +D 9 +U 14 +R 15 +D 2 +R 6 +D 7 +L 3 +U 14 +D 5 +U 13 +R 8 +D 15 +U 3 +R 9 +D 10 +R 11 +U 12 +D 8 +R 3 +L 5 +D 15 +L 1 +U 6 +R 15 +D 1 +R 13 +D 1 +U 2 +R 15 +D 3 +L 4 +U 9 +D 1 +L 13 +R 11 +U 15 +R 5 +U 15 +R 13 +L 5 +U 2 +R 5 +D 11 +U 11 +L 12 +D 15 +R 11 +L 7 +D 2 +L 11 +D 2 +L 7 +U 7 +R 5 +D 8 +R 6 +L 10 +U 5 +R 3 +U 7 +R 1 +U 7 +L 5 +U 11 +R 14 +U 9 +D 8 +R 10 +L 9 +R 11 +U 6 +R 14 +U 16 +D 13 +U 16 +L 1 +D 2 +R 13 +D 11 +U 9 +R 4 +L 11 +U 2 +L 7 +R 2 +U 14 +L 11 +R 10 +L 1 +R 15 +U 9 +L 16 +R 11 +D 15 +U 10 +L 7 +R 9 +L 9 +D 16 +U 7 +D 10 +R 11 +L 3 +R 16 +L 6 +R 7 +L 7 +R 13 +L 5 +R 6 +D 15 +R 11 +D 7 +U 5 +D 11 +U 13 +R 13 +U 12 +D 10 +L 11 +D 10 +R 6 +U 10 +D 9 +U 1 +L 13 +U 13 +L 11 +U 15 +L 7 +R 2 +D 2 +U 9 +D 1 +L 15 +U 6 +D 3 +U 7 +D 6 +L 6 +U 14 +L 3 +U 16 +L 8 +D 8 +R 4 +D 1 +U 13 +L 4 +U 1 +R 15 +U 3 +D 6 +L 4 +D 12 +L 16 +D 7 +U 10 +L 3 +R 6 +L 12 +R 9 +D 1 +U 7 +L 14 +D 5 +U 15 +D 14 +L 5 +R 6 +D 4 +U 10 +L 17 +R 9 +D 1 +R 12 +U 17 +R 14 +U 4 +R 14 +U 2 +D 13 +R 6 +L 12 +D 10 +L 9 +D 17 +R 14 +D 12 +L 5 +D 17 +L 8 +U 16 +D 9 +U 7 +L 11 +R 13 +U 2 +D 15 +R 2 +L 5 +U 6 +L 5 +U 15 +D 13 +U 17 +R 17 +L 4 +U 17 +R 1 +D 16 +L 16 +R 7 +U 14 +L 3 +D 12 +L 2 +D 6 +R 10 +U 11 +R 8 +D 8 +U 3 +R 5 +U 12 +D 5 +U 14 +R 13 +U 12 +R 1 +U 4 +D 12 +L 6 +R 8 +D 9 +U 4 +D 16 +L 4 +D 7 +L 2 +U 13 +L 7 +D 16 +U 1 +D 14 +U 14 +L 10 +U 2 +D 11 +L 5 +D 14 +U 14 +L 11 +R 17 +D 3 +R 7 +D 6 +R 17 +D 4 +R 14 +L 7 +U 17 +L 6 +D 7 +L 9 +U 10 +L 4 +D 1 +L 17 +R 4 +D 13 +L 4 +D 9 +U 12 +L 6 +R 18 +L 8 +R 16 +L 14 +D 9 +L 18 +D 2 +U 4 +D 7 +R 8 +D 13 +L 17 +U 3 +D 10 +R 10 +L 13 +D 15 +L 14 +D 11 +R 7 +L 3 +R 17 +U 13 +R 14 +D 5 +L 12 +U 4 +R 17 +D 2 +U 7 +R 9 +U 16 +L 18 +D 13 +R 6 +D 8 +L 18 +D 7 +L 11 +R 9 +U 18 +L 10 +U 11 +D 10 +L 7 +D 9 +R 17 +L 4 +R 2 +U 1 +D 9 +U 16 +D 1 +U 5 +R 9 +U 13 +D 10 +U 10 +L 5 +D 1 +U 11 +L 3 +D 15 +U 2 +R 15 +D 1 +L 15 +R 16 +U 14 +L 9 +D 4 +R 15 +L 9 +U 6 +L 4 +R 13 +U 17 +D 6 +L 14 +D 18 +L 17 +D 2 +L 12 +D 11 +R 14 +U 3 +R 12 +L 9 +R 14 +L 16 +U 14 +L 9 +D 1 +L 7 +D 2 +R 2 +L 18 +D 3 +L 10 +D 15 +L 14 +U 11 +L 11 +D 3 +L 4 +R 14 +D 11 +R 8 +D 8 +L 2 +U 15 +L 15 +D 6 +U 1 +D 19 +U 5 +L 5 +U 17 +D 6 +R 5 +L 10 +R 19 +D 9 +R 12 +L 10 +R 1 +L 17 +U 14 +L 1 +D 1 +U 14 +D 14 +L 8 +D 10 +U 12 +L 18 +U 3 +D 17 +U 4 +L 13 +D 3 +R 16 +U 7 +R 19 +U 14 +D 7 +R 15 +L 19 +R 15 +U 11 +L 9 +U 15 +D 16 +U 3 +L 10 +U 1 +D 4 +U 13 +R 7 +U 15 +D 13 +R 18 +L 4 +U 11 +D 3 +L 14 +R 9 +L 8 +R 8 +U 10 +R 17 +L 16 +U 17 +D 15 +U 8 +D 5 +L 8 +R 9 +D 12 +L 2 +U 19 +L 11 +R 18 +D 14 +R 6 +D 4 +L 3 +D 15 +L 3 +R 1 +U 4 +L 6 +U 14 +L 18 +D 13 +R 12 +U 4 +L 12 +U 15 +L 15 +D 2 +L 13 +R 15 +L 3 +U 13 +R 6 +D 1 +U 12 +D 19 +U 10 +L 13 +D 9 +L 18 +U 3 +D 13 +U 2 +L 10 +D 18 +U 16 +D 9 +U 12 diff --git a/src/day9/sample.txt b/src/day9/sample.txt new file mode 100644 index 0000000..60bd43b --- /dev/null +++ b/src/day9/sample.txt @@ -0,0 +1,8 @@ +R 5 +U 8 +L 8 +D 3 +R 17 +D 10 +L 25 +U 20 diff --git a/src/day9/sample1.txt b/src/day9/sample1.txt new file mode 100644 index 0000000..9874df2 --- /dev/null +++ b/src/day9/sample1.txt @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2