Add 2024 Quest 15
This commit is contained in:
parent
3fbd447edd
commit
7484de90f3
8 changed files with 535 additions and 0 deletions
6
2024/day15_from_the_herbalists_diary/Cargo.toml
Normal file
6
2024/day15_from_the_herbalists_diary/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "day15_from_the_herbalists_diary"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
66
2024/day15_from_the_herbalists_diary/challenge.txt
Normal file
66
2024/day15_from_the_herbalists_diary/challenge.txt
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
Part I
|
||||||
|
|
||||||
|
Visiting the alchemists' workshop is always a fascinating experience. The shelves are filled with colourful herbs, each meticulously cared for, all housed in its own pot. Many of them you are seeing for the first time in your life, which seems odd as you know the nearby forests like the back of your hand. The only place you couldn't explore is the Infinite Loop Forest, guarded day and night by the knights of the Order. You have suspected for a long time that these unique plants can be found there, and today you will have the chance to verify that by yourself!
|
||||||
|
This time, the candidates for joining the Order must demonstrate their ability to navigate unfamiliar terrain. Each knight receives a map with the locations of various herbs (your notes). Each type of herb is represented by a unique capital letter and can appear in multiple locations. To collect the herb, you must step on the field where this herb grows. Fields marked with # are poison bushes (and thus, should be avoided).
|
||||||
|
Every map represents an enclosed area with a single entry point at the top edge. The race begins from this point. The first task is to find the herb marked on the map with H and return to the starting point. Only a single plant is enough. You don't have to visit all the places where the herb grows. Time is of the essence, so you need to plan the shortest possible route to achieve this goal!
|
||||||
|
Example based on the following notes:
|
||||||
|
#####.#####
|
||||||
|
#.........#
|
||||||
|
#.######.##
|
||||||
|
#.........#
|
||||||
|
###.#.#####
|
||||||
|
#H.......H#
|
||||||
|
###########
|
||||||
|
In the example above, the herb we need to collect grows in the lower corners of the map.
|
||||||
|
One possible path is as follows (arrows show the direction of movement):
|
||||||
|
It takes 13 steps to reach the herb in the left corner,
|
||||||
|
|
||||||
|
#####↓#####
|
||||||
|
#↓←←←←....#
|
||||||
|
#↓######.##
|
||||||
|
#→→↓......#
|
||||||
|
###↓#.#####
|
||||||
|
#H←←.....H#
|
||||||
|
###########
|
||||||
|
|
||||||
|
|
||||||
|
and then another 13 steps to go back to the starting point.
|
||||||
|
|
||||||
|
#####.#####
|
||||||
|
#→→→→↑....#
|
||||||
|
#↑######.##
|
||||||
|
#↑←←......#
|
||||||
|
###↑#.#####
|
||||||
|
#→→↑.....H#
|
||||||
|
###########
|
||||||
|
|
||||||
|
|
||||||
|
Therefore, the total distance is: 13 + 13 = 26 steps, which is also the shortest possible path to collect the herb.
|
||||||
|
What is the minimum number of steps required to collect the herb and then return to the starting point?
|
||||||
|
|
||||||
|
Part II
|
||||||
|
|
||||||
|
The second round is very similar to the first one. The only changes are the map itself and the presence of a lake, marked with the symbol ~ , that you cannot enter because your armour would get rusty, significantly slowing your movement. Additionally, the number of herb types you need to collect has increased, but it is still required to collect only one plant of each kind.
|
||||||
|
Example based on the following notes:
|
||||||
|
##########.##########
|
||||||
|
#...................#
|
||||||
|
#.###.##.###.##.#.#.#
|
||||||
|
#..A#.#..~~~....#A#.#
|
||||||
|
#.#...#.~~~~~...#.#.#
|
||||||
|
#.#.#.#.~~~~~.#.#.#.#
|
||||||
|
#...#.#.B~~~B.#.#...#
|
||||||
|
#...#....BBB..#....##
|
||||||
|
#C............#....C#
|
||||||
|
#####################
|
||||||
|
In the example map above, there are three different types of herbs: A, B, and C.
|
||||||
|
The shortest path to collect at least one plant of each kind takes 38 steps:
|
||||||
|
12 steps to reach the A on the left side,
|
||||||
|
7 more steps to move to the C in the left corner,
|
||||||
|
9 more steps to move to the first B from the left,
|
||||||
|
and 10 more steps to return to the entry point.
|
||||||
|
What is the minimum number of steps required to collect at least one plant of each type of herb on your map and then return to the starting point?
|
||||||
|
|
||||||
|
Part III
|
||||||
|
|
||||||
|
The final round of the competition seems to be the same as it was in the previous two rounds. All the rules remain unchanged. The map is slightly larger, the number of herbs to collect has increased again, but some areas seem familiar, so it should go smoothly... right?
|
||||||
|
What is the minimum number of steps required to collect at least one plant of each type of herb on your map and then return to the starting point?
|
266
2024/day15_from_the_herbalists_diary/src/lib.rs
Normal file
266
2024/day15_from_the_herbalists_diary/src/lib.rs
Normal file
|
@ -0,0 +1,266 @@
|
||||||
|
use core::fmt::Display;
|
||||||
|
use std::collections::{BTreeSet, HashMap, HashSet, VecDeque};
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
|
pub enum ParseError {
|
||||||
|
EmptyInput,
|
||||||
|
NonRectangular,
|
||||||
|
NoStart,
|
||||||
|
ParseCharError(char),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Display for ParseError {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
Self::EmptyInput => write!(f, "Input doesn't contain a map"),
|
||||||
|
Self::NonRectangular => write!(f, "Input is not rectangular"),
|
||||||
|
Self::NoStart => write!(f, "First line doesn't contain a walkable tile"),
|
||||||
|
Self::ParseCharError(e) => write!(f, "Unable to parse into a field: {e}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Coordinates = (usize, usize);
|
||||||
|
|
||||||
|
#[derive(PartialEq, Eq, PartialOrd, Ord)]
|
||||||
|
struct Position {
|
||||||
|
estimated_total_costs: u32,
|
||||||
|
costs: u32,
|
||||||
|
to_collect: usize,
|
||||||
|
coordinates: Coordinates,
|
||||||
|
collecting: u8,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Map {
|
||||||
|
walkable: Vec<Vec<bool>>,
|
||||||
|
herbs: HashMap<u8, Vec<Coordinates>>,
|
||||||
|
width: usize,
|
||||||
|
height: usize,
|
||||||
|
start: Coordinates,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<&str> for Map {
|
||||||
|
type Error = ParseError;
|
||||||
|
|
||||||
|
fn try_from(value: &str) -> Result<Self, Self::Error> {
|
||||||
|
let mut herbs: HashMap<u8, Vec<Coordinates>> = HashMap::new();
|
||||||
|
let mut walkable = Vec::new();
|
||||||
|
for (y, line) in value.lines().enumerate() {
|
||||||
|
let mut walkable_row = Vec::new();
|
||||||
|
for (x, c) in line.chars().enumerate() {
|
||||||
|
match c {
|
||||||
|
'.' => walkable_row.push(true),
|
||||||
|
'#' | '~' => walkable_row.push(false),
|
||||||
|
l if l.is_ascii_uppercase() => {
|
||||||
|
walkable_row.push(true);
|
||||||
|
herbs.entry(l as u8 - b'A').and_modify(|v| v.push((x, y))).or_insert(Vec::from([(x, y)]));
|
||||||
|
},
|
||||||
|
e => return Err(Self::Error::ParseCharError(e)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
walkable.push(walkable_row);
|
||||||
|
}
|
||||||
|
let height = walkable.len();
|
||||||
|
if height == 0 {
|
||||||
|
return Err(Self::Error::EmptyInput);
|
||||||
|
}
|
||||||
|
let width = walkable[0].len();
|
||||||
|
if walkable.iter().any(|row| row.len() != width) {
|
||||||
|
return Err(Self::Error::NonRectangular);
|
||||||
|
}
|
||||||
|
let start_x = walkable[0].iter().position(|tile| *tile).ok_or(Self::Error::NoStart)?;
|
||||||
|
Ok(Self { walkable, herbs, width, height, start: (start_x, 0), })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Map {
|
||||||
|
fn route_single(&self, herb: u8) -> Option<u32> {
|
||||||
|
let mut open_set = VecDeque::from([(self.start, 0)]);
|
||||||
|
let mut visited = HashSet::from([self.start]);
|
||||||
|
if let Some(targets) = self.herbs.get(&herb) {
|
||||||
|
while let Some((pos, dist)) = open_set.pop_front() {
|
||||||
|
if targets.contains(&pos) {
|
||||||
|
return Some(dist);
|
||||||
|
}
|
||||||
|
[(0, 1), (2, 1), (1, 0), (1, 2)]
|
||||||
|
.iter()
|
||||||
|
.filter(|(dx, dy)| {
|
||||||
|
pos.0 + dx > 0 &&
|
||||||
|
pos.1 + dy > 0 &&
|
||||||
|
pos.0 + dx <= self.width &&
|
||||||
|
pos.1 + dy <= self.height &&
|
||||||
|
self.walkable[pos.1+dy-1][pos.0+dx-1]
|
||||||
|
}).for_each(|(dx, dy)| {
|
||||||
|
let next_pos = (pos.0+dx-1, pos.1+dy-1);
|
||||||
|
if !visited.contains(&next_pos) {
|
||||||
|
visited.insert(next_pos);
|
||||||
|
open_set.push_back((next_pos, dist+1));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn route(&self, start: Coordinates, dest: Coordinates) -> Option<u32> {
|
||||||
|
let mut open_set = VecDeque::from([(start, 0)]);
|
||||||
|
let mut visited = HashSet::from([start]);
|
||||||
|
while let Some((pos, dist)) = open_set.pop_front() {
|
||||||
|
if pos == dest {
|
||||||
|
return Some(dist);
|
||||||
|
}
|
||||||
|
[(0, 1), (2, 1), (1, 0), (1, 2)]
|
||||||
|
.iter()
|
||||||
|
.filter(|(dx, dy)| {
|
||||||
|
pos.0 + dx > 0 &&
|
||||||
|
pos.1 + dy > 0 &&
|
||||||
|
pos.0 + dx <= self.width &&
|
||||||
|
pos.1 + dy <= self.height &&
|
||||||
|
self.walkable[pos.1+dy-1][pos.0+dx-1]
|
||||||
|
}).for_each(|(dx, dy)| {
|
||||||
|
let next_pos = (pos.0+dx-1, pos.1+dy-1);
|
||||||
|
if !visited.contains(&next_pos) {
|
||||||
|
visited.insert(next_pos);
|
||||||
|
open_set.push_back((next_pos, dist+1));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn route_all(&self) -> Option<u32> {
|
||||||
|
let interesting: Vec<(u8, Coordinates)> = self.herbs
|
||||||
|
.iter()
|
||||||
|
.flat_map(|(herb, coords)| coords.iter().cloned().map(|c| (*herb, c)).collect::<Vec<(u8, Coordinates)>>())
|
||||||
|
.chain([(255, self.start)])
|
||||||
|
.collect();
|
||||||
|
let network: HashMap<(Coordinates, Coordinates), u32> = interesting
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.flat_map(|(l_idx, (l_herb, l_coords))| interesting
|
||||||
|
.iter()
|
||||||
|
.skip(l_idx + 1)
|
||||||
|
.filter(|(r_herb, _r_coords)| l_herb != r_herb)
|
||||||
|
.flat_map(|(_r_herb, r_coords)| {
|
||||||
|
let dist = self.route(*l_coords, *r_coords).unwrap();
|
||||||
|
[((*l_coords, *r_coords), dist), ((*r_coords, *l_coords), dist)]
|
||||||
|
}).collect::<Vec<_>>())
|
||||||
|
.collect();
|
||||||
|
let all_herbs: Vec<_> = self.herbs.keys().cloned().collect();
|
||||||
|
let all_herbs_int = (1_usize << all_herbs.len()) - 1;
|
||||||
|
let mut open_set = BTreeSet::from([Position{
|
||||||
|
estimated_total_costs: 0,
|
||||||
|
costs: 0,
|
||||||
|
coordinates: self.start,
|
||||||
|
to_collect: all_herbs_int,
|
||||||
|
collecting: 0,
|
||||||
|
}]);
|
||||||
|
let mut visited = HashMap::new();
|
||||||
|
while let Some(pos) = open_set.pop_first() {
|
||||||
|
if pos.to_collect == 0 {
|
||||||
|
if pos.coordinates == self.start {
|
||||||
|
return Some(pos.costs);
|
||||||
|
} else {
|
||||||
|
let costs = pos.costs + network.get(&(pos.coordinates, self.start)).unwrap();
|
||||||
|
open_set.insert(Position {
|
||||||
|
estimated_total_costs: costs,
|
||||||
|
costs,
|
||||||
|
coordinates: self.start,
|
||||||
|
to_collect: 0,
|
||||||
|
collecting: 0,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !visited.keys().any(|(coords, to_coll)|
|
||||||
|
*coords == pos.coordinates &&
|
||||||
|
(to_coll ^ pos.to_collect) & to_coll == 0
|
||||||
|
) {
|
||||||
|
visited.insert((pos.coordinates, pos.to_collect), pos.costs);
|
||||||
|
|
||||||
|
let collected = all_herbs_int - pos.to_collect - (1 << pos.collecting);
|
||||||
|
if let Some(remaining) = visited.get(&(pos.coordinates, collected)) {
|
||||||
|
open_set.insert(Position {
|
||||||
|
estimated_total_costs: pos.costs + remaining,
|
||||||
|
costs: pos.costs + remaining,
|
||||||
|
coordinates: self.start,
|
||||||
|
to_collect: 0,
|
||||||
|
collecting: 0,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
all_herbs
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|(idx, _herb)| pos.to_collect & (1_usize << idx) != 0)
|
||||||
|
.for_each(|(idx, herb)| {
|
||||||
|
let to_collect = pos.to_collect - (1_usize << idx);
|
||||||
|
self.herbs.get(herb).unwrap()
|
||||||
|
.iter()
|
||||||
|
.for_each(|&coordinates| {
|
||||||
|
let costs = pos.costs + network.get(&(pos.coordinates, coordinates)).unwrap();
|
||||||
|
let estimated_total_costs = costs + all_herbs
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|(idx, _herb)| to_collect & (1_usize << idx) != 0)
|
||||||
|
.map(|(_idx, herb)| self.herbs.get(herb).unwrap()
|
||||||
|
.iter()
|
||||||
|
.map(|&c| (c, network.get(&(coordinates, c)).unwrap()))
|
||||||
|
.min_by_key(|(_coords, dist)| *dist)
|
||||||
|
.unwrap()
|
||||||
|
).map(|(c, d)| d + *network.get(&(c, self.start)).unwrap_or(&0))
|
||||||
|
.max()
|
||||||
|
.unwrap_or(0);
|
||||||
|
|
||||||
|
open_set.insert(Position {
|
||||||
|
estimated_total_costs,
|
||||||
|
costs,
|
||||||
|
coordinates,
|
||||||
|
to_collect,
|
||||||
|
collecting: idx as u8,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run(input: &str, part: usize) -> Result<u32, ParseError> {
|
||||||
|
let map = Map::try_from(input)?;
|
||||||
|
match part {
|
||||||
|
1 => Ok(2 * map.route_single(b'H' - b'A').unwrap()),
|
||||||
|
2 | 3 => Ok(map.route_all().unwrap()),
|
||||||
|
_ => panic!("Illegal part number"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use std::fs::read_to_string;
|
||||||
|
|
||||||
|
fn read_file(name: &str) -> String {
|
||||||
|
read_to_string(name).expect(&format!("Unable to read file: {name}")[..]).trim().to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_sample() {
|
||||||
|
let expected = [26, 38];
|
||||||
|
for part in 1..=expected.len() {
|
||||||
|
let sample_input = read_file(&format!("tests/sample{part}"));
|
||||||
|
assert_eq!(run(&sample_input, part), Ok(expected[part-1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_challenge() {
|
||||||
|
let expected = [200, 526, 1504];
|
||||||
|
for part in 1..=expected.len() {
|
||||||
|
let challenge_input = read_file(&format!("tests/challenge{part}"));
|
||||||
|
assert_eq!(run(&challenge_input, part), Ok(expected[part-1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
26
2024/day15_from_the_herbalists_diary/tests/challenge1
Normal file
26
2024/day15_from_the_herbalists_diary/tests/challenge1
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#####################.#####################
|
||||||
|
#.........................................#
|
||||||
|
##########.#.#########.#########.##########
|
||||||
|
#.........................................#
|
||||||
|
#.###.###############################.##.##
|
||||||
|
#.........................................#
|
||||||
|
################.###.#.###.################
|
||||||
|
#.........................................#
|
||||||
|
##.#####.##############################.#.#
|
||||||
|
#.........................................#
|
||||||
|
#############.#####.##.########.###########
|
||||||
|
#.........................................#
|
||||||
|
#.#######################################.#
|
||||||
|
#.#.#.#.#.#.#.................#...#.#.#.#.#
|
||||||
|
#...#.#.#...#.................#...#.#.#.#.#
|
||||||
|
#.#.#...#.#.#.................#.#.#...#.#.#
|
||||||
|
#.#.#.#.#.#.#....###...###....#.#.#.#.#.#.#
|
||||||
|
#.#.#...#.#.#...#####.#####...#.#.#...#...#
|
||||||
|
#...#.#.#...#...#####.#####...#.#.#.#.#...#
|
||||||
|
#.#.#.#...#......###...###......#.#.#.#.#.#
|
||||||
|
#.#.#.#...#.#.....#.....#.....#.#.#.#.#.#.#
|
||||||
|
#.#...#.#.#.#.....#.....#.....#.#...#...#.#
|
||||||
|
#.#...#.#.#.#.................#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.....H.H.H.H.H.H.....#...#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.................#.#.#.#...#.#
|
||||||
|
###########################################
|
77
2024/day15_from_the_herbalists_diary/tests/challenge2
Normal file
77
2024/day15_from_the_herbalists_diary/tests/challenge2
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
##########################################.##########################################
|
||||||
|
#.A.#.#...#.#.#...#...#.#.#.#.....#.#.#.#.........#.#.#...#.....#...#...#...#.#.#.A.#
|
||||||
|
#.A...#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.A.#
|
||||||
|
#.A.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.A.#
|
||||||
|
#.A.#...#.#...#.#.#.#.....#.#.#.#...#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.A.#
|
||||||
|
#.A.#.#.#...#.#.#...#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#.#.....#.#.#.#.#.#.#.......A.#
|
||||||
|
#.A.#.#.#.#.#...#.#...#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.A.#
|
||||||
|
#.A.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#.A.#
|
||||||
|
#.A.#.#...#...#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#...#.#.....#.#.#.A.#
|
||||||
|
#.A.#.#.#.#.#.#.#.#.#.....#.#.#.#.....#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...A.#
|
||||||
|
#.A.....#.#.#.#.#.....#.#.#.#.#.#.#.#.#.....#.#.....#.#.#.#.......#...#.#.#...#.#.A.#
|
||||||
|
#.A.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.A.#
|
||||||
|
#.A.#.#.#.#.....#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#...#...#.#.#.#...#.#.#.#.#...#.A.#
|
||||||
|
#.A.#.#...#.#.#...#.#.#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#...A.#
|
||||||
|
#.A...#.#.#.#.#.#...#.#.#.#.#...#...#.#.....#.#.#.#.#.#.#...#.#...#.#.#.#.#...#.#.A.#
|
||||||
|
#.A.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#...#.#...#.#.#.A.#
|
||||||
|
#.A.#...#...#.#.#.#.#.#...#.#.#...#.#.#.#.#...#.#...#.#...#.#...#.#.#.#.#.#.#...#.A.#
|
||||||
|
#################.#################################################.#################
|
||||||
|
#.....#.#.#.#.#...#.#.#.#...#.#.#.B.B.B.B.B.B.B.B.B.#.#.#.#...#.#...#.#.#.#.#.#.#...#
|
||||||
|
#.#.#.#.#.#.#...#.#.#.#...#.#.#.B.B...............B.B.#.#.#.#.#.#.#.#...#...#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#...#.#.#.#.B.B.....~~~~~~~~~.....B.B.#.#.#...#.#.#.#.#.#...#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.B....~~~~~~~~~~~~~~~....B.#...#.#.#.#.#.#...#.#.#...#.#
|
||||||
|
#.#.#.#...#.#.#.#...#.#.#.#.B.B...~~~~~~~~~~~~~~~~~...B.B.#.#.#.#.#.#.#.#.#.#...#.#.#
|
||||||
|
#.#.#...#...#.#.#.#.#.....#.B...~~~~~~~~~~~~~~~~~~~~~...B.#.#.#...#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#...#.#.#.#.#...#.#.#.#.#.B...~~~~~~~~~~~~~~~~~~~~~...B.#.#.#.#.#...#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#...#.#.#.#.#.#...B...~~~~~~~~~~~~~~~~~~~~~...B.#.#.#.#...#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#...#...#.#.#.#.B.B...~~~~~~~~~~~~~~~~~...B.B.#.#.#.#.#.#.#.#.#.#...#.#.#
|
||||||
|
#.#.#.#.#...#.#.#.#.#.#.#.#.#.B....~~~~~~~~~~~~~~~....B.#...#...#.#.#...#...#.#.#.#.#
|
||||||
|
#.#.#...#.#.#.#.#.#.#.#.#.#.#.B.B.....~~~~~~~~~.....B.B.#.#...#.#.#.#.#.#.#...#.#.#.#
|
||||||
|
#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.B.B.B...........B.B.B.#.#.#.#.#...#.#.#...#.#.#.#.#.#
|
||||||
|
#.#.#.#...#.#.#.#.#.....#.#.#.#.#.#.B.B.B.B.B.B.B.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#
|
||||||
|
#.####################################.#.#.#.#.####################################.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#..#.#.#.#..#.#.#.#.#.#.....#.#.#...#.#.#.#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#...#.#.#.#.#.#.#.....#.............#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.......#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.C.#
|
||||||
|
#.C.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.C.#
|
||||||
|
#.C.#.#.#...#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.....C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.C.#
|
||||||
|
#.C.......#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.......#...#.#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.C.#
|
||||||
|
#.C.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#...#.#.#...#.#...#.#.#.#.#...#...#.#.#...#.#.#.#.#.#.#...#.#.#.#.C.#
|
||||||
|
#.C...#...#.....#.#.#...#.#.#...#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.C.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#...#.#.#.#.#.#.#...#.#.#...C.#
|
||||||
|
#.C.#.#.#.#...#...#...#...#.....#.#.#...........#...#.#.#.....#.#...#.#.#.#.#...#.C.#
|
||||||
|
#.####################################.#.#.#.#.####################################.#
|
||||||
|
#...#.#.#.#.#.#.#.#.......#.#.#.#.#.#...........#.#.#.#.#.#.#.#.#.#.#.#.....#...#...#
|
||||||
|
#.#.#.#.#.#.........#.#.#...#.#.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#
|
||||||
|
#.#.#.#...#.#.#.#.#.#.#.#.#...#...#...#.#.#.#.#.#.#...#.#.#...#.#.#.#...#.#.#.#.#.#.#
|
||||||
|
#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.....#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#...#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#
|
||||||
|
#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#
|
||||||
|
#.#.#.#.#.#.#...#...#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#.#
|
||||||
|
#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.....#...#.#...#...#...#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#...#.#...#.#.#
|
||||||
|
#.#.#.#.#.#...#.#.#.#...#.#.#.#.#.#...#...#...#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#...#.....#.#.#.#...#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#...#.#.#.#.#.#...#.#.#...#.#.#.#...#.#
|
||||||
|
#######################.#####################################.#######################
|
||||||
|
#...#...#.#...#.#.#.#.#...#.#.#.#.#...............#.#.#.#.#.#.#.#.#...#.#...#...#...#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#......###......#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#...#...#.#...#.#.#.#.#.#.#.....#....#######....#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#
|
||||||
|
#.#.#.#.#...#.#.#.....#.#.#.#.#.#.#...#########.......#.#.#.#.#.#.#.#...#.#.#.#...#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#########...#.#.....#.#.#.#.#.#.#.#...#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#......#######....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#......###......#.#.#.#.#.........#.#.#.#.#...#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#...#.#.#...#.#.......#.......#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#
|
||||||
|
#.#...#.#.#.#.#.....#.#.#.#...#...#.......#.......#.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#
|
||||||
|
#.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.......#.........#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...............#.#.#.#...#.....#.#.#...#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.........D.......#.#.#.#.#.#.#.#.#.....#.#.#.#.#.#.#
|
||||||
|
#E#.#.#.#.#...#...#.#...#.#...#.#.#...............#...#...#.#.#.#...#.#.#.#...#.#.#E#
|
||||||
|
#####################################################################################
|
77
2024/day15_from_the_herbalists_diary/tests/challenge3
Normal file
77
2024/day15_from_the_herbalists_diary/tests/challenge3
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
###############################################################################################################################.###############################################################################################################################
|
||||||
|
#.A.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.....#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.A.#..G.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.....#.#.#.#.#.....G..#.N.#...#.#.#.#.#...#.#...#.#.#.#.......#...#.#.#.#.#...#.#.#.#.#.#.#.#.........#.N.#
|
||||||
|
#.A.#.#.........#.#.#...#.....#...#.#.#.#.#.#.....#...#.#.#.#.#.#.#.......#.#.#.#.A..#.G...#...#.....#.#.#.#.#.#.#.#.#.....#.#...#.#.#.#.....#.....#.#.#.....#.#.#.#.#.G.#..N.#.#...#.#...#.#.#.#.#...#...#.#.#.#.#.#.#...#...#.#.#.....#.....#.#.#.#.#.#.#.N.#
|
||||||
|
#.A.#.#.#.#.#.#.....#.#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.A.#..G.#.#.#.#.#.#.#.#...#.#.#.#.....#.#.....#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.G..#.N...#.#.#.#.#.#.#.#.#.#.#...#...#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.N.#
|
||||||
|
#.A.#...#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#...#.........#...#.#.#.#...#.#.#.A..#.G.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.....#.#.G.#..N.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#...#.#.#.#.#.#.#.#.#.N.#
|
||||||
|
#.A...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...A.#..G.#...#...#.#...#.#.#.#.....#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#...#.#.#...G..#.N.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.....#.#.#.#.#.......#.#.#.#.N.#
|
||||||
|
#.A.#.#.#.......#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.A..#.G.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.#...#.#...#.#.#.#.#.G.#..N.#.#.#...#.#.#.#...#.#.#.#.#.#.#.....#...#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.N.#
|
||||||
|
#.A.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.A.#..G.#.#.#.#...#.#.#...#.#.#.#.#.#.........#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.G..#.N.#...#.#.#.#.#.#.#.#.....#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.....N.#
|
||||||
|
#.A.#...#.#.#.#...#.#.#.#...........#.#.#...#.#.#.#.#...#.....#...#.#.#.#.#.#.#.#.A..#.G.#.#...#.#.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.....#...#.#.#.#.#.#.#...#.#.G.#..N.#.#...#.....#...#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.N.#
|
||||||
|
#.A.#.#.#.#.#.#.#...#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.....#.#.#.A.#..G.#...#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.......#.#.#.#.#.#...#.#.#.#.#.#.#...#.G..#.N...#.#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#.N.#
|
||||||
|
#.A...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.......A..#.G.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#...#.#...#.#.#.....#.#.#.G.#..N.#.#.#.#.#.#.#.#...#.#.#...#.#.#...#...#.#.#.#.#.#.#...#.#...#...#...#.#...#.#.N.#
|
||||||
|
#.A.#.#...#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.A.#..G...#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.....#.#.#.#.#.#...#.#.#.#.#.#.#.G..#.N.#...#.#.#.#.#.#.#.....#.#.#.#...#.#.#.#...#...#...#.#.#.#.#.#.#.#.#...#.#.#...N.#
|
||||||
|
#.A.#...#...#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.......#.#.#.#.#...#.#.#.#.#.#.#.#.A..#.G.#.#.#...#.#...#...#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#...G.#..N.#.#.#.......#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.N.#
|
||||||
|
#.A.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.A.#..G.#.#...#.#.#.#.#.#.#.#.#.#.#.....#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.G..#.N.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#...#.#.#.N.#
|
||||||
|
#.A.#.#.#.#.#.#...#.#...#.#...#.#...#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#...#...A..#.G.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#...#.#.G.#..N.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.......#...#.#.#.#.#...#.#.#...#...#.#.#...#.N.#
|
||||||
|
#.A.#.#.#.#.#.#.#.#.#.#...#.#...#.#...#...#.#.#.#.#.#.#.#.#.#.#.#...........#...#.A.#..G.#...#.#.#.#.#...#...#.#.#.#.#.#.#...#.#.#...#.....#.#.#.#.#.#.#.#...#...#...#.G..#.N.#.#.#.#.#.#.#.#.#...#.....#...#.#.#.#.#.#.#...#...#...#...#...#.#.#.#.#...#.#.N.#
|
||||||
|
#.A...#...#.#.#.#.....#.#...#.#...#.#.#.#.#.#.#.#.......#.#.#.#.#.#.#.#.#.#.#.#.#.A..#.G...#.#.........#.#.#.#.......#.#.#.#...#.#.#.#.#.#.....#.....#.#...#.#.#.#.#.#.G.#..N...#.#...#.#...#...#.#.#.#...#.#.#.#.#.#...#.#...#.#.#.#.#...#.#.#.#.#.#.#.#...N.#
|
||||||
|
#################.#################################################.#################.################.#################################################.################.#################.#################################################.#################
|
||||||
|
#.....#.#.#.#.#.#.#.#.#.#...#.#.#.B.B.B.B.B.B.B.B.B.#.#.#.#.#...#.#...#...#.#.#.#....#...#.#.#.#.#.#.#...#.#.#.#.#.#.#.H.H.H.H.H.H.H.H.H.#.#.#...#.#...#.#.#...#.#.#.#...#......#.#.#.#.#.#...#.#.#.#.#.#.#.O.O.O.O.O.O.O.O.O.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.B.B...............B.B.#.#.#...#.#.#.#.#.#.#.#.#...#.#..#...#.#.#.#.#.#.#.#.#.#...#.#.H.H...............H.H.#.#.#.#.#.#.#.#.#.#.#.#...#.#..#.#.#.#.#.....#.#.#.#.#.#.#.#.#.O.O...............O.O.#.#.#.#.#.#...#.#.#...#...#.#.#
|
||||||
|
#.#.#.#...#.#.#.#...#.#.#.#.#.B.B.....~~~~~~~~~.....B.B.#.#.#.#.#.#.#.#.#.#.....#.#..#.#.#.#.....#.#.#.#.#.#...#.#.H.H.....~~~~~~~~~.....H.H.#.#...#.#...#.#.#.....#.#.#.#..#.#.#.#.#.#.....#.#...#.#.#.O.O.....~~~~~~~~~.....O.O.#...#.#.#.#.#.#...#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#...#...#...#.#.B....~~~~~~~~~~~~~~~....B.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#...#.#.#.....#.#.#.#.#.#.H....~~~~~~~~~~~~~~~....H.#.#.#.#.#.#.#...#.#.#.#.#.#..#.#.#.#.#.#.#.#.#.#...#.....#.O....~~~~~~~~~~~~~~~....O.#.#.#.#.#.#.#.#.#.#...#.#.#.#
|
||||||
|
#.#.#...#.#.#.#.#.#.#.#.#.#.B.B...~~~~~~~~~~~~~~~~~...B.B.#.#.#.#...#.#.#.#.#.#.#.#..#.#.#.#.#.#...#.#.#.#.#.#.#.H.H...~~~~~~~~~~~~~~~~~...H.H.#.#.#...#...#.#.#.#.#...#.#..#.#...#.#.#.#.#.#.#.#.#.#.O.O...~~~~~~~~~~~~~~~~~...O.O.#.#.#.#.#.#...#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#...#.#.#.#.#.#.#...B...~~~~~~~~~~~~~~~~~~~~~...B...#.#...#.#.....#.#.#...#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.H...~~~~~~~~~~~~~~~~~~~~~...H.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#...#.#.#.#.#.#.#.#.O...~~~~~~~~~~~~~~~~~~~~~...O.#.....#.#.#.#.#.#.#.#...#.#
|
||||||
|
#.#...#.#.#...#.#.#.#...#.#.B...~~~~~~~~~~~~~~~~~~~~~...B.#.#.#.#.#.#.#.#.#.#...#.#..#.#.#.#.#...#.#.#...#.#.#.#.H...~~~~~~~~~~~~~~~~~~~~~...H.#.#...#.#.#.#.#.#.#.#.#.#.#..#...#.#.#...#.....#.#.#.#.O...~~~~~~~~~~~~~~~~~~~~~...O...#.#...#...#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#...#.#.#.#.#.#.B...~~~~~~~~~~~~~~~~~~~~~...B.#.#.#.#.#...#.#...#.#.#.#.#..#.#.#.#.#.#.#.#.#.....#.#.H...~~~~~~~~~~~~~~~~~~~~~...H...#.#.#.#.#.#.....#.#.#.#..#.#.#.#...#.#.#.#.#.#.#.#.#.O...~~~~~~~~~~~~~~~~~~~~~...O.#.#.#.#.#.#.#.....#...#.#.#
|
||||||
|
#.#.#.#...#.#.#...#.#.#.#.#.B.B...~~~~~~~~~~~~~~~~~...B.B.#.....#.#.#.#.#.#.#.#.#.#..#.#...#.#.#.#.#.#.#.#.#...#.H.H...~~~~~~~~~~~~~~~~~...H.H.#...#.#...#...#.#...#.#.#.#..#.#.#.#.#.#.#.#.#...#.#.#.O.O...~~~~~~~~~~~~~~~~~...O.O.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#...#.#.#...#.#.#.#.#.B....~~~~~~~~~~~~~~~....B.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#.#.#...#.#.#.#.#.#.H....~~~~~~~~~~~~~~~....H.#.#.#.#.#.#...#.#.#.#.#...#..#.#.#.#.#.#.#...#.#.#.#...#.#.O....~~~~~~~~~~~~~~~....O.#.#...#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#...#...#.#.B.B.....~~~~~~~~~.....B.B.#.#.#.#.....#.#.#.#...#.#.#..#.#.#...#.#...#.#.#.#.#.#.#.#.H.H.....~~~~~~~~~.....H.H.#.#.#.#.#.#.#.#.#.#.#...#.#.#..#.#.#.#.#.#.#.#.#.#...#.#.#.O.O.....~~~~~~~~~.....O.O.#.#.#...#.#.....#.#.#.#...#.#
|
||||||
|
#.#.#...#.#.....#.#.#.#.#.#.#.#.B.B.B...........B.B.B.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#..#.#.#...#.#...#.#.....#.#.#.#.H.H.H...........H.H.H.#.#.#.#...#.#.#.#.#.#.#.#.#.#..#.#.#.....#.#.#.#.#.#.#.#...#.#.O.O.O...........O.O.O.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.B.B.B.B.B.B.B.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.H.H.H.H.H.H.H.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.O.O.O.O.O.O.O.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#
|
||||||
|
#.####################################.#.#.#.#.####################################.#..####################################.#.#.#.#.####################################..#.####################################.#.#.#.#.####################################.#
|
||||||
|
#.C...#.#.#.#.#.#.#.#...#.#.#.#.#...#..#.#.#.#..#.#.#.#.#.#.#.#.#...#.#...#.#...#.C..#.I...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#..#.#.#.#..#.#.#.#.#.....#.#...#.#...#.#...#.I.#..P.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#....#.#.#.#....#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...........#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.C.#..I.#.#.#.#.#.....#.#.#.#.#.#.#.#.#.#.............#.#.#.#.#.#...#.#.#.#.#.#.#.#...I..#.P.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...........#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.P.#
|
||||||
|
#.C.#...#...#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#...#.#.#.#.#.#.#.#.....#.#.#.#...C..#.I.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.I.#..P.#.#.#.#.#.#.#...#.#.#...#...#.#.#.#.#.#.#.#.#.#.#...#.....#.#.#.#...#.#.#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#...#...#.#...#.#.#.#.#.#.#.....#.#...#.#.#.#.#.#.#.#.#.#.C.#..I.#.#.#.#.#.#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#...#.#.I..#.P.#.#.#.#.#.#.#.#...#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...P.#
|
||||||
|
#.C.#.#.#.#.....#.......#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.C..#.I.#.#.#.....#.#.#.#.#.#...#...#...#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.....#.#...#.I.#..P...#...#.#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.....#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#.#...#.#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.C.#..I.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.I..#.P.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.P.#
|
||||||
|
#.C...#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.C..#.I.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.I.#..P.#...#.#.....#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.....#.#.#.#.#.#.#.#...#.#.#.#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.C.#..I.#.....#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.I..#.P.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.C..#.I.#.#.#.#.#.#.#.#...#.#...#.#.#.#.#.#.#.#.#.....#.#.#...#.#.#.#.#.#.#.#...#.#.#.I.#..P.#.#.#.#.#.#.....#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....P.#
|
||||||
|
#.C.#.#.#.#.#.#...#.#.#.#.#.#.#.....#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.C.#..I.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.I..#.P.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#...#.#...#.#.#.#.#.#.#.#.#.P.#
|
||||||
|
#.C.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#.......#.....#.#.#.#.C..#.I...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.I.#..P.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...C.#..I.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#.I..#.P.#.#.#.#.#...#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.#.#.#.#...#.........#.#.P.#
|
||||||
|
#.C.#.#.#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#.#.#.#.#.#...#.#.....#.#.C..#.I.#.#.#.#.#.....#.#.#.#.#.#...#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#...#...#.#.#.I.#..P...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.P.#
|
||||||
|
#.C.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.....#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.C.#..I.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.I..#.P.#...#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#...#.#.#.#...#.#.#...#...#.#.#.#.#.#.#.#.P.#
|
||||||
|
#.C.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.C..#.I.#.#.#...#.#.#...#.#.#.#.#.#...#.#.#.....#.#.#.#.#.#.#.#.#.#.....#.#.#.#.#.#.#.I.#..P.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.P.#
|
||||||
|
#.C.#.#.#.#.#.#.#...#.#.#.#...#.#.#.#...........#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.C.#..I.#.#...#...#.#.#.#.#...#.#.#.#.#.............#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...I..#.P.#.#...#.#.#.#.#...#.#.#.#.#...#.#...........#...#.#.#...#...#.#.#.#.#.#...#.#.P.#
|
||||||
|
#.####################################.#.#.#.#.####################################..#.####################################.#.#.#.#.####################################.#..####################################.#.#.#.#.####################################.#
|
||||||
|
#.#.#...#.#...#.#.#.#...#.#.#.#...#.#...........#.#...#.#.#.#...#.#...#...#.#.#.#.#.#..#...#.#.#.#.#.#.#.#.#.#.#.....#.#.#...........#.#.......#...#.#...#.#...#.#...#.#..#.#.....#.#.#.#.#...#...#.#.#.#.#.#.#...........#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#.#.#...#.#...#.#.#...#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#..#.#.#.#.....#.#.....#.#.#.#.#.#.....#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#.#...#...#.#
|
||||||
|
#.#.#.#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#...#.#...#...#..#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#..#.#.#...#.#.#.#.#...#.#...#...#...#.......#.#.#.#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#...#.#...#.#...#.#.#.#.#.#...#.#.#.#.#.#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#...#.#...#.#.#...#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.......#.#.#.#...#..#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#.....#.#.#.#.#.#...#.#.#
|
||||||
|
#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#...#.#.#.#...#...#.#.#.#...#.#.#.#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#...#.#.#...#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#...#.#.#.#.#.#.#.#.#
|
||||||
|
#...#.#.#.#.#.#...#.#...#.#...#.#.#.#.....#.#.#.#.#.#.#.#.#.#.......#.#.#.#.#.#.#...#....#.#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#.#....#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#...#
|
||||||
|
#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.....#..#.#.#.#.#.#.#.#.....#.#.#.#.#.#.#.#.#.#...#...#.#.#.#.#...#.#.#.#.#.#.#.#...#.#.#.#.#..#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#
|
||||||
|
#.#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#...#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#...#.#.#.#.#.#..#.#.#...#.#.#.#.#.#...#.#...#.#...#.#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#..#.#...#.#.#.#.#.#.#.#.#.#...#.#.....#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#..#.#.#.#.#.#.#.#.#.#.#...#...#.#.#.#...#.#.#.#.#.....#.#.#.#.....#.#.#.#.#.#.....#.#
|
||||||
|
#.#.#.#.#.#...#.#.....#.#...#.#.....#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#.#.#.#.#...#.#.#...#.#.#...#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#...#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#
|
||||||
|
#.#...#...#.#.....#.#.#.#.#.#.#.#.#.#...#.#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#...#.#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#.#.#.#...#...#...#.#.#.#..#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.....#.#...#...#.#.#.#...#.#.#.#...#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#...#.#...#.#...#.#.#...#...#.#.#...#.#.#...#.#.#...#...#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#.#.#...#.#...#.#.#.#...#.#.#.#..#.#.#.#.#.#.....#.#.#.#.#.#.#.....#.#.#...#.#.#...#.#.#.#.#.#.#.#.#...#.#...#.#.#.#.#
|
||||||
|
#######################.#####################################.######################.#######################.#####################################.#######################.######################.#####################################.#######################
|
||||||
|
#...#.#.#...#.#.#.#.#...#.#.#.#.#.#.................#.#.#.#.....#...#.#.....#.......#....#.#.#.#.#...#.#.#.#...#.#.#...#...............#...#.#.#.#.#...#.#...#.#.#.#.#....#...#.#.#.#.#.#.#.#.....#.#.#.#.#.#...............#.#.#...#...#.#.#...#.#.#.#.#.....#
|
||||||
|
#.#.#.#.#.#.#...#...#.#.#.#.#.#.#.#......###......#.#.#.#.#.#.#...#...#.#.#.#.#.#.#..#.#.#.#.#.#...#.#.#.#...#...#.#.#........###......#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#..#...#...#.#...#.#.#.#.#.#.#.#...#......###......#...#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#....#######....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#....#######....#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#..#.#.#.#.#.#...#.#.#.#.#.#.#.#...#......#######....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.....#.#.#.#...#.#.#.#.#...#.#.....#########...#.#.#...#.#.#.#.#.#...#.#.#.#.#.#..#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#...#########...#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.......#.#.#...#########...#.#.#.#.#.#.#...#.#.#.....#...#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#...#...#.#...#########...#.....#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#...#.#.#.#...#.....#.#.#.#.#.#.#...#########.....#...#.#.#...#.#.#.#.#.#.#...#.#..#.#.#.#.#...#.#.#.....#.#.#.#.#.#.#...#########.....#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#...#.....#.#.#.#...#.#.#.#.#....#######....#.#.#.#...#.#.#.#.#.#...#.#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#....#######....#.#.#.#.#.#.#...#.#.....#...#.#.#.#..#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#....#######....#.#...#.#.#...#...#...#.#...#.#.#.#
|
||||||
|
#.#.#.#.#...#.#.#.#.#.#.#.#.#.#...#......###......#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#..#.#.#.....#.#.#.#.#.#.#.....#.#.#......###......#.#.#.#.....#.#.#.#.#.#.#.#.#...#..#.#.#.#...#.#.#.#.#.#.#.#.#.#............###......#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#...#.#...#.#.#.#.#.#.......#.......#.#.#.#.#...#...#.#...#.#.#.#.#.#..#.#.#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.......#.......#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..#.....#.#.....#.#.#...#.#.#.#.#.#.......#.......#.#.#.#...#.#.#.#.#.#.#...#.....#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.......#.......#.#.#...#.#.#.#.#.#.#.#.....#...#.#..#.#...#.#.#.#.#.#...#.#.#.#...#.#.......#.........#.#...#.#.#.#.#.#.#.#.#.#...#.#..#.#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.......#.......#.#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#
|
||||||
|
#.#.#...#.#.#.#.#.....#...#.#.#.#.#.......#.......#.#.#.#.#.#...#.#.#.#.#.#.#.#.#.#..#.#...#.#.#...#.#.#.#...#.#.#.#...#.......#.......#.....#.#.#.#.#.#.#.#...#...#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.......#.......#...#.#.#.#.#.#...#.#.#.#...#.#.#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.#.#.#.#.....#.#.#...............#...#.#.#.#.#.#.#...#.#.#.#.#.#.#.#..#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...............#.#.#.#.#.#.#.#...#.#.#...#.#...#..#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#...............#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.#.#.#...#...#.#.#.#.#.#.#.#.#.#.#.......D.........#...#...#.#.#.#.#.#.#.#.#.#.#.#..#.#.#.#...#.#.#.#.#.#.#...#.#.#.#.........J.......#.#.#.#...#.#.#.#.#.#.#.#.#.#.#.#.#..#.#...#.#.#.#.#.#.#.#.#...#.#.#.#.......Q.........#...#...#...#.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#E#...#.#.#.#.#.#.#.#.#.#.#.#.....................#.#.#.#.#.#.#.#...#.#.#.#...#.#.#E..K#.#...#...#.#.#...#.#.#.#...#.#.#...............#.#.#...#.....#.#...#.#.#.#.#.#.#K..R#.#.#.#.#.#.#...#.#.#...#.#.#.#.#...............#.#.#.#.#.#.#.#.#.....#.#.#.#.#.#R#
|
||||||
|
###############################################################################################################################################################################################################################################################
|
7
2024/day15_from_the_herbalists_diary/tests/sample1
Normal file
7
2024/day15_from_the_herbalists_diary/tests/sample1
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#####.#####
|
||||||
|
#.........#
|
||||||
|
#.######.##
|
||||||
|
#.........#
|
||||||
|
###.#.#####
|
||||||
|
#H.......H#
|
||||||
|
###########
|
10
2024/day15_from_the_herbalists_diary/tests/sample2
Normal file
10
2024/day15_from_the_herbalists_diary/tests/sample2
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
##########.##########
|
||||||
|
#...................#
|
||||||
|
#.###.##.###.##.#.#.#
|
||||||
|
#..A#.#..~~~....#A#.#
|
||||||
|
#.#...#.~~~~~...#.#.#
|
||||||
|
#.#.#.#.~~~~~.#.#.#.#
|
||||||
|
#...#.#.B~~~B.#.#...#
|
||||||
|
#...#....BBB..#....##
|
||||||
|
#C............#....C#
|
||||||
|
#####################
|
Loading…
Add table
Add a link
Reference in a new issue