aboutsummaryrefslogtreecommitdiff
path: root/src/tests/aoc-2022-09
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/aoc-2022-09')
-rw-r--r--src/tests/aoc-2022-09/Cargo.toml17
-rw-r--r--src/tests/aoc-2022-09/benches/main.rs31
-rw-r--r--src/tests/aoc-2022-09/src/lib.rs2126
-rw-r--r--src/tests/aoc-2022-09/src/types.pr.rs7
4 files changed, 0 insertions, 2181 deletions
diff --git a/src/tests/aoc-2022-09/Cargo.toml b/src/tests/aoc-2022-09/Cargo.toml
deleted file mode 100644
index f806c9c..0000000
--- a/src/tests/aoc-2022-09/Cargo.toml
+++ /dev/null
@@ -1,17 +0,0 @@
-[package]
-name = "aoc-2022-09"
-version = "0.1.0"
-edition = "2021"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-rand = { workspace = true }
-primrose-library = { path = "../../crates/library" }
-
-[dev-dependencies]
-criterion = { workspace = true }
-
-[[bench]]
-name = "main"
-harness = false
diff --git a/src/tests/aoc-2022-09/benches/main.rs b/src/tests/aoc-2022-09/benches/main.rs
deleted file mode 100644
index 6eb13e4..0000000
--- a/src/tests/aoc-2022-09/benches/main.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-use aoc_2022_09::{gen_moves, part1, part2};
-use criterion::{criterion_group, criterion_main, BatchSize, BenchmarkId, Criterion};
-use rand::{rngs::StdRng, SeedableRng};
-
-fn run_benches(c: &mut Criterion) {
- let mut rng = StdRng::seed_from_u64(42);
- for size in [100, 1000, 2000].iter() {
- c.bench_with_input(BenchmarkId::new("aoc-202209-part1", size), size, |b, &n| {
- b.iter_batched_ref(
- || gen_moves(&mut rng, n).collect::<Vec<_>>(),
- |moves| part1(moves.iter()),
- BatchSize::SmallInput,
- )
- });
-
- c.bench_with_input(BenchmarkId::new("aoc-202209-part2", size), size, |b, &n| {
- b.iter_batched_ref(
- || gen_moves(&mut rng, n).collect::<Vec<_>>(),
- |moves| part2(moves.iter()),
- BatchSize::SmallInput,
- )
- });
- }
-}
-
-criterion_group!(
- name = benches;
- config = Criterion::default().sample_size(10);
- targets = run_benches
-);
-criterion_main!(benches);
diff --git a/src/tests/aoc-2022-09/src/lib.rs b/src/tests/aoc-2022-09/src/lib.rs
deleted file mode 100644
index 9bb7364..0000000
--- a/src/tests/aoc-2022-09/src/lib.rs
+++ /dev/null
@@ -1,2126 +0,0 @@
-#![feature(type_alias_impl_trait)]
-
-use primrose_library::traits::*;
-use rand::Rng;
-use std::cmp::min;
-
-mod types;
-use types::*;
-
-pub fn part1<'a>(moves: impl Iterator<Item = &'a Move>) -> usize {
- visited_from_moves::<2>(moves)
-}
-
-pub fn part2<'a>(moves: impl Iterator<Item = &'a Move>) -> usize {
- visited_from_moves::<10>(moves)
-}
-
-fn visited_from_moves<'a, const N: usize>(moves: impl Iterator<Item = &'a Move>) -> usize {
- let mut tail_visited = Set::default();
- tail_visited.insert((0, 0));
- let mut knots = [(0, 0); N];
- for mv in moves {
- make_move(mv, &mut knots, &mut tail_visited);
- }
-
- tail_visited.len()
-}
-
-fn make_move(mv: &Move, knots: &mut [Pos], tail_visited: &mut Set<Pos>) {
- let (dir, count) = mv;
-
- for _ in 0..*count {
- // Move head of rope
- match dir {
- Direction::Up => knots[0].1 += 1,
- Direction::Down => knots[0].1 -= 1,
- Direction::Right => knots[0].0 += 1,
- Direction::Left => knots[0].0 -= 1,
- };
-
- for front_idx in 0..knots.len() - 1 {
- let (fx, fy) = knots[front_idx];
- let (bx, by) = &mut knots[front_idx + 1];
- let (dx, dy) = (fx - *bx, fy - *by);
- if (dx.abs() == 2 && dy == 0) || (dy.abs() == 2 && dx == 0) || (dy.abs() + dx.abs() > 2)
- {
- *bx += (dx.signum()) * min(dx.abs(), 1);
- *by += (dy.signum()) * min(dy.abs(), 1);
- }
- }
- tail_visited.insert(knots[knots.len() - 1]);
- }
-}
-
-pub type Pos = (i32, i32);
-pub type Move = (Direction, u8);
-
-#[derive(Debug, Clone, Copy)]
-pub enum Direction {
- Up,
- Down,
- Left,
- Right,
-}
-
-pub fn gen_moves<R: Rng>(rng: &mut R, n: usize) -> impl Iterator<Item = Move> + '_ {
- (0..n).map(|_| {
- let dir = match rng.gen_range(0..4) {
- 0 => Direction::Up,
- 1 => Direction::Down,
- 2 => Direction::Left,
- 3 => Direction::Right,
- _ => unreachable!(),
- };
- let count = rng.gen();
-
- (dir, count)
- })
-}
-
-#[cfg(test)]
-mod tests {
- use crate::*;
-
- fn parse_moves(input: &str) -> impl Iterator<Item = Move> + '_ {
- input.lines().map(|x| {
- let (dir, count) = x.split_once(' ').unwrap();
- let count = count.parse().unwrap();
-
- (
- match dir {
- "L" => Direction::Left,
- "R" => Direction::Right,
- "U" => Direction::Up,
- "D" => Direction::Down,
- _ => panic!("invalid direction, {}", dir),
- },
- count,
- )
- })
- }
-
- #[test]
- fn test_small() {
- let moves = parse_moves(SMALL_INPUT).collect::<Vec<_>>();
- assert_eq!(part1(moves.iter()), 13, "part 1");
- assert_eq!(part2(moves.iter()), 1, "part 2");
- }
-
- #[test]
- fn test_large() {
- let moves = parse_moves(LARGE_INPUT).collect::<Vec<_>>();
- assert_eq!(part1(moves.iter()), 6236, "part 1");
- assert_eq!(part2(moves.iter()), 2449, "part 2");
- }
-
- const SMALL_INPUT: &str = "R 4
-U 4
-L 3
-D 1
-R 4
-D 1
-L 5
-R 2";
-
- const LARGE_INPUT: &str = "L 1
-R 1
-U 1
-R 1
-L 1
-U 2
-L 2
-R 1
-U 2
-D 2
-R 2
-D 2
-R 1
-U 1
-R 2
-L 1
-D 1
-L 2
-R 1
-D 1
-R 1
-U 1
-D 1
-R 1
-D 1
-R 1
-D 2
-L 2
-D 1
-R 2
-L 1
-R 2
-U 2
-R 1
-U 1
-D 2
-U 1
-R 1
-D 1
-R 2
-D 1
-L 2
-R 1
-U 1
-L 1
-U 1
-D 1
-U 1
-D 1
-L 1
-D 1
-R 1
-D 2
-L 1
-D 1
-L 1
-D 1
-R 1
-U 1
-D 2
-R 1
-D 1
-L 2
-D 2
-U 1
-L 1
-U 1
-L 1
-R 2
-U 1
-L 1
-D 1
-R 2
-L 2
-U 1
-D 2
-R 1
-U 1
-R 2
-L 2
-U 1
-L 2
-R 2
-D 1
-L 1
-R 1
-D 2
-L 2
-U 1
-L 2
-R 1
-U 2
-D 1
-U 2
-D 2
-L 2
-D 1
-R 1
-L 2
-R 2
-L 2
-R 2
-L 2
-R 2
-L 1
-U 1
-R 2
-U 1
-D 1
-R 2
-D 2
-R 2
-D 2
-L 2
-R 2
-U 3
-R 1
-U 3
-D 3
-U 1
-L 2
-D 2
-R 3
-D 1
-R 3
-U 1
-L 3
-R 3
-L 1
-U 3
-R 3
-U 3
-R 3
-U 2
-L 2
-D 2
-R 3
-U 2
-L 2
-U 3
-L 2
-R 1
-U 3
-R 2
-U 3
-L 2
-R 2
-U 1
-L 3
-R 3
-L 3
-R 2
-L 3
-D 3
-L 2
-D 1
-R 1
-D 3
-U 3
-R 3
-D 2
-L 2
-D 2
-R 1
-D 1
-U 3
-R 1
-U 2
-L 3
-U 3
-L 2
-D 1
-L 3
-R 2
-D 2
-L 2
-D 3
-L 3
-U 1
-D 3
-U 3
-L 3
-R 2
-D 2
-R 3
-D 2
-R 3
-U 2
-R 1
-L 2
-R 2
-L 1
-D 3
-U 2
-L 2
-U 3
-L 1
-D 1
-L 2
-R 3
-L 1
-D 2
-U 1
-D 3
-U 1
-D 3
-L 1
-U 1
-R 3
-L 2
-U 3
-L 3
-U 1
-L 2
-D 1
-R 2
-L 1
-R 2
-L 2
-D 3
-U 2
-D 2
-U 3
-L 4
-D 4
-R 3
-D 4
-R 1
-L 2
-U 2
-R 1
-U 4
-D 4
-U 4
-D 4
-R 4
-L 2
-U 3
-D 1
-R 4
-D 2
-L 2
-D 1
-L 4
-R 3
-U 2
-D 4
-U 3
-R 3
-L 1
-R 1
-L 2
-D 4
-U 2
-R 1
-L 3
-D 3
-R 4
-U 2
-L 1
-D 3
-R 4
-D 2
-U 3
-D 1
-L 2
-D 2
-R 2
-D 3
-R 2
-U 2
-R 1
-L 1
-U 2
-D 2
-U 3
-D 1
-U 3
-D 1
-R 4
-D 2
-U 1
-L 3
-D 4
-R 3
-D 4
-U 2
-D 1
-R 2
-U 3
-L 3
-D 1
-U 2
-L 3
-D 1
-L 3
-D 1
-U 1
-D 4
-R 1
-D 4
-L 2
-R 3
-D 4
-R 2
-L 3
-D 4
-U 3
-L 4
-U 1
-L 3
-R 1
-L 1
-D 2
-L 1
-U 2
-D 3
-L 1
-R 4
-L 1
-D 2
-U 2
-L 3
-U 3
-L 1
-R 4
-U 3
-D 3
-R 1
-L 2
-R 4
-U 2
-L 3
-U 4
-L 2
-R 4
-D 5
-U 1
-R 2
-D 5
-L 5
-R 1
-D 3
-U 3
-L 3
-U 5
-R 1
-D 1
-R 3
-U 3
-D 1
-R 1
-L 4
-R 1
-L 3
-U 4
-L 3
-R 5
-D 3
-R 2
-U 1
-R 2
-D 2
-L 4
-R 2
-U 1
-L 3
-D 4
-R 4
-L 1
-R 3
-U 3
-D 2
-R 3
-D 3
-U 1
-L 5
-U 1
-L 5
-R 5
-D 1
-U 1
-R 5
-D 4
-L 1
-R 4
-L 5
-D 5
-L 2
-D 1
-L 3
-D 5
-L 4
-R 4
-D 1
-U 1
-D 4
-U 1
-R 4
-L 2
-D 4
-U 1
-L 3
-R 3
-L 3
-R 3
-D 2
-R 3
-L 5
-R 1
-L 1
-R 3
-D 5
-U 5
-L 3
-U 3
-L 5
-D 3
-L 2
-U 5
-D 5
-U 5
-D 4
-U 4
-R 5
-U 3
-D 5
-R 1
-L 4
-U 1
-L 4
-R 2
-D 1
-U 4
-L 5
-D 2
-R 1
-U 1
-R 3
-U 1
-R 4
-U 4
-L 1
-R 2
-U 5
-D 2
-L 5
-U 4
-D 2
-R 1
-D 1
-U 6
-D 5
-L 4
-U 5
-R 1
-L 3
-D 2
-R 3
-U 6
-L 2
-R 6
-D 1
-R 5
-D 1
-L 1
-R 2
-L 4
-R 3
-L 4
-D 6
-R 5
-U 1
-L 4
-D 2
-L 2
-D 3
-L 2
-D 5
-R 4
-D 3
-L 2
-D 4
-R 1
-U 5
-L 5
-U 5
-D 2
-L 3
-D 4
-L 3
-U 4
-L 4
-U 6
-D 6
-U 4
-R 2
-D 3
-U 1
-R 4
-D 3
-R 1
-D 2
-R 3
-L 2
-D 2
-L 4
-D 5
-L 5
-R 2
-L 1
-R 2
-D 2
-R 4
-U 4
-R 5
-L 4
-D 1
-L 6
-R 4
-D 2
-R 6
-L 6
-D 3
-R 2
-D 2
-U 4
-R 2
-U 2
-L 2
-R 5
-D 5
-U 6
-D 6
-L 5
-R 1
-U 3
-L 1
-D 1
-U 2
-R 5
-L 2
-D 2
-U 4
-R 2
-D 2
-U 1
-D 2
-R 3
-L 6
-U 1
-D 6
-R 3
-D 6
-R 1
-D 7
-R 7
-L 4
-R 4
-D 5
-U 6
-R 2
-L 3
-R 5
-L 5
-U 6
-D 3
-U 5
-D 3
-U 5
-R 7
-L 5
-U 7
-L 6
-U 5
-D 1
-L 7
-U 6
-L 3
-D 1
-L 6
-U 4
-D 1
-U 1
-R 1
-L 3
-D 6
-L 6
-R 3
-D 3
-U 2
-R 1
-D 6
-U 7
-R 6
-L 4
-R 4
-D 7
-R 1
-D 5
-U 6
-D 4
-R 6
-L 2
-U 4
-D 7
-R 5
-D 6
-U 7
-R 6
-D 6
-U 1
-D 4
-L 2
-U 2
-R 7
-U 1
-L 1
-U 1
-L 7
-D 3
-U 5
-D 5
-L 1
-D 4
-L 3
-U 7
-L 6
-R 7
-U 6
-R 1
-L 3
-R 1
-D 3
-L 7
-R 4
-L 3
-D 2
-L 7
-D 2
-R 5
-L 7
-D 6
-L 6
-D 3
-L 3
-D 5
-U 3
-L 5
-R 6
-L 1
-U 5
-R 4
-U 2
-D 3
-R 5
-L 4
-U 5
-D 7
-R 1
-L 3
-U 5
-D 3
-L 6
-R 2
-L 2
-U 6
-R 3
-U 7
-R 3
-D 1
-L 2
-U 7
-L 6
-D 3
-L 8
-R 6
-D 3
-L 5
-R 5
-U 5
-R 8
-D 7
-R 7
-U 8
-L 5
-D 6
-R 6
-L 6
-D 8
-U 1
-R 4
-L 3
-R 6
-L 6
-D 5
-R 4
-D 8
-L 4
-R 4
-D 3
-L 2
-U 6
-L 8
-R 1
-U 5
-L 4
-D 8
-R 6
-D 5
-U 6
-L 5
-R 1
-L 8
-U 7
-R 6
-D 4
-U 2
-D 8
-U 3
-D 7
-R 6
-D 8
-R 8
-U 8
-D 7
-L 3
-D 4
-L 1
-U 4
-R 4
-U 2
-D 6
-R 1
-D 8
-R 2
-D 4
-R 5
-L 1
-R 7
-L 3
-D 1
-U 1
-R 7
-U 5
-D 1
-L 2
-R 8
-D 8
-L 5
-U 8
-D 4
-L 5
-D 3
-U 2
-L 7
-R 2
-L 5
-U 3
-R 3
-U 6
-R 6
-D 4
-R 3
-U 4
-D 5
-U 6
-R 3
-L 4
-R 5
-L 4
-R 8
-U 6
-L 6
-U 1
-L 5
-R 3
-U 1
-D 5
-U 8
-R 1
-L 2
-R 3
-L 8
-U 6
-L 4
-R 3
-L 3
-R 7
-L 9
-D 5
-R 8
-L 5
-U 7
-D 7
-R 6
-L 8
-U 4
-D 5
-R 8
-L 4
-R 8
-U 9
-R 9
-L 8
-D 9
-L 9
-D 6
-R 1
-L 8
-U 4
-L 6
-U 5
-R 9
-L 5
-D 6
-R 9
-D 9
-U 6
-L 1
-U 8
-L 7
-R 9
-U 4
-R 6
-U 1
-R 5
-U 5
-L 4
-R 4
-D 7
-L 6
-U 3
-R 9
-U 1
-L 6
-U 5
-L 5
-U 2
-L 3
-U 2
-D 6
-R 8
-L 5
-U 4
-D 4
-R 4
-D 6
-L 8
-U 9
-R 4
-L 3
-D 1
-U 2
-D 5
-U 3
-D 3
-L 2
-D 3
-L 4
-D 5
-L 9
-D 9
-U 2
-D 8
-R 4
-L 8
-R 9
-D 7
-L 3
-D 2
-R 2
-L 4
-D 7
-R 6
-D 8
-R 9
-L 3
-D 5
-U 1
-L 8
-D 6
-R 9
-U 6
-R 9
-D 6
-L 9
-U 5
-D 10
-L 4
-U 10
-R 3
-U 7
-D 4
-L 3
-R 8
-L 4
-U 10
-R 8
-L 10
-U 8
-R 5
-L 8
-U 6
-L 5
-D 7
-L 6
-U 6
-L 9
-R 8
-U 6
-D 7
-L 10
-R 2
-D 7
-L 8
-U 5
-L 2
-D 2
-U 7
-D 6
-R 7
-D 2
-U 3
-R 10
-D 2
-U 6
-D 6
-L 8
-D 2
-L 2
-D 10
-L 2
-D 1
-L 10
-D 6
-R 6
-L 7
-D 9
-R 2
-D 5
-U 2
-R 4
-L 4
-D 1
-L 3
-R 10
-U 9
-L 4
-D 10
-L 10
-D 4
-U 2
-R 1
-L 4
-D 6
-U 2
-L 6
-R 4
-U 1
-L 9
-R 7
-L 8
-U 5
-R 1
-D 6
-L 4
-U 9
-D 1
-L 5
-R 10
-D 4
-L 6
-U 8
-R 4
-L 5
-D 10
-R 8
-D 8
-R 4
-D 5
-R 7
-L 10
-D 3
-R 1
-L 4
-R 8
-L 10
-D 2
-L 3
-D 6
-L 8
-R 10
-L 2
-D 8
-R 5
-L 8
-D 1
-U 6
-D 11
-U 7
-L 1
-U 6
-R 9
-L 8
-R 5
-U 9
-D 5
-L 10
-U 6
-L 3
-D 4
-U 6
-D 10
-L 2
-D 9
-L 5
-R 8
-D 1
-R 1
-U 1
-D 4
-R 4
-U 6
-L 9
-U 7
-R 11
-L 8
-D 3
-R 9
-L 11
-U 9
-L 4
-D 10
-U 9
-L 7
-R 9
-U 1
-R 8
-U 4
-L 3
-U 2
-D 7
-R 6
-U 1
-D 10
-U 9
-R 6
-L 6
-D 4
-U 3
-L 10
-R 10
-U 6
-R 8
-L 9
-R 2
-D 7
-R 4
-U 6
-R 2
-L 4
-D 1
-L 10
-U 9
-R 11
-U 11
-R 1
-D 5
-L 8
-U 3
-R 1
-U 4
-D 10
-U 6
-L 8
-R 4
-L 7
-R 8
-D 3
-L 9
-U 4
-L 6
-R 2
-D 2
-U 9
-D 6
-R 8
-L 2
-U 7
-L 2
-R 8
-L 7
-D 5
-R 10
-U 5
-L 10
-U 6
-R 8
-U 9
-L 7
-D 11
-U 10
-L 4
-D 5
-R 4
-L 7
-U 5
-D 8
-R 6
-D 9
-L 4
-U 9
-R 6
-D 1
-U 6
-R 8
-U 10
-D 6
-U 10
-L 3
-D 1
-L 1
-R 9
-D 10
-L 10
-U 12
-D 3
-L 2
-U 6
-L 9
-U 2
-R 6
-D 8
-R 11
-L 1
-U 3
-R 1
-U 9
-R 12
-U 3
-D 11
-U 3
-D 10
-U 12
-L 11
-R 9
-U 9
-D 11
-L 8
-D 4
-R 4
-U 4
-D 1
-L 7
-R 10
-L 4
-R 4
-U 11
-D 3
-L 6
-R 10
-L 9
-R 11
-U 6
-D 2
-U 2
-L 3
-D 11
-U 6
-D 12
-L 5
-R 5
-D 6
-R 5
-U 2
-R 8
-L 7
-D 7
-R 3
-D 8
-U 6
-D 1
-U 1
-D 4
-L 3
-D 12
-L 8
-D 8
-U 7
-R 1
-D 10
-L 5
-D 7
-L 1
-U 4
-R 12
-L 8
-U 2
-L 2
-U 1
-L 8
-U 3
-L 12
-R 3
-D 11
-R 1
-U 4
-D 12
-L 3
-U 2
-R 5
-U 2
-R 7
-U 8
-L 5
-R 1
-D 5
-R 12
-D 8
-R 9
-D 7
-L 2
-R 2
-U 9
-D 6
-U 6
-R 2
-D 2
-R 9
-D 4
-R 12
-D 13
-R 9
-L 3
-D 8
-L 13
-U 2
-R 10
-U 12
-D 12
-U 3
-L 6
-D 8
-U 1
-L 12
-D 9
-L 7
-R 2
-D 4
-R 5
-L 7
-R 12
-U 4
-L 7
-D 4
-U 10
-L 2
-D 1
-U 5
-R 5
-U 2
-L 9
-D 10
-L 1
-R 7
-L 6
-D 1
-L 12
-R 6
-U 10
-R 2
-D 10
-R 5
-L 3
-R 8
-D 1
-R 12
-L 7
-U 5
-L 11
-D 4
-U 11
-D 1
-U 11
-L 1
-D 11
-U 11
-D 4
-U 8
-R 5
-D 6
-L 12
-R 5
-D 10
-L 2
-D 5
-R 10
-U 6
-D 6
-R 4
-D 7
-L 2
-D 5
-U 2
-R 9
-L 11
-U 13
-D 9
-L 11
-D 8
-L 2
-D 4
-R 13
-L 5
-U 12
-R 11
-U 5
-L 8
-U 5
-D 7
-U 1
-R 9
-D 4
-U 3
-R 9
-L 3
-D 7
-R 8
-D 7
-L 2
-U 4
-L 12
-U 13
-L 12
-R 8
-L 3
-R 12
-L 4
-U 12
-R 13
-D 10
-L 8
-U 12
-R 5
-L 1
-U 2
-L 3
-U 2
-D 12
-L 12
-U 11
-L 2
-R 6
-U 3
-L 2
-R 7
-U 7
-L 3
-R 8
-L 11
-D 2
-U 1
-R 12
-D 1
-R 4
-L 13
-U 14
-R 14
-D 12
-R 12
-D 11
-L 11
-U 2
-L 6
-D 8
-L 5
-D 7
-R 2
-L 14
-U 12
-R 13
-L 7
-D 2
-U 4
-D 5
-R 5
-L 7
-R 7
-U 1
-R 10
-D 11
-L 7
-U 2
-R 5
-L 11
-U 11
-R 9
-U 9
-R 12
-D 14
-R 5
-L 9
-U 2
-D 12
-L 6
-U 7
-R 5
-L 10
-D 10
-U 4
-D 13
-L 13
-D 3
-R 8
-D 10
-U 12
-L 14
-U 7
-D 6
-R 4
-U 11
-R 2
-L 5
-D 12
-R 4
-L 4
-D 5
-L 12
-U 3
-L 3
-U 7
-R 4
-L 2
-R 7
-L 5
-D 5
-R 9
-L 5
-D 12
-R 3
-U 1
-D 6
-U 2
-R 10
-L 4
-U 12
-R 15
-L 2
-R 3
-D 8
-L 13
-D 3
-R 5
-D 5
-L 5
-U 7
-L 4
-R 10
-D 11
-L 3
-R 1
-U 4
-D 15
-L 8
-U 10
-L 5
-D 1
-R 5
-D 15
-R 3
-U 9
-R 4
-D 3
-L 15
-U 6
-D 10
-U 2
-R 6
-U 10
-L 12
-R 8
-D 12
-R 14
-U 10
-D 1
-L 1
-D 8
-U 3
-R 11
-D 7
-L 5
-D 14
-R 1
-D 8
-R 6
-U 6
-D 1
-U 14
-R 12
-L 5
-U 5
-L 14
-U 1
-D 3
-R 6
-U 4
-R 9
-L 13
-R 2
-U 10
-R 11
-U 7
-D 8
-U 14
-L 4
-R 3
-U 6
-R 2
-D 14
-U 10
-D 13
-U 8
-R 12
-L 12
-U 6
-L 4
-U 5
-D 6
-U 8
-L 12
-D 1
-L 3
-R 4
-L 11
-R 5
-D 3
-U 6
-D 15
-R 14
-U 8
-R 10
-U 15
-R 13
-L 13
-U 4
-D 3
-U 4
-D 1
-U 5
-R 5
-D 4
-R 2
-D 13
-R 7
-D 10
-U 3
-R 15
-D 3
-U 13
-R 16
-U 2
-D 6
-L 13
-R 8
-L 5
-R 1
-U 7
-R 6
-U 6
-R 10
-U 5
-L 14
-R 12
-U 8
-R 13
-U 4
-L 10
-R 16
-L 15
-D 7
-R 14
-D 8
-U 8
-L 15
-R 2
-U 11
-L 6
-R 6
-D 2
-U 9
-D 12
-L 10
-U 7
-R 8
-L 4
-D 5
-R 13
-L 9
-U 15
-D 11
-R 11
-D 8
-L 10
-R 14
-D 3
-R 10
-U 1
-R 11
-L 16
-R 12
-D 15
-L 13
-U 2
-L 11
-U 15
-D 9
-R 1
-D 13
-L 16
-U 9
-D 2
-R 5
-U 9
-R 11
-L 16
-U 5
-R 11
-U 8
-L 15
-U 1
-L 11
-U 3
-L 4
-U 9
-L 5
-U 11
-D 9
-U 4
-L 14
-U 8
-L 16
-D 9
-U 5
-L 14
-R 13
-U 8
-L 4
-R 9
-L 4
-R 7
-D 15
-U 14
-D 8
-U 6
-R 11
-L 15
-D 10
-R 2
-L 12
-R 11
-D 7
-R 11
-L 4
-R 4
-D 4
-R 3
-U 15
-L 6
-R 8
-L 5
-U 13
-D 6
-R 1
-D 15
-L 9
-U 2
-L 13
-R 10
-U 8
-R 15
-D 16
-L 13
-U 13
-L 12
-R 10
-U 16
-L 10
-R 14
-D 17
-R 4
-D 16
-U 17
-R 8
-D 10
-R 11
-L 10
-U 17
-L 11
-U 3
-L 4
-U 2
-D 10
-R 15
-U 1
-R 5
-L 12
-D 4
-R 1
-U 15
-R 13
-L 17
-R 15
-D 4
-L 14
-R 3
-D 1
-U 14
-R 11
-D 12
-L 7
-D 11
-R 12
-U 1
-R 5
-L 11
-D 9
-U 8
-R 1
-U 4
-L 15
-R 12
-U 17
-R 4
-U 14
-L 4
-D 16
-R 9
-U 9
-D 11
-L 7
-D 16
-R 10
-L 10
-R 15
-U 10
-R 6
-L 4
-R 6
-L 12
-U 9
-R 15
-D 12
-L 14
-U 14
-D 6
-U 4
-R 17
-U 2
-L 5
-R 13
-D 15
-U 13
-L 5
-D 3
-L 7
-U 12
-R 13
-D 15
-U 15
-L 17
-U 17
-L 6
-R 2
-U 17
-R 7
-L 15
-U 17
-R 11
-L 2
-U 1
-D 4
-U 2
-R 10
-L 9
-D 18
-U 5
-D 7
-R 18
-L 11
-D 2
-U 13
-D 12
-R 10
-D 2
-R 9
-L 3
-D 9
-R 9
-L 17
-R 4
-L 7
-D 16
-L 5
-R 3
-L 8
-U 7
-R 8
-L 1
-D 12
-U 13
-R 8
-D 18
-U 7
-R 6
-D 7
-L 7
-D 8
-R 16
-L 13
-R 6
-U 1
-L 9
-U 9
-L 12
-D 13
-R 18
-L 7
-D 18
-U 17
-R 18
-D 11
-R 1
-D 4
-U 3
-L 7
-D 17
-R 8
-U 11
-D 7
-L 4
-R 12
-U 10
-L 15
-R 14
-U 16
-D 4
-L 10
-U 6
-D 18
-R 7
-U 13
-R 11
-D 14
-L 5
-U 5
-L 7
-R 15
-L 16
-U 6
-D 9
-L 17
-R 4
-L 16
-D 10
-U 16
-D 17
-R 7
-L 16
-U 6
-L 15
-R 13
-U 8
-L 14
-R 12
-U 5
-D 17
-R 13
-D 12
-U 12
-L 16
-R 8
-U 4
-D 6
-U 10
-D 14
-R 18
-L 17
-U 15
-L 5
-U 7
-D 15
-U 10
-R 18
-L 11
-D 10
-R 12
-U 15
-D 11
-U 7
-D 3
-R 2
-U 5
-R 12
-U 15
-R 12
-U 19
-L 6
-U 18
-D 8
-L 7
-D 2
-R 1
-L 16
-D 5
-L 9
-U 11
-L 6
-U 7
-L 2
-D 18
-L 1
-U 19
-D 15
-U 8
-R 5
-U 13
-L 7
-R 14
-U 2
-D 10
-U 16
-D 3
-R 8
-L 10
-D 17
-U 16
-D 6
-R 18
-D 5
-L 5
-D 4
-L 6
-U 17
-D 7
-R 15
-D 5
-R 18
-L 6
-U 15
-L 3
-U 13
-L 15
-R 5
-D 9
-R 11
-U 15
-L 19
-D 11
-L 8
-D 14
-R 7
-L 16
-D 5
-R 13
-D 5
-L 9
-D 3
-L 3
-R 12
-U 17
-R 8
-L 11
-U 2
-R 9
-L 3
-D 6
-L 9
-U 11
-R 6
-U 19
-R 6
-L 12
-U 5
-R 4
-U 4
-L 16
-R 17
-D 12
-U 11
-R 4
-D 11
-U 4
-R 8
-U 9
-R 12
-U 13
-L 2
-D 9
-L 2";
-}
diff --git a/src/tests/aoc-2022-09/src/types.pr.rs b/src/tests/aoc-2022-09/src/types.pr.rs
deleted file mode 100644
index d4225a9..0000000
--- a/src/tests/aoc-2022-09/src/types.pr.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-/*SPEC*
-property unique<T> {
- \c <: (Container) -> ((for-all-elems c) \a -> ((unique-count? a) c))
-}
-
-type Set<T> = {c impl (Container) | (unique c)}
- *ENDSPEC*/