advent_of_code_2024::day_15

Trait Warehouse

source
trait Warehouse: Clone {
    // Required methods
    fn boxes(&self) -> HashSet<(usize, usize)>;
    fn move_box(&mut self, pos: &(usize, usize), mv: &Move) -> bool;
    fn move_robot(&self, mv: &Move) -> Self;

    // Provided methods
    fn sum_gps(&self) -> usize { ... }
    fn apply_moves(&self, moves: &Vec<Move>) -> Self { ... }
    fn parse_warehouse(
        input: &str,
    ) -> (HashSet<(usize, usize)>, HashSet<(usize, usize)>, (usize, usize), usize, usize) { ... }
}

Required Methods§

source

fn boxes(&self) -> HashSet<(usize, usize)>

Accessor needed by Warehouse::sum_gps

source

fn move_box(&mut self, pos: &(usize, usize), mv: &Move) -> bool

Move a box in the provided direction if not blocked, pushing further boxes as needed

source

fn move_robot(&self, mv: &Move) -> Self

Move a robot in the provided direction if not blocked, pushing boxes as needed

Provided Methods§

source

fn sum_gps(&self) -> usize

The “GPS” coordinates of all boxes in the Warehouse

source

fn apply_moves(&self, moves: &Vec<Move>) -> Self

Return a copy of this Warehouse after the robot has followed the list of moves

source

fn parse_warehouse( input: &str, ) -> (HashSet<(usize, usize)>, HashSet<(usize, usize)>, (usize, usize), usize, usize)

Common logic for parsing a Warehouse, used by SingleWarehouse::from_str, and DoubleWarehouse::from_str.

Object Safety§

This trait is not object safe.

Implementors§