Add 9 first days
This commit is contained in:
1
3-toboggan_trajectory/.gitignore
vendored
Normal file
1
3-toboggan_trajectory/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/target
|
||||
5
3-toboggan_trajectory/Cargo.lock
generated
Normal file
5
3-toboggan_trajectory/Cargo.lock
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "toboggan_trajectory"
|
||||
version = "0.1.0"
|
||||
9
3-toboggan_trajectory/Cargo.toml
Normal file
9
3-toboggan_trajectory/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "toboggan_trajectory"
|
||||
version = "0.1.0"
|
||||
authors = ["Guilhem MARION <gmarion@netc.fr>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
323
3-toboggan_trajectory/data/input.txt
Normal file
323
3-toboggan_trajectory/data/input.txt
Normal file
@@ -0,0 +1,323 @@
|
||||
.#.#....##.......#..........#..
|
||||
...#...........##...#..#.......
|
||||
#.####......##.#...#......#.#..
|
||||
##.....#.#.#..#.#............#.
|
||||
##.....#....#.........#...##...
|
||||
###..#.....#....#..............
|
||||
..........#..#.#..#.#....#.....
|
||||
##.....#....#.#...#.##.........
|
||||
#...#......#....##....#..#.#...
|
||||
.##.##...#....##..#.#.....#...#
|
||||
.....#.#..........##.#........#
|
||||
.##..................#..#..##.#
|
||||
#.#..........##....#.####......
|
||||
.#......#.#......#.........#...
|
||||
#....#..##.##..##........#.#...
|
||||
##..#.##..#...#..####.#..#.....
|
||||
###....#.###.##...........##..#
|
||||
.....#.##.....##.#..#####....##
|
||||
....#.###....#..##....##...#...
|
||||
..###.#...##.....#.##..#..#.#..
|
||||
#...#..#..#.........#..#.......
|
||||
##..#.#.....#.#.#.......#...#.#
|
||||
...#...##.#........#...#.......
|
||||
..#..#.#..#...#...#...........#
|
||||
........#.....#......#...##....
|
||||
#........##.##.#.#...#...#.....
|
||||
####.......#.##.###.#....#.....
|
||||
...#...........#...#......#...#
|
||||
##...#...#............#.......#
|
||||
....#...........##.......#.....
|
||||
###......#.....#....#...#.#...#
|
||||
.....##..........#.......#.#...
|
||||
##.##.##...#......#....#.......
|
||||
##..#.#..#......#...#..#.......
|
||||
....#....##.##............####.
|
||||
..#.###..#.##.###..#.##.......#
|
||||
#.##..#.#.....#..#.....##......
|
||||
..##..#.....##.#.##........#...
|
||||
.#..#.#......#..#............#.
|
||||
.....#..#.#...#....#.##.#......
|
||||
.#...##.#..#.#...##...##..##...
|
||||
###............#.#..#..#...#...
|
||||
..#..##.####.#.....#.....##.###
|
||||
#....#.##..##....#..#...#.##.#.
|
||||
.....#.##.........##...##......
|
||||
.........####.#....#.#......#.#
|
||||
.........#.#..#...#.#..#.#....#
|
||||
.#.....#..##.##..##....#.......
|
||||
..........##......#.##.###....#
|
||||
.##...###..##.#...#........##..
|
||||
..............#.#....#.#.###.##
|
||||
..##.##.......#.#......##...#..
|
||||
.#.....#..##..#.###...#..#.##.#
|
||||
#.....#.#..#...#........#...#..
|
||||
.#......#....#.#.....###...#..#
|
||||
..##.#....#..##......#.....#...
|
||||
..#.#.##..#.....#.####..###....
|
||||
.........#......#..#...........
|
||||
..#........#.##.#.....##.##..#.
|
||||
.......#.........#....#...#.#..
|
||||
.##.....#.#....#.#.......#.....
|
||||
..........#.##........##...##..
|
||||
###..###.#.#..#..#####.##.#.##.
|
||||
..##..##.#.#...#..#.#.#......#.
|
||||
#..#..#..#..##..#.....#......#.
|
||||
..#....#.##..#......##.........
|
||||
..#.##......#...##.#......#....
|
||||
.......#..#.##.#.....#.........
|
||||
.......#.#.#.###...##......#...
|
||||
.....#.#..........#..#...#.....
|
||||
....##..........#..........##..
|
||||
..#......#.....#.##.#..#...#.#.
|
||||
....#.....#..#...#..#.#.##..###
|
||||
.####....#........#...#........
|
||||
...##.#.##.#..#...##...#.##....
|
||||
....#...#...#.#.#.#...#..#.....
|
||||
.....#...#.#.....#.#........##.
|
||||
..#.#.......###.#.....##.......
|
||||
......#.........##....#....#..#
|
||||
.............##.....##.........
|
||||
.........##...##.......#.....#.
|
||||
##.........#..........#.###..##
|
||||
...#.....#......#....#..##.....
|
||||
##..#...#...##.#.....#.#......#
|
||||
..#...##.#.......#.#......#.##.
|
||||
......#.......#.#...........#..
|
||||
..........#.....##............#
|
||||
#........#...#..#.......###.##.
|
||||
.##...........#.#........#.#.#.
|
||||
...#..##...#.#....#####.#......
|
||||
.....##...###...#..#.##...####.
|
||||
...#....#.....#..#.......#.....
|
||||
#....#....#...#..#..#.######..#
|
||||
#.###...........#......#...#..#
|
||||
.#.#.#.#..#....#....#...##.#...
|
||||
.#..#.........#.#....###...#...
|
||||
......#..##.##..........#....##
|
||||
.....#......##....##.....#...#.
|
||||
.#...#.#.#....##....#..#....#.#
|
||||
..................#..###.#..##.
|
||||
..#.........#......#....#..###.
|
||||
#.#.....#..#..#....###..###....
|
||||
..##..##.#..##........##...##..
|
||||
##..#........##..###..#.....#.#
|
||||
..#..###..#......#....#...#...#
|
||||
#..#.#..............##.#..#.#..
|
||||
.....####....#...####.....#.#..
|
||||
.....#....##.#......###........
|
||||
##.##...#.#.#.#.......#....##..
|
||||
.#......#...#.#....#..##.#.##.#
|
||||
#.#.##.#.#......#..##........##
|
||||
...##.....#.....#...#..###...#.
|
||||
........###.....#.....#...##..#
|
||||
.....#.##.##......#.#....#...#.
|
||||
.#....##.......#..#.####.......
|
||||
.#..#....#..........#......#.#.
|
||||
.#.##.##.....###.#.#...........
|
||||
.........#......#..##..........
|
||||
....#...##.#.#.#..#.#.........#
|
||||
..#.....#.##...#..#..#.###....#
|
||||
...#.##......#.....##....#.....
|
||||
###............#.#....#...#....
|
||||
.......#.....#..#.#.#....#..#.#
|
||||
...#......#.#..##..#....#...#.#
|
||||
............##........##..##...
|
||||
..#..#.##..#......###..#.......
|
||||
........#.........#............
|
||||
..#...#.#########.#...##..###..
|
||||
#....#......#.......#.#.....#..
|
||||
#.#..#....###.###....#...#.#...
|
||||
#...###.#.#.......#.##......#..
|
||||
.................#...#.#.#.....
|
||||
##....#...#........#....#.#..#.
|
||||
......#.....#...#..........#.#.
|
||||
##..........#...#..........#.##
|
||||
..#.#.##.#....#.#......#...##..
|
||||
.....#.......#..#.....#........
|
||||
#.##.#..##..#.......##.........
|
||||
....#......#..#..#.#...#.......
|
||||
...#....#................###...
|
||||
.##.....#.#....#.#..........##.
|
||||
...#..#....#.##.##......#......
|
||||
..#.#....#.......#.#..##.......
|
||||
....#.....#..........##.#.#####
|
||||
#.....................##..#..#.
|
||||
.###..#.##.......##.#...#..#...
|
||||
...###.......#..#...#......#..#
|
||||
#..#...#.#..#.#..#..#.##.......
|
||||
#...##.......#..#..#.##..###...
|
||||
......#....#.#.#........#.##..#
|
||||
..##..#....#....#..#.#..#......
|
||||
..##.#...#.#######..#...#.....#
|
||||
..#....#..#.........#..##......
|
||||
...#....#.#......#..#..#.#.....
|
||||
#..#....#........#.#..##....###
|
||||
#....#..##......##.##.....#.###
|
||||
...#.#..........#..#.#.#.#.##..
|
||||
......##..#.#..#.#....#....#...
|
||||
##....#....#..#..#.##......#...
|
||||
....#.#..##.#.#...###....##.#..
|
||||
...#.......##..#.......#...#...
|
||||
......##.......#..##.....#...#.
|
||||
...#.#...#...........#...#.....
|
||||
.#....#...#......##.##..###..#.
|
||||
.#..........#...#...#...##.##..
|
||||
.....###..#.....#..##....#.####
|
||||
..#.###..#..##..##.....#.#.....
|
||||
.............#.###...##.#.....#
|
||||
....###.......###.#.....#..#.#.
|
||||
........##.#.........#.....###.
|
||||
.....###.#..#.....#...#..#.....
|
||||
.#....#..##.#..#.#....#.......#
|
||||
........#......#.#..#.#..#...##
|
||||
...#.##.##......#..............
|
||||
.#.....##.#.....#..#......##...
|
||||
#..#..#.....#.....#.....###....
|
||||
.##...........#..#.##.....#....
|
||||
..#.#......#.#...#.##.#..#...##
|
||||
...#..........#.....#..........
|
||||
#.#.#.#.#...#....#...#.....##..
|
||||
#......##...#...#..........#.#.
|
||||
....##........#.#..............
|
||||
#..#.#.#..#........##......#.##
|
||||
........####...##.#.....#......
|
||||
....#........#.#..#..##..#.#...
|
||||
.#.....#..###...#..#.....#..#..
|
||||
#......###.#..#....#..#.#......
|
||||
....#.....##.##..#...#.#..##.#.
|
||||
..##..#...#.#......#....#...#.#
|
||||
#..##...##..#...###...#..#.....
|
||||
.......#.....#...........##....
|
||||
#..##....#........#....##..#.#.
|
||||
.#........#..##...###.#..#.....
|
||||
.#.#....#..##...#...##.#..###..
|
||||
#.........#.......#.....#.#....
|
||||
#..#.....#.#.###.#..#......#...
|
||||
....#..#.#....#..##..###....###
|
||||
###.##.#.#..#...........#.#.#..
|
||||
..##.#.......#......#..##....#.
|
||||
.....#.#.#.......##.......#...#
|
||||
...........#.##....##.##....#.#
|
||||
...#.......#..#.##..#......#..#
|
||||
#.#.#...#......##.#...........#
|
||||
##........#...........###.#..#.
|
||||
..........#.#.#....#.#..##.#.#.
|
||||
...#.#.#....#..........#..#....
|
||||
#.#....###.#.#..#.......###...#
|
||||
.#....#......#.#.#..#..#.......
|
||||
......##.............#....#.#.#
|
||||
.#..........#.........#.##.....
|
||||
##....#....##....#..#.......#..
|
||||
#.##.##.#..#..#.....#..#.##.#..
|
||||
.#..#.......##..#.....##.##....
|
||||
.......#..........#.#.##..#.##.
|
||||
....#.....#.#...##....##.......
|
||||
.......#.........#...##....##.#
|
||||
#.....#......#..........#...#..
|
||||
...#.#.......#.#..#....###..#..
|
||||
.....#.#.#.........#...........
|
||||
.#..###.#.#........#.#.........
|
||||
.........#..#......##...##....#
|
||||
...###..#.....##.....#.###....#
|
||||
.##...#...#........###.#..#....
|
||||
.##........#..#.###.######.##.#
|
||||
##.#...#.#....#..##.#....##....
|
||||
.......##.....##.#..###.#......
|
||||
..##...##........#.......#....#
|
||||
#..##...#.####...###......#...#
|
||||
.##.....#.##.#.#.....###.#..##.
|
||||
..###....#.#.###.#....#........
|
||||
....#..###..#...#....#..#..#.#.
|
||||
#.#.##....##...##.......#......
|
||||
.........#...#....#..#.........
|
||||
.............#...#..##.#.......
|
||||
...#.##.......#...#.#..##.##...
|
||||
.####.#.##..#.#......#.##...#.#
|
||||
.#..#.#.....#.................#
|
||||
..#.##..###....#...#......####.
|
||||
..##..##...........#....#...#..
|
||||
....#...#...#...#.......#....#.
|
||||
#.#...###...#...#.#...#....##.#
|
||||
......#...#.#.......#.....#...#
|
||||
....##...#.#.#....#....#.#....#
|
||||
.....#.....#...##..#...#....##.
|
||||
#.....#....#......##.##....#...
|
||||
...#.#....#...#....#.#....##..#
|
||||
...#.#..#...##....###..#.......
|
||||
...##......###...###.#...#..#..
|
||||
##.......#.......###.......#..#
|
||||
..##.##..###.#............#...#
|
||||
#.....##..#..##....##..#.......
|
||||
......#.#...#......#.....#.....
|
||||
#...........#....#..##.##.#....
|
||||
.......#..#......#...#....#...#
|
||||
.#...##...........#......#...#.
|
||||
#........#....##...###.#....#..
|
||||
.....#.......##.........#.##...
|
||||
.#.###..#....#..##.#..#.#..#...
|
||||
#.......#.##.#.#....#.#..#....#
|
||||
###.....#.#.......#..#......#.#
|
||||
#..#.#.......#.#..##..##.#.#...
|
||||
#..#.#.#.###........#.....#...#
|
||||
#.#.#..#..##.....#...........#.
|
||||
..#.#..#.....#...#...#...##....
|
||||
...#.##......#...##.#...#.#.#.#
|
||||
#..#.#.#.#.......####..........
|
||||
..#......#.#......##.###.....##
|
||||
..#...##..#.........##....#.##.
|
||||
##.##.##.#.#.....#..........##.
|
||||
.#.....###.#..#....#..#.###...#
|
||||
#...##.......###....#.#..#.....
|
||||
..#....##.........##.........##
|
||||
......#....#.##.......#........
|
||||
..#.#.#..#...#...#...##.#...#..
|
||||
......#..##.#.#.#...##...#.#.##
|
||||
#..#...##.#.....#...#.##.......
|
||||
..#..#.........##.#...#.##...##
|
||||
##.##.#....#.......#.##..#.....
|
||||
.....##...##.##...##.........##
|
||||
#......#...#.......#...#...#...
|
||||
...##...........#...#..#.......
|
||||
.#.##.#..#........#....#.......
|
||||
#.#...#..#......##...#.#.##....
|
||||
##........####..#.#...#.#.##.##
|
||||
#..#.#.##......##.#.#..#.......
|
||||
.....#.........#..#.####....#..
|
||||
......##..#....#...#.#....#....
|
||||
#...##........#.........#.....#
|
||||
.#.#...#.#.#..#............##.#
|
||||
.#..#....#....#.....#...#.....#
|
||||
..###...#..#.....#.##.###...#.#
|
||||
.#.###..#..#...#.#...#.#......#
|
||||
#...#####......###........##...
|
||||
.....#.....#..#.#....#..##.....
|
||||
....##...#.#.##.#####...#....#.
|
||||
.#.#.........##.#.......#..##..
|
||||
.#...#.#...#...#....#.#...##.#.
|
||||
.##...#..#.#..#......#.#.#..##.
|
||||
..#.....#..#.....##.....#......
|
||||
..#........#..##...#.......###.
|
||||
.#....#.......#....#....#..#...
|
||||
....#......#.#.#.........#.....
|
||||
..##...#.#.#...#.#........#....
|
||||
.#.....####...##.#..#...##.....
|
||||
...#.....#...#...#....#....#...
|
||||
.........#..#.#.....#..#.#..#..
|
||||
.........##...........#.......#
|
||||
......#..#.....##...#.##.#.....
|
||||
.#......##........##...#.#.##..
|
||||
.....#.#..##...........#..#..#.
|
||||
...#.......#...#.#..#.##..#.##.
|
||||
...#.......#.....#.#...#.##.#..
|
||||
#.....#.............##.#..####.
|
||||
.#...#......#...##.#....#.#....
|
||||
.##..##.##....#.#.....#.......#
|
||||
...#...#....#....##.#..#....##.
|
||||
..............##....#.......#.#
|
||||
.#.#.#...##..#..#...###.#..#...
|
||||
.#.#...#.#..#.#..#...######..#.
|
||||
........#......#.#..#.#....#...
|
||||
..###.....###.#.##....#...##...
|
||||
.##.#.....#.......##.......#...
|
||||
..#..##...#..........#.#....#.#
|
||||
133
3-toboggan_trajectory/src/lib.rs
Normal file
133
3-toboggan_trajectory/src/lib.rs
Normal file
@@ -0,0 +1,133 @@
|
||||
use std::{fmt};
|
||||
|
||||
#[derive(Clone, Copy, PartialEq)]
|
||||
pub enum Terrain {
|
||||
Plain,
|
||||
Tree,
|
||||
}
|
||||
|
||||
impl Default for Terrain {
|
||||
fn default() -> Self {
|
||||
Terrain::Plain
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for Terrain {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", match self {
|
||||
Terrain::Plain => '.',
|
||||
Terrain::Tree => '#',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Default)]
|
||||
pub struct Vec2 {
|
||||
pub x: i64,
|
||||
pub y: i64,
|
||||
}
|
||||
|
||||
impl From<(i64, i64)> for Vec2 {
|
||||
fn from((x,y): (i64, i64)) -> Self {
|
||||
Self { x, y }
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Map {
|
||||
size: Vec2,
|
||||
tiles: Vec<Terrain>
|
||||
}
|
||||
|
||||
impl fmt::Debug for Map {
|
||||
fn fmt(&self,f: &mut fmt::Formatter) -> fmt::Result {
|
||||
// A most honourable moment, but chaining debugs means lots of spare ""[]
|
||||
//let dd: Vec<String> = self.tiles.chunks_exact(self.size.x as usize).map(|x| format!("{:?}", x)).collect();
|
||||
for line in self.tiles.chunks_exact(self.size.x as usize) {
|
||||
let line_s: String = line.iter().map(|x| format!("{:?}", x)).collect();
|
||||
writeln!(f, "{}", line_s)?
|
||||
}
|
||||
// let banana = self.tiles
|
||||
// .chunks_exact(self.size.x as usize)
|
||||
// .map(|x| format!("{:?}", x))
|
||||
// .collect::<Vec<String>>()
|
||||
// .join("\n");
|
||||
// writeln!(f, "{}", banana)
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Map {
|
||||
pub fn new(size: Vec2) -> Self {
|
||||
Self {
|
||||
size,
|
||||
tiles: vec![Default::default();(size.x*size.y) as usize]
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(&self, pos: Vec2) -> Terrain {
|
||||
self.tiles[self.idx(pos).unwrap_or_default()]
|
||||
}
|
||||
|
||||
pub fn set(&mut self, pos: Vec2, tile: Terrain) {
|
||||
if let Some(idx) = self.idx(pos) {
|
||||
self.tiles[idx] = tile;
|
||||
}
|
||||
}
|
||||
|
||||
fn wrap_coords(&self, pos: Vec2) -> Option<Vec2> {
|
||||
if !(0..=self.size.y).contains(&pos.y) {
|
||||
None
|
||||
} else {
|
||||
Some(Vec2{
|
||||
x: pos.x % self.size.x,
|
||||
y: pos.y})
|
||||
}
|
||||
}
|
||||
|
||||
fn idx(&self, pos: Vec2) -> Option<usize> {
|
||||
self.wrap_coords(pos).map(|pos| (pos.x + pos.y * self.size.x) as usize)
|
||||
}
|
||||
|
||||
pub fn from_bytes(s: &[u8]) -> Self {
|
||||
let rows = s.iter().filter(|&&x| x == b'\n').count();
|
||||
let cols = (s.len() - rows) / rows;
|
||||
println!("Size : {} {}", rows, cols);
|
||||
let mut res = Self::new((cols as i64,rows as i64).into());
|
||||
|
||||
let mut pos = Vec2 { x: 0, y: 0 };
|
||||
for tile in s {
|
||||
match tile {
|
||||
b'\n' => {
|
||||
pos.y += 1;
|
||||
pos.x = 0;
|
||||
}
|
||||
b'#' => {
|
||||
res.set(pos, Terrain::Tree);
|
||||
pos.x += 1;
|
||||
}
|
||||
_ => {
|
||||
res.set(pos, Terrain::Plain);
|
||||
pos.x += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
res
|
||||
}
|
||||
|
||||
pub fn solve(&self, slope: (i64, i64)) -> i64 {
|
||||
let mut seek_pos = Vec2 { x: 0, y: 0};
|
||||
let mut tree_count = 0;
|
||||
loop {
|
||||
if self.get(seek_pos) == Terrain::Tree {
|
||||
tree_count += 1;
|
||||
}
|
||||
if seek_pos.y + slope.1 >= self.size.y {
|
||||
break;
|
||||
}
|
||||
seek_pos.y += slope.1;
|
||||
seek_pos.x += slope.0;
|
||||
}
|
||||
tree_count
|
||||
}
|
||||
}
|
||||
17
3-toboggan_trajectory/src/main.rs
Normal file
17
3-toboggan_trajectory/src/main.rs
Normal file
@@ -0,0 +1,17 @@
|
||||
use toboggan_trajectory::*;
|
||||
|
||||
fn main() {
|
||||
let map_str = include_str!("../data/input.txt");
|
||||
// println!("{}", map_str);
|
||||
let map: Map = Map::from_bytes(map_str.as_bytes());
|
||||
// println!("{:#?}", map);
|
||||
eprintln!("First part solution = {}", map.solve((3,1)));
|
||||
let sols: i64 = vec![
|
||||
(1, 1),
|
||||
(3, 1),
|
||||
(5, 1),
|
||||
(7, 1),
|
||||
(1, 2),
|
||||
].iter().map(|slope| map.solve(*slope)).product();
|
||||
println!("Second part solution = {}", sols);
|
||||
}
|
||||
54
3-toboggan_trajectory/src/tests.rs
Normal file
54
3-toboggan_trajectory/src/tests.rs
Normal file
@@ -0,0 +1,54 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_vec2_from_tuple() {
|
||||
// let v: Vec2 = (32, 75).into();
|
||||
let v = Vec2::from((32, 75));
|
||||
assert_eq!(v, Vec2 {x: 32, y: 75})
|
||||
}
|
||||
#[test]
|
||||
fn test_format_map() {
|
||||
let m = Map{
|
||||
size: Vec2{x: 2, y:2},
|
||||
tiles: vec!(Terrain::Tree, Terrain::Plain, Terrain::Plain, Terrain::Plain)
|
||||
};
|
||||
assert_eq!(format!("{:?}", m), "#.\n..\n")
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_pos() {
|
||||
let m = Map::new((2, 2).into());
|
||||
assert_eq!(m.normalize_pos((0, 0).into()), Some((0, 0).into()));
|
||||
assert_eq!(m.normalize_pos((1, 0).into()), Some((1, 0).into()));
|
||||
assert_eq!(m.normalize_pos((2, 0).into()), Some((0, 0).into()));
|
||||
assert_eq!(m.normalize_pos((-1, 0).into()), Some((1, 0).into()));
|
||||
assert_eq!(m.normalize_pos((-2, 0).into()), Some((0, 0).into()));
|
||||
assert_eq!(m.normalize_pos((0, -1).into()), None);
|
||||
assert_eq!(m.normalize_pos((0, 2).into()), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_index() {
|
||||
let m = Map::new((3, 5).into());
|
||||
assert_eq!(m.index((0, 0).into()), Some(0));
|
||||
assert_eq!(m.index((2, 0).into()), Some(2));
|
||||
assert_eq!(m.index((0, 1).into()), Some(3));
|
||||
assert_eq!(m.index((2, 1).into()), Some(5));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_create_map() {
|
||||
let mut map = Map::new(Vec2{x:5,y:5});
|
||||
let trees: Vec<Vec2> = vec![
|
||||
(1,2).into(),
|
||||
(2,1).into(),
|
||||
(3,3).into(),
|
||||
(1,4).into(),
|
||||
(5,1).into(),
|
||||
];
|
||||
trees.iter().for_each(|pos| map.set(*pos, Terrain::Tree));
|
||||
println!("{:?}", map)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user