Add 2024 Quests 17 - 19

This commit is contained in:
Chris Alge 2024-11-29 18:48:01 +01:00
parent 5d1320bec9
commit 6632529d20
27 changed files with 1613 additions and 0 deletions

View file

@ -0,0 +1,6 @@
[package]
name = "day18_the_ring"
version = "0.1.0"
edition = "2021"
[dependencies]

View file

@ -0,0 +1,235 @@
Part I
Near the rapidly constructed shrine of the god Nullpointer, a new area is being allocated for palm tree cultivation. The terrain of the desert is quite suitable for these plants but also challenging, requiring a well-planned irrigation system to ensure efficient growth.
The irrigation system is a network of channels that will continuously supplies water to the trees. However, there are concerns about the distance over which an adequate amount of water can be delivered. The sun may evaporate the stream so quickly that the water disappears before reaching all the targets.
The first palm farm is already under construction, but the knights are still analysing its design (your notes). The palm trees are marked with P , and the channels are marked with . . The remaining areas, marked as # , are designated paths for workers, and must remain at ground level.
The edge of the farm has exactly one cell marked as part of the channel: . . This is where the water will enter the farm. Every minute the water spreads to all adjacent channel segments vertically and horizontally. The segments with palm trees are at the same level as the channel, and water can flow through them just like a regular channel segment.
The task for the tournament challengers is to calculate the time needed for the water to reach all the palm trees from the moment the channel is supplied with water at the edge point.
Example based on the following notes:
##########
..#......#
#.P.####P#
#.#...P#.#
##########
The water flow ( ~ ) starts from the left side and goes as follows:
##########
~.#......#
#.P.####P#
#.#...P#.#
##########
time: 0
##########
~~#......#
#.P.####P#
#.#...P#.#
##########
time: 1
##########
~~#......#
#~P.####P#
#.#...P#.#
##########
time: 2
##########
~~#......#
#~P.####P#
#~#...P#.#
##########
time: 3
##########
~~#......#
#~P~####P#
#~#...P#.#
##########
time: 4
##########
~~#~.....#
#~P~####P#
#~#~..P#.#
##########
time: 5
##########
~~#~~....#
#~P~####P#
#~#~~.P#.#
##########
time: 6
##########
~~#~~~...#
#~P~####P#
#~#~~~P#.#
##########
time: 7
##########
~~#~~~~..#
#~P~####P#
#~#~~~P#.#
##########
time: 8
##########
~~#~~~~~.#
#~P~####P#
#~#~~~P#.#
##########
time: 9
##########
~~#~~~~~~#
#~P~####P#
#~#~~~P#.#
##########
time: 10
##########
~~#~~~~~~#
#~P~####P#
#~#~~~P#.#
##########
time: 11
All the palm trees receive water after 11 minutes.
How much time is needed for the water to reach all the palm trees on the first farm?
Part II
The second farm will be much larger, but water will be supplied simultaneously from two points on opposite sides, so everything should be irrigated in reasonable time.
Example based on the following notes:
#######################
...P..P...#P....#.....#
#.#######.#.#.#.#####.#
#.....#...#P#.#..P....#
#.#####.#####.#########
#...P....P.P.P.....P#.#
#.#######.#####.#.#.#.#
#...#.....#P...P#.#....
#######################
The water flow ( ~ ) starts simultaneously from the left and right sides and proceeds as follows:
#######################
~..P..P...#P....#.....#
#.#######.#.#.#.#####.#
#.....#...#P#.#..P....#
#.#####.#####.#########
#...P....P.P.P.....P#.#
#.#######.#####.#.#.#.#
#...#.....#P...P#.#...~
#######################
time: 0
#######################
~~.P..P...#P....#.....#
#.#######.#.#.#.#####.#
#.....#...#P#.#..P....#
#.#####.#####.#########
#...P....P.P.P.....P#.#
#.#######.#####.#.#.#.#
#...#.....#P...P#.#..~~
#######################
time: 1
#######################
~~~P..P...#P....#.....#
#~#######.#.#.#.#####.#
#.....#...#P#.#..P....#
#.#####.#####.#########
#...P....P.P.P.....P#.#
#.#######.#####.#.#.#~#
#...#.....#P...P#.#.~~~
#######################
time: 2
#######################
~~~P..P...#P....#.....#
#~#######.#.#.#.#####.#
#~....#...#P#.#..P....#
#.#####.#####.#########
#...P....P.P.P.....P#~#
#.#######.#####.#.#.#~#
#...#.....#P...P#.#~~~~
#######################
time: 3
#######################
~~~P~.P...#P....#.....#
#~#######.#.#.#.#####.#
#~~...#...#P#.#..P....#
#~#####.#####.#########
#...P....P.P.P.....P#~#
#.#######.#####.#.#~#~#
#...#.....#P...P#.#~~~~
#######################
time: 4
... #######################
~~~P~~P~~~#P~~~~#.....#
#~#######~#~#~#~#####.#
#~~~~~#~~~#P#~#~~P....#
#~#####~#####~#########
#~~~P~~~~P~P~P~~~~~P#~#
#~#######~#####~#~#~#~#
#~~~#~~~~~#P~~~P#~#~~~~
#######################
time: 21
All the palm trees receive water after 21 minutes.
How much time is needed for the water to reach all the palm trees on the second farm?
Part III
The last of the farms is the largest, but it doesn't have any entry points for water sources at the edge. It turns out that there are groundwater reserves beneath the land and they are under high pressure, so it's enough to dig a big well (that occupies the entire segment) in the optimal spot and let nature take care of the rest.
It has been found that water evaporates significantly when flowing through the channels, so the well should be dug at one of the channel segments marked with . where the sum of the times it takes for the water to reach all the palm trees is minimised.
Example based on the following notes:
##########
#.#......#
#.P.####P#
#.#...P#.#
##########
One of the possible locations for the well is on the right side of one of the palm trees. The water flow ( ~ ) for that spot looks as follows:
##########
#.#......#
#.P~####P#
#.#...P#.#
##########
time: 0
##########
#.#~.....#
#.P~####P#
#.#~..P#.#
##########
time: 1
##########
#.#~~....#
#~P~####P#
#.#~~.P#.#
##########
time: 2
##########
#~#~~~...#
#~P~####P#
#~#~~~P#.#
##########
time: 3
##########
#~#~~~~..#
#~P~####P#
#~#~~~P#.#
##########
time: 4
##########
#~#~~~~~.#
#~P~####P#
#~#~~~P#.#
##########
time: 5
##########
#~#~~~~~~#
#~P~####P#
#~#~~~P#.#
##########
time: 6
##########
#~#~~~~~~#
#~P~####P#
#~#~~~P#.#
##########
time: 7
The first palm receives water after just 1 minute. The second needs to wait for 4 minutes, and the third for 7 minutes.
Summing these times gives a total of 1 + 4 + 7 = 12 minutes. Digging the well at any other location would result in a greater sum of times, so this is the optimal point for digging.
Dig the well at the optimal point. What is the sum of the times it takes for the water to reach all the palm trees?

View file

@ -0,0 +1,182 @@
use core::fmt::Display;
use std::collections::{HashMap, HashSet, VecDeque};
#[derive(Debug, PartialEq, Eq)]
pub enum ParseError {
EmptyMap,
InvalidChar(char),
}
impl Display for ParseError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::EmptyMap => write!(f, "Input was empty"),
Self::InvalidChar(e) => write!(f, "Unable to parse {e}. Valid characters are \'.\', \'#\', and \'P\'."),
}
}
}
type Coordinates = (usize, usize);
#[derive(Clone)]
struct Map {
walkable: Vec<Vec<bool>>,
trees: Vec<Coordinates>,
entries: Vec<Coordinates>,
}
impl TryFrom<&str> for Map {
type Error = ParseError;
fn try_from(value: &str) -> Result<Self, Self::Error> {
let mut walkable = Vec::new();
let mut trees = Vec::new();
let mut entries = Vec::new();
for (y, line) in value.lines().enumerate() {
let mut walkable_line = Vec::new();
for (x, c) in line.chars().enumerate() {
match c {
'.' => walkable_line.push(true),
'#' => walkable_line.push(false),
'P' => {
walkable_line.push(true);
trees.push((y, x));
},
e => return Err(Self::Error::InvalidChar(e)),
}
}
walkable.push(walkable_line);
}
if walkable.is_empty() {
return Err(Self::Error::EmptyMap);
}
if let Some(x) = walkable[0].iter().position(|w| *w) {
entries.push((0, x));
}
if let Some(x) = walkable.last().unwrap().iter().position(|w| *w) {
entries.push((walkable.len()-1, x));
}
if let Some(y) = walkable.iter().position(|row| row.first() == Some(&true)) {
entries.push((y, 0));
}
if let Some(y) = walkable.iter().position(|row| row.iter().last() == Some(&true)) {
entries.push((y, walkable[y].len()-1));
}
Ok(Self { walkable, trees, entries, })
}
}
impl Map {
fn water(&self) -> Vec<usize> {
let mut open_set = self.entries.iter().map(|e| (*e, 0)).collect::<VecDeque<_>>();
let mut to_collect = self.trees.clone();
let mut visited: HashSet<Coordinates> = self.entries.iter().cloned().collect();
let mut watering_times = Vec::new();
while let Some(((y, x), dist)) = open_set.pop_front() {
if let Ok(idx) = to_collect.binary_search(&(y, x)) {
to_collect.remove(idx);
watering_times.push(dist);
}
if to_collect.is_empty() {
return watering_times;
}
[(1,0), (1,2), (0,1), (2,1)]
.iter()
.filter(|(dy, dx)|
y + dy > 0 &&
y + dy <= self.walkable.len() &&
x + dx > 0 &&
x + dx <= self.walkable[y + dy - 1].len() &&
self.walkable[y + dy - 1][x + dx - 1]
).for_each(|(dy, dx)| {
let new_pos = (y + dy - 1, x + dx - 1);
if !visited.contains(&new_pos) {
visited.insert(new_pos);
open_set.push_back((new_pos, dist+1));
}
});
}
// We didn't find a path to all the plants
Vec::new()
}
fn best_watering(&mut self) -> Option<usize> {
// Find the best spot by watering from the trees and noting how much combined time was
// spent to reach it. Note that this isn't necessarily the spot we reach first.
let mut open_set = self.trees.iter().enumerate().map(|(idx, t)| (*t, idx, 0)).collect::<VecDeque<_>>();
let mut visited: HashMap<Coordinates, (Vec<usize>, usize)> = self.trees.iter().enumerate().map(|(idx, t)| (*t, (Vec::from([idx]), 0))).collect();
while let Some(((y, x), orig, dist)) = open_set.pop_front() {
[(1,0), (1,2), (0,1), (2,1)]
.iter()
.filter(|(dy, dx)|
y + dy > 0 &&
y + dy <= self.walkable.len() &&
x + dx > 0 &&
x + dx <= self.walkable[y + dy - 1].len() &&
self.walkable[y + dy - 1][x + dx - 1]
).for_each(|(dy, dx)| {
let new_pos = (y + dy - 1, x + dx - 1);
if !visited.contains_key(&new_pos) || !visited.get(&new_pos).unwrap().0.contains(&orig) {
visited.entry(new_pos).and_modify(|(trees, d)| {
trees.push(orig);
*d += dist;
}).or_insert((vec![orig], dist));
open_set.push_back((new_pos, orig, dist+1));
}
});
}
// Now, exccluding spots with a tree in them, find the one with the best score.
if let Some(entry) = visited
.iter()
.filter(|(coords, _)| !self.trees.contains(coords))
.min_by_key(|(_coords, (_trees, dist))| dist)
.map(|(coords, _)| coords)
{
self.entries.push(*entry);
Some(self.water().iter().sum())
} else {
None
}
}
}
pub fn run(input: &str, part: usize) -> Result<usize, ParseError> {
let mut map = Map::try_from(input)?;
match part {
1 | 2 => Ok(*map.water().last().unwrap()),
3 => Ok(map.best_watering().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 = [11, 21, 12];
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 = [103, 1383, 246261];
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]));
}
}
}

View file

@ -0,0 +1,11 @@
###############################
...P#.....#...#P.....P#.....#P#
#.###.###.#.#.#####.###.#.#.#.#
#.#...#P#...#.#...#.....#.#...#
#.#.###.#####.#.#.#.#####.###.#
#...#.........#.#.#..P#...#P#.#
#####.#########.#.#####.###.#.#
#..P#.#.........#...#...#...#.#
#.###.#.###########.#.###.#.#.#
#.......#P............#P..#...#
###############################

View file

@ -0,0 +1,71 @@
#########################################################################################################################################################################################################
...P#..P...P#..P...P..#P......#P...P#...#.#.....PPP...#...#.P.....#.....#.....#P#.....#P.P...P..#...#.....#..P...P.P..#...#.....P..P......#P....P.PPP...#............P..#P......#.........#.....PP.P#...#
#.#.#.#####.#.###.###.#.#####.###.#.#.#.#.#.#########.#.#.#.#.###.#.###.#.###.#P#.###.#.###.###.#.#.###.#.#.#########.#.#.#.###########.#.###.#########.#.#.###########.#####.#.###.#.###.###.#####.#.###
#P#.#.#..P#.#..P#.#.#...#PP....P.P#...#.#.#P#.......#...#...#.#.....#P..#.#P..#.#...#P#.#P#.#.#P..#...#.#..P#.......#...#.#....P#..P..#.#P....#.......#.#.#.....#.....#P..#P..#..P#.#.#P#.#..P#.....#...#
#.#.#.#.#.#.#####.#.#.#################.#.#.#.#####.#########P#########.#.###.#.###.#.#.#.#.#.#######.#.#####.#.#########.#####.#.#####.#######.###.###.#.#####.#.###.###.#.#####P###.#.#.#.###.#####.#.#
#.#.#..P#P#P.P....#...#.....#..P..#P#....P#...#P..#.....#..P#.#...P...#P#...#....P#P#.#...#.#..P..#...#.....#.#........P#....P#...#.....#...#..P#P#....P#P....#P....#.#.#..P#...#.....#...#...#.#P.P#.#.#
#.#.#####.#############.###.#.###.#.#.###########.#####.###.#.#.#####.#.###.#######.#.#.###.#.###.#.#######.#.#####.#########.#####.#####.#.#.###.###############.###.#.#####.#.#######.###.#.#.#.#.#.#P#
#.#P#.....#..P.P...P.P#.#P#...#.#P#...#...........#P..#P.P..#...#...#.#...#...#P....#.#.#...#.#P..#P....P...#P#..P..#...P..P..#..P..#.....#.#.#.#....P..#..PP...#P#...#.......#P#...P...#P..#.#..P#.#.#.#
#P#.#.###.#.#########.#.#.#####.#.#.###.#######.###.#.#####.#####.#.#.###.###.#.#####.#.#.###.###.#############.#####.#########.#####.#####.#.#.#.#.###.#.#####.###.###.#########.###########.#####P#.#P#
#.#.#...#.#.#P....#P#P#.#.......#.#.#...#P...P#.....#...#...#.....#.#.#P#...#......P#..P#...#P..#....PPP.....PPP#...#P#.PP.....P#...#.....#...#...#.#P#P..#..P#...#P#......P....#.#...#P......#..P#.#.#.#
#.#.###.###.###.#.#.#P#P#######.#.###.###.###.#########.#.###.###.###.#.###.#######.#######.###.###########.#####.#.#.#.#####.#####.#####.#####.###.#.#######.###.#P#.#######.#.#.#.#.#.#######.#.#P#.#.#
#P#...#.#.PP#...#.#.#P#.#P......#.#P..#...#..P#.....#...#...#..P#.#..P#...#.......#P......#...#.......#..P#.#P.P.P#P..#P#...#.#.....#...#P#P....#...#......P#.#...#.#...#...#P#.#P#.#..P#P....#.#P#.#P#.#
#.###.#.#.###.###.#.#.#.#.#####.#.#.#####.#.###.#.#.#.#.###.###.###.#####.#######.###########.#.#####.#.###.#.#########.#P#.#.#.###.#.###.###.###.#####.###P#.#.###.#####.#.###.#.#.#######.#.#.###.###.#
#...#P#...#...#.#.#P#.#P..#..P#P#...#...#.#..P..#P#P#P#...#.#...#P..#P........#P#...#..P#.....#..P.P#.#.#P.P#...#....P#.#.#...#...#.#...#P..#...#P....#.#P#...#P...P#..P#.#..P#.#...#.......#...#...#...#
#.#.#.###P#.###.#.#P#.#####.#.#.#####.#.###.#####P#.#P#####.#.#.#.#####.#####.#.###.#.#.#.#####.#####.#.#.#####.#.###.###.#######.#.###.###.#.#######.#.#.###.#######.#.#.###.#.#####.###########.###.###
#P#.#...#..P#P....#.#P#.....#.#.#.#P..#P.P#..P.P#P#.#.#....P#.#.#.#...#...#......P#..P#P..#..P#.#....P#.#.#.....#..P#P....#P...P..#.....#P..#P#...#...#.#...#P#P......#.#P#.........#..P..P..P#...#P....#
###.###.#####.#####.#.#.#.#####.#.#.#.###.#####.#.###.#.#####.#.#.#.#.###.#.###############.###.#.#####.#.#.#####.#.#########.#########.#.#####.#.#.###.###.#.#.#######.#.#.#########.#######.#.#####.#.#
#...#...#...#...#...#.#.#....P..#...#...#..P#P..#.#...#...#...#.#.#.#.....#...#P..#...P...#.....#P#...#P..#...#P..#...#.......#P......#.#...PP..#.#..P#.#...#P#..P.P.P#P..#...#......P#P....#...#...#P#.#
#.#.#.###.#.###.#.###.#.#########.#####.###.#####.#.#.###.#.#.###.#.#######.###.#.#.#####.#.#####.#.#.###.###.#####.#.#####.#####.#####.#########.###.#P#.###.#.#####.#######.#.#########.#.#####.#.###.#
#.#.#P...P#.#P..#.#P..#.....#PPP...P..#.#..P#.....#.#..P#.#.#P#...#...P...#.#..P#....P#P..#...#P#.#.#...#.#...#..P#P#.#...#.....#...#...#P..#...#.#...#.#.....#.....#.#P..#P..#.#........P#..P.P..#...#.#
#.#########.###.#.#.#.#####.#########.#.#.###.###.#.#####.#.###.###.#####.#.#.#########.#.###.#.#.#.###.###.###.#.###.#.#.###.#.###.#.###.#.#.#.#.#.###.###.###.#####.#.#.#.###P#.#####.#############.#.#
#.........#...#...#P#.#..P#..P..#P#...#P#..P..#P..#..P....#.#P..#P....#P..#P#.#.....P...#P..#.#.#P#P#.#P#...#...#.....#.#...#P#...#...#...#P..#P#P..#.....#.#P..#P....#.#...#P#.#.#.....#..PP.PP..#...#.#
#.#####.#.###.###.#.#.#.#######.#.#.###.#######.###########.#.#########.###.#.#.###########.#.#.#.#.#P#.#.###.#####.###.###.#.###.#####.#######.#####.###.#.#####.#####.#####.#.#P#.#####.#######.###.#.#
#..P#..P#..P#P#...#.#.#.......#.#P#..P#.....#.#P........#P..#.........#..P#P#P#.......#.....#.#P#..P#.#...#P..#....P#...#...#.#.#..P#..P#.....#....P#.#.#.#.....#.#..P#.#...#.#.#P#.....#..P.P..#..P#...#
#.###.#####.#.#####.#.###.###.#.#.###.#####.#.#########.#.#.#########.#.#.###.#######.###.###.#.#####.#####.#####.###.###.###.#P###.#.#####.#.#.#####.#.#.#####.#.#.###.#.#.#P#.#######.#######.###.###.#
#.#..P#P....#P.P#P..#.....#P.P#.#.........#.#P...P#...#.#P#...#.....#P#.#...#.#....P#P..#.#...#.......#.....#P..#.#...#.#P#.#P#.#P..#..P#...#P#P#....P#.#.....#...#...#..P#.#P#P......#...PP..#.#P.P#P#.#
#.#.#######.###.#.#######.#####.#.#######.#.#####.#.#.#.#####.#.#.###.#.###.#.#.###.###.#P#.#####.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#####.#.###.#.#.#####.#####.#######.#####.#.#######.#######.#.#.###.#.#
#P#P.....P#.#...#P#PPPP..P#P...P#P#..P#...#.....#...#.#....P#..P#...#.#...#...#.#.#.#...#P#.#...#.#.#...#...#.#.#.#.#P..#.#P...P#.#...#P..#.#.#P..#.....#...#..P#P.....P..#....P.P#P#P.PP..P#P..#P..#P#.#
#P#######.###.###.#########.#######.#.###.#####.#####.#####.#######.#.###.#####.#.#.#.#####.#.#.#.#P###.#####.#.###.###.#.#######.#.#.#####.#.#########.#.#.###.###.#####.#######.#.#######.#######.#.#.#
#.#P..#...#...#.....#..P.P..........#..P#.....#...#.......#P....P..P#...#...P...#...#P....#.#.#.#.#.#...#P....#...#P....#.......#...#.#..P.....P......#...#..P#...#.#PPP..#P.P.......P#.....#....P..#...#
###.#.#.#.#.#####.#.#.#################.#########.#.#########.#########.#######.#########.#.#.#.###P#####.#######.#####.#######.#####.#.#############.#.###.#####.#.#######.###########.#####.#######.###
#...#...#.#P#P.P#.#P#...#...PP..#P.P..#.....#...#P#...#.....#.#P........#..PP.P.#P........#P..#...#P#..P........#P.P..#...#P..#.....#...#..P#P.P..#P..#..P#...#P..#P#...#...#....P..#...#...#.#.....#..P#
#.#######.#.#.#.#.#.#.###.#####.#####.#####.#.#.#.#.#.#.###.#.#.#########.#######.#######.#######.#P#.###############.###.#.#.#####.###.#.#.#.###.###.#######.#.###.#.#.#.###.#####.#.###.#.#P#.###.#####
#...#.....#...#.#P#..P#...#P#...#...#..P..#...#..P#P#...#.#..P#P........#P#..P#...#.#........P.P#.#.#...#..P#.......#...#.#.#....P#...#...#.#...#...#........P#.#.....#.#..P#..P#...#.#...#P#.#..P#P.P..#
#.#.###.#######.#P#####.###.#.###.#.#####.#########.#####.#########.###.#P###.#.###.#.###########.#P###.#.#.#.#####.#.#.#.###.#.#####.#####.###.###.###.#######.#.#####.#.#####.#.#.#.#.###.#.###.#####.#
#P#...#...#..P#.#P#P.P#P#P#...#...#.#P.P#P#..P....#.#P......#..P.P#.#.#.#.#P..#.#P....#...#P..#...#.#...#.#...#...#...#.#.#...#P#P.P#.....#.#P..#P#..P#.#P.PPP..#P#P#...#.#..P#P#.#P#.#..P#.#......PP.#.#
#.###.###.#.###.#.#.#.#.#.#.###.#.#.#.#.#.#.#####.#.#######.#.###.#.#.#.#.#.#.#.###.#####.#.#.#.###.#.###.#####.###.#####.#.#.###.#.#.###.#P#.###.###.#.#.#######.#.#.###.#.#.#.#.###.#.#.#P###########.#
#.#.#...#P#...#.#...#.#.#.#.#P.P#.#...#.#P..#P....#.#..P#P..#P.P#P#...#.#..P#.#..P#.......#P#.#.#...#.#...#.....#...#.....#.#.#P.P#.#...#.#.#.#......P#.#.#P....#...#...#P#.#...#P....#.#.#.......#P....#
#.#.###.#.###.#.###.###.#.#.#####.#####.#####.#.###.#.#.#.#.###.#.#####.#####.###.#######.#.#.#.#.###.#.#######.#.###.#####.###.###.#####.###P#.#######P#.###.#####.###.#P#.#############.#######.#.###.#
#.....#.#...#.#P#...#...#.#...#...#...#.....#.#P#.....#...#..P#.#....P#....P#...#...#P..#P#.#..P#...#.#...#P..#....P#...#P..#...#...#P..#..P#P#...#..P#P#...#.........#.#.#.#P.......P#...#...#P#..P#..P#
#.#####.###.#.#.#####.###.###.#.###.#.#####.#.###.#############.#####.###.#.#.#####.#.#.###.#####.#.#.###.#.#.#########.###.#.###.###.#.###.#.###.#.#.#####.#####.#####.#P#.#####.###.#.###.#.#.#####.###
#.#.....#.....#.#..P..#.....#P#.#...#P#P....#..P#.#...P.....#...#P.P#..P#.#.#.#.....#.#.....#...#.#P#..P#P#.#.....#..P..#...#.#.#.#..P#P..#P#.#....P#.#...#..P..#.#.....#.#.#..P.P#.#P#...#P#.#.....#.#.#
#.#.###########.#.#####.###.#.#.#.#.###.#######.#.#.#######.#.#####.###.###.#.#.#####.#######.###.#.###.#.#.#####.#.#####.#.#.#.#.#.#####.#.#.#######.#.#.#####.#P#.###.#P#.#.#####.#.#.#.#.#.###.#.#.#.#
#.#...P.P......P#..P..#.#.#..P#P#.#P#...#P.....P#.#.......#.#.#P......#P#..P#.#....P#.......#.....#.....#.P.#.#...#...#...#.#.#..P#P..#.....#...PP..#P..#P#..P..#P#P#..P#.#...#P....#.#.#P#.#.....#.#...#
#.###############.###.#.#.#####.#.###.#####.#####.#######.#.#.#.#.#####.#.#########.#.#####.###########.#####.#.#####.#.###.#.#.#####.#######.#####.#####.#.#######P#.###.#########.#.###.#.###.#######.#
#..P.P#.....#..P..#.#P#...#.....#.....#P..#..........P..#.#...#.#.#.....#...#P....#...#..P#P..........#...#...#P........#...#P#.......#P..#....P..#.#P..#P#...#..P#.#P..#P.....P....#...#.#P#...#....P#.#
#####.###.#.#.#####.#.###.#.#.###.#####.#.#############.#.#######.#.#####.#.#.###.#.###.#.###########.###.#.#.###########.###.#.#######.#.###.#####.#.#.#.###.#.#.#.###.###########.###.#.#.#.###.###.#P#
#...#.#P..#.#.#.....#.#P#.#.#P..#.......#........P.P#P..#...#P....#PPP.P#P#P#.#.#.#P#...#.#PP...#P.P.P#.#.#.#...#....P#.#.#P..#P#P.....P#P..#.#.....#.#P#...#.#.#...#P..#P....P.....#P#.#.#P#...#P..#.#P#
#.#.#.#.###.#.###.###.#.#P#P###.###################.#####.#.#.###.#####.###.#.#.#.###.###.#####.#.#####.#.#.###.#.###.#P#.#.#####.#########.#.#.#####.#.###.#.#.#####.###.###########.#.#.#.#######.#.#.#
#.#P#P.P#P#P#....P#...#P#.#.#...#...#.#.....#P...P#.....#.#.#.#..P#P..#...#.#P..#..P#.#P#....P#.....#P......#...#.#.#P#.#.#..P#P..#P........#.#.#.PP..#...#P#.#...#P....#.#P...P#.....#P..#......P#P#..P#
#.#######.#.#######.###.#.###.###.#.#.#.#.###.###.#####.#P#.#.#.#####.###.#.###.###.#.#.#####.#####.###.#######.#.#.#.#.#.###.#.###.#########.#P#####.#####.#.#.#.#####.#.###.#.#.###.#######.###.#.#####
#....P..#.#.......#.#...#..P#..P..#.#...#.......#....P#.#P#.#P#P........#.#...#...#...#P...P#P.P..#...#...#P.P#P#P#...#....P#.#..P#.#...#.....#.#P..#P.......P#.#P....#P#.....#.#...#.......#...#.#.#...#
#.#.###.#.#######.#P#.#.###.#.#####.#.#############.###.###.#.###########.#.#.###.#########.#####.###.#.###.#.###.#.#########.###.#.#.#.#.#####.#.#.###.#######.#####.#########P#.###.#####.#####.#.###.#
#.#.#P#.#.....#...#.#.#..P#.#P.P#...#....P#P.P#...#...#....P#.#..PP...#P.P#P#...#.#P....#...#...#...#.#.#...#.#..P#.#..PP..P#.....#.#.#P..#P..#...#P.P#.#.#...#.#...#.....#...#.#.#..P#.#...#P...P#.....#
#P#.#.#.#.###.#.###.###.###.#####.#######.#.#.#.#.#.#.#######.#.#####.#.###.###.#.###.#.#.#.#.#.###.#P#.#.###.#.###.#.#####.#######.#.#######.#######.#.#P#.#.###.#.###.###.#.#.###.###.#.###.#########.#
#.#.#...#.#...#.#.#...#P#P..#P..#.....#...#P#..P#.#.#...#.......#P...P#..P#.#...#P..#.#...#..P#P.P#.#.#P#.#.#.#.#...#P....#..P#..P#.#...P...#.....#.#.#..P#.#P....#.P.#...#P#P...P..#P..#P#...#...#.....#
#.#.###.#.#.###.#.#.#.#.#.###.#.#####.#.###.#####.###.###.#######.#.#####.#.#######.#.###.#########.#.###.#.#.#.###P#####.###.#.#.#.#######.#.###.#.#.#####.#########.###.#P#########.#.#.#.#.#.#.#.#####
#P#...#...#...#.#...#.#...#...#.#..P..#...#...#...#...#P...P..#...#.#P....#......P#...#..P#..P#.....#..P#.#...#...#P#...#.#P#...#.#.#.....#...#P#P..#P...P#.#...#.....#P..#P#.#P...P#P#...#.#P#P#P..#..P#
#####.#.#######.#.###.###.#.###.#.#######.###.#.###.#.#.#######.#####.#########.#####.#####.#.#.#######.#.#.#####.#.#.#.#.#.#####.#P#.###.#####.###.#####.#.###.#.#####.###.#.#.###.#.#####.###.#####.###
#P....#P#...#..P#...#P.P#.#.#.#.#.#P..#P.P#P..#...#.#P#..P#....P#.....#.......#..P....#.....#.#...#P.....P#..PP...#..P#..P#....P#.#.#...#.#.#P....#..P#.#.#...#.#...#.........#..P#P#...P...#...#.#....P#
#.###.###.#.#.#########.#.#P#.#.#.###.#.###.#####.#.#.#.###.#####.#####.#####.#####.###.#####.###.#########################.#.###.#.#.###.#.#.###.###.#.#.###.#.###.#############.#.#######.#.###.#.###.#
#P#P.P#...#.#.#...PP...P#.#.#P....#...#.#P..#P......#.#.#...#..P..#..P#..P..#.#..P#P..#.#..P#..P#...P..P#.#.........#P......#.#...#.#.#..P#...#P..#P..#P#...#.#...#P..P.P....P....#...#PP...#.#P#...#...#
#P#####.###.#.#.#########.#.#######.#.#.#.###########.#.#.###.#####.###.###.#.#.#.#####.###.###.#.#####.#.#.###.###.###.#.###.#.###.#.#.#####.#.###.###.#.#.#.###.###################.#######.#.#.###.###
#.#.....#.#...#...#...#...#...#.....#P#P#.#.........#.#.#...#...#P..#....P#P#P#.#P...P#.#...#...#P...P#.#....P#...#..P#P#.#P#.#.#P.P#.#.....#.#...#.....#P#.#P..#.......#..P....PP.P#...#P..#P#P..#.#...#
#.#.#####.#######.#.#.#.#####.#.#.#####.#.#.#######.###.###.###.###.#.#####.#P#P#####.#.#.###.#########.#########.###.###.#.#.#.#.###.#####.#P###.#.#####.#.###.#.#.###.#.###.#####.###.#.#.#.###.#.###.#
#.#.#......P......#.#.#.......#.#.......#...#....P#...#.#.....#..P#...#P....#P#...#P#...#.#...#....P...P#P.....P.P#....P.P#P..#.#.....#P....#.#...#.#..P..#.#...#P#.#...#..P#P#...#.#...#.#.#..P#...#P..#
#.#.#.#.###########.#.#########.#############.#.#####.#.#.#######.#.###.#####.#.#.#.#####.#.#####.#######.#########.###########.#.#####.#######.###.#.#####P#.#####.#.#######.#.#.#.#.###.#.###.#####.#.#
#...#.#PPP#.......#.#.........#.#..P...P.PP...#.#P....#.#.....#...#..P#.#P#...#.#.#..P#P..#...#...#P#P.P#.....#PP...#....PP...#.#...#P.P#..P....#...#P.P.P#.#P#.....#P..#...#P#.#...#P#...#..P#P....#P#.#
#.#######.#.#######.###.#######.#.#############.#.#####.#####.#.#######.#.#.#####.#.###.#.###.#.###.#.#.#.###.#######.#######.#.#####.###.#######.#######.###.###.#####.#.#.#.#.#####.#.#####.#####.#.#.#
#.........#..P........#...........#..P.P.......P#..P.......P#P......P...#P........#....P#.......#....P#.....#......P.....PP.#.P.......#.....PP.P......P.#P........#PP....P#P.P#....P#P....P.#.........#..
#########################################################################################################################################################################################################

View file

@ -0,0 +1,101 @@
###########################################################################################################################################################################################################################################################
#...............#.......#...#.......#.........#...#...#...#...#.......#.......#...#.........#.....#.......#.........#...#.....#...........#.........#.......#...............#.....#...#.....#.#............P#.......P...#.............#.........#.......#.#
#.###.#######.#.#####.#.#.#.#.###.#.#.#######.#.#.###.#.#.#.#.#.###.#.#.#.###.#.#.#######.#.#.###.#.#.###.#.#######.#.###.#.###.#.#######.#.#.#####.#.#####.#.#############.#.###.#.#.#.###.#.#.#########.#.#.#.#######.#.#.###.#######.###.#####.###.#.#.#
#...#....P#...#.......#.#P#...#...#...#.....#.#.#...#.#.#...#.....#.#.#.#.#.#...#.........#...#.#.#.#.#.....#.....#.#.....#...#.#.#.......#.#.#.#.....#...#...#...........#.#.#.#.#.#...#...#.#.#...#.....#.#.#.#.....#.#.#..P#.#...#...#.#.......#...#...#
###.#######.###########.#######.#######.#.#.#.#.###.#.#.###########.###.#.#.###################.#.###.###########.#.#######.#.#.#.#.#######.#.#.#.#######.###.#.#########.#.#.#.#.#.#####.###.#.###.#.#####.###.###.###.#.###.###.#.#.###.#########.#####.#
#...#.......#.........#.......#.#.....#.#.#.#...#...#...........#...#...#.#.......#.....#...#...#...#...#.........#.......#.#...#.#.#....P..#.#.....#...#.....#P#.......#.#...#...#.#...#.....#...#.#...#.#...#...#....P#...#...#.#...#.....#.....#.#...#.#
#.###.#######.#####.#########.#.#.###.#.#.#######.###############.###.###.###.#####.#.#.#.#.###.###.#.#.#.###.###.#######.#.#####.#.#########.#######.#.#######.#.#####.#.#####.###.#.#.#####.###.#.###.#.###.###.#########.###.#.#######.#.###.#.#.#.###.#
#.#...#.....#P#...#.......#...#.#.#.#.#.#.....#...#...#.........#.....#...#P..#.....#.#...#.#...#...#.#.#.#.#.#...#...#...#...#...#.....#..P..#.......#....P#...#.....#...#.....#...#.#.#...#...#...#...#...#...#.....#...#...#...#.......#...#.#.#.#.....#
#.###.#.#.###.#.#.#######.#.###.#.#.#.#.###.###.###.#.#.#######.#######.###.###.#####.#####.#.#.#.#####.#.#.#.#####.#.#.###.###.#######.#.###.#.###########.#.#######.#.#######.#.#.#P#.#.#.#######.#.###.#####P#.###.#.#.###.#####.#########.#P###.#.#####
#.....#.#.....#.#.......#...#.....#.#.#..P#.#...#...#.#.#...#.....#.....#.#...#.#.....#P..#...#.#.#.....#...#...#...#.#...#.#...#...#...#.#...#...#.....#...#.#...#...#.#.....#.#.#...#...#.........#.#.#.....#.#.#.#...#..P#.......#.....#.#...#...#...#.#
#######.#######.###.###.#####.#####.#.#####.#.###.###.#.#.#.#####.#.#####.#.#.#.#.#######.#####.#.#.#######.###.#.###.###.###.###.#.#.###.###.###.#.#.#.#.###.#.#.#.#####.###.#.#.###################.#.#.#.###.#.#.#####.#.###.#####.###.#.###.#.#####.#.#
#.....#.#.....#...#.#...#...#.......#.....#...#...#.#.#...#.....#.#.#.......#...#.#P..P...#.....#...#.#.....#...#.#.#.#..P#...#...#.#...#...#P#...#.#.#.#.......#.#...#...#P#.#.#...#.#.......#.....#.#...#...#.#...#P..#.#...#.#.....#...#...#.#.#...#.#.#
###.#.#.###.#.#.###.#.#####.#######.#####.#.#####.#.#.###.#####.#.#.#.#########.#.###.###.#.#########.#.#####.###.#.#.#.###.###.###.###.#.#.###.#####.###########.###.#.###.#.#.###.#.#.###.#.#.###.#.#.#####.#.###.#.#.#.#####.#.#####.###.#.#.#.#.#.#.#.#
#..P#.#.#...#.#.#P..#.....#.....#.......#.#...#...#.#...#....P#.#.#.#.#.......#.#.#...#...#.#P........#.#...#...#.#.#.#.#P..#....P#...#.#.#...........#.......#.#...#.......#P#.#...#...#...#...#...#.#P....#...#.#...#.#.......#...#...#..P#.P.#.#.#.#.#.#
#.#####.#.###.###.#######.###.###.#######.###.#.###.###.#####.#.#.#.#.#.#####.###.#.#####.#.#####.###.#.#.#.###.#.#.#.#.#.###########.#.#####.#######.#.#####.#.###.#########.#.#.#######.#######.###.#####.#####.#####.###########.#.###.#######.#.#.#.#.#
#.#...#.#.#.#.#...#.....#.#...#.....#.....#.....#.#.....#.....#.#...#.#.#...#.....#.....#.#.#...#...#.#...#.#.#.#.#.#.#.#.........#...#.....#...#...#.#...#...#P..#.#.#.......#.#...#...#.#.....#.#...#...#...#.......#.........#...#...#.#.....#.#.#.#...#
#.#.#.#.#.#.#.#.###.#####.#.###.#####.###########.#.#####.#####.#######.#.#############.#.#.#.#.###.#.#####.#.#.#.#.#.#.#.#######.#.#######.#.###.#.#####.#.###.#.#.#.#.#######P###.#.#.#.#.#.###.#.#####.###.#.#####.#####.#####.#####.#.###.###.#.#####.#
#...#.#...#.#...#.........#.....#....P#.....#.......#.#.....#...#.......#.#...........#.#.#...#.....#.#...#.#.#...#.#P#.#.#..P....#.......#.#.#...#.......#.#...#.#...#...#.....#.#.#.#...#P#.....#.#.......#.#P....#..P#...#...#.#.....#.....#...#.....#.#
#.###.#####.#####.#########.#####.#####.###.###.#####.#.#####.###.###.###.#.#####.###.#.#############.#.###.#.#####.#.#.###.#######.#####.#.###.###########.#.#.#####.###.#.#####.#.#.#####.#######.#.#.###.#.###.#.#.###.###.#.#.#.###########.#######.#.#
#.#.....#.......#.#.....#...#...#...#...#.#...#...#...#...#...#.....#.#...#.#...#.#...#.......#.......#.#...#.......#...#...#.....#.#...#.#.#...#.......#...#P#.#...#.#.#.#.#.....#...#...#.....#...#.#...#.#...#.#.#.#...#.#.#...#.#...........#.......#.#
#.#.#####.#####.#.#.###.#.###.#.###.#.###.###.###.#.#####.#.#########.#.#.#.#.#.#.#.#####.#####.#######.#.###.#.#########.###.#####.#.###.#.#.#########.#.#####.#.#.#.#.#.#.#####.#.###.#.#######.###.###.#.###.#.#.###.###.#.#####.#.#############.#.###.#
#.#....P..#...#.#.#.#...#...#.#...#...#.....#...#.#.......#...#...P...#P#...#.#...#.......#...#.#.#.....#...#.#.#.........#...#...#.#...#...#.....#...#.#.....#..P#..P..#.#.....#.#.#...#...#.....#.#.#...#.#...#.#...#.#...#...#.#.#.#...#...#.....#.#...#
#.#########.#.#.#.#.#######.#.###.#########.###.#.###########.#.#############.#############.#.#.#.#.###.###.###.#.#######.#.#.#.#.#.###.#####.###.#.#.#.#####.###.#######.#####.#.#.#.#####.#.#####.#.#.#####.###.###.#.###.###.#.#.#.#.###.#.#.#.###.#.###
#...#...#...#...#.#.....#...#...#.............#.#.............#.#...........#...............#...#.#...#...#...#...#.......#.#.#.#...#.....#.#...#.#.#.#...#.#...#...#P#...#.....#...#.....#...#.....#.#.....#.#...#.#.#.#...#.#.#.#...#.....#...#...#.#...#
###.#.#.#.#####.#.#.###.#.###########.#.#.#####.#.#############.#.#########.#.#######.###########.###.###.###.#####.#######.#.#.#####.###.#.###.#P#.#.#.#.#.###.###.#.#.###.#####.#######.#####.###.#.#####.#.###.#.#.#.#.#.#.#.#.#####.###########.#####.#
#...#.#..P#.#...#.#...#...#.........#.#.#.#...#.#.#.........#...#.#.....#...#...#...#.#.......#...#...#P#...#...#...#.#...#.#...#...#...#.#.....#...#.#.#.....#.#.....#...#.#...#...#.#...#.....#.#.#...#...#...#...#.#...#...#.#.....#.#...#P......#.....#
#.###.#####.#.###.#######.#.#.#####.###.###.#.#.#.#.#######.###.#.#.###.#.#####.#.#.#.#.#.###.#.#.#.###.#.#####.#.###.#.#.#.#####.#.#.#.#.#######.###.#.#######.#######.#.#.#.#.###.#.#.###.#####.#.###.#.#####.###.#.#####.###.#.###.#.#.###.#######.#####
#P#...#...#...#.#.......#.#.#.....#.....#...#...#.#..P..#.#...#.#.#...#.#.#.....#.#.#.#.#.#...#P#.......#.#.....#..P#...#...#....P#...#.#.......#.#.#.#.......#.......#.#.#.#.#.#...#.#.#...#.....#.....#.....#...#P#.......#...#.#.#.#.#...#P........#...#
#.#.###.#.#.###.#######.#.#######.#####.#.#######.#####.#.###.#.#.###.###.#.#####.#.#.###.#.#############.#.#####.#.#P#################.#######.#.#.#.#####.#.#######.###.#.#.#.#.###.#.#.#####.#.###########.###.###########.###.#.#.#.###.###########.#.#
#.#...#.#.#.......#...#.#.........#.....#...#P..#.#.#.....#...#.#..P#.#...#.P...#.#.#.....#.........#...#.#...#.#.#.#.#P................#.....#.#.#.#.#...#.#.......#.....#.#.#...#...#.#...#...#...#...#.#.....#.....#.......#.....#.#...#..P#.........#.#
#.###.#.#######.###.#.#.###########.#######.#.#.#.#.#.#####.###.###.#.#.#######.#.#.###.###########.#.#.#.###.#.#P#.#.###.###############.###.#.#.#.#.#.#.#.#.#####.#######.#.#####.###.###.#.#####.#.#.#.#.#########.#.###########.#.###.#.###.#####.#.###
#...#.#.........#...#...#P....#...#...#...#.#.#.....#...#...#...#.....#.#...#...#.#...#.#...#.....#...#.....#.#...#.#...#...#.............#P..#.#...#.#.#.#P#.....#.#...#...#.....#...#.#.#.#...#...#.#...#.#...P.....#.....P...#...#...#.#.....#...#.#...#
#####.#.#########.#######.###.#.#.###.###.#.###########.#.#####.#.#####.#.###.###.###.###.#.#.###.#########.#.#####.###.#.#.#.###.#########.###.###.#.#.#.#####.#.#.###.#.#######.###.#.#.#.###.#.###.###.#.#.#################.#.#####.#P###.###.#.###.#.#
#...#.#.#.......#.#.....#...#.#.#...#.....#.............#.#...#.#.#P#...#.....#.#...#...#.#.#.#...#.........#.#...#...#.#.#P#.#...#...#.......#...#P#...#.#...#.#.#.....#.......#...#.#.#.#...#.#...#.#...#.#.#.................#.#.....#...#...#.#...#.#.#
#.#.#.#.#.#####.#.#.###.#.#.#.#.#.#.#####.###############.#.#.#.#.#.#.###.#####.###.###.#.#.#.#.###.#########.#.#.###.#.###.#.#.###.#.#######.###.#######.#.#.###.#####.#######.###.#.#.#.###.#.###.#.#.###.#.#.###################.###.###.###.#.###.###.#
#.#...#.#.#...#.#...#...#.#.#.#.#.#...#...#.....#.........#.#...#.#.#...#.....#...#.#.#...#.#.#.......#.......#.#...#.#...#.#.#.....#.....#...#...#.......#.#.....#...#.#.#.....#P#...#.#.....#.#.....#.#.#.#.#.#.........#P........#.#.#.#.#..P#.#P#.#...#
#.#####.#.#.#.#.#####.###.#.###.#.#####.###.###.#.#########.#####.#.###.#####.###.#.#.#####.###########.#######.###.#.###.#.###.#########.#.###.###.#######.#######.#.#.#.#.#####.#.###.#.#####.#######.#.#.#.#.###.###.#.#######.###.#.#.#.#####.#.#.#.#.#
#.#.....#...#.#.....#...#.#.#...#.#.....#...#.#.#.#.........#.....#...#.#...#...#.#.#...#.#...#...#...#.......#.#.#...#.#.#...#.#.....#...#.#.#.....#P..#...#P......#.#...#...#.....#...#.#...#.....#.#.#.#.#.#...#.#...#.......#...#.#.#.#.#.....#...#.#.#
#.#.#####.#####.#######.###.#.###.#.#####.#.#.#.#.###.###.###.#####.#.#.#.#.###.#.#.#.#.#.###.#.#.#.#.#######.#.#.#####.#.###.#.#.#.###.###.#.#########.#.#.#####.#####.#####.#.#####.###.#.#.#.###.#.#.#.#.#.###.###.#########.#.#.#.#.#.#.#.#####.###.#.#
#.#.#.....#.....#.....#.P.#...#.#.#.#...#.#.#...#...#...#.#...#...#.#.#...#...#...#...#...#.#...#.#.#...#...#...#.......#.....#...#.#...#P#.#...........#.#...#...#.....#...#.#...#...#.#...#.#...#.#.....#.#...#...#.....P.#...#.#.#.#...#.#.#...#...#.#.#
#.###.#####.#####.###.###.#.###.#.#.#.###.#.#######.#####.#.###.#.###.#######.###########.#.#####.#.#.#.###.#####.#.#################.###.#.#.#######.###.###.#.###.#####.#.#.###.#.###P#####.###.#.#####.#.###.###.#.#####.#.#####.#.#.###.#.#.#.###.#.###
#.#...#...#.........#...#.#P#...#...#.....#.#.....#.....#.#.....#...#.#.......#.......#...#...#.#.#.#.#.....#.....#.......#.........#...#...#.....#...#.....#.#.....#....P#.#.P.#.#.#.......#.#...#.....#.#...#.....#.#.....#.#.....#...#...#.#.#.....#...#
#.#.###.#.#############.#.#.###.###########.#.###.#####.#.#########.#.#.###.###.#####.#.###.#.#.#.#.#.#####.#.#########.###.#.#####.###.#.#####.#.#####.#####.#####.#.#####.###.###.#.#.###.#.#########.#.###.#########.#####.#.#####.###.###.#.#########.#
#.#...#.#.......#.......#.#.....#.#.......#.#.#.......#.#...........#.#...#.#...#...#....P..#...#.#.#.#...#.#.#...#...#.....#...#.#...#.#.#...#.#.......#.....#...#.#...#.....#...#.#.#...#P#.#.......#.#.#...#.#.....#.#...#.#.#...#.#...#P..#.#.......#.#
#.###.#######.###.#####.#.#####.#.#.#.###.#.#.#######.#.#####.#######.###.#.#.###.#############.#.#.#.###.#.#.#.#.#.#.#########.#.###.#.#.#.#.#######.###.###.#.#.#####.#.###.###.#.#.###.###.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#####.#.###.###.#.#
#...#.......#.#...#.....#.#...#.#...#...#...#...#.....#.#...#.#.......#...#.#.#...#.........#.#.#...#...#.#.#...#...#.......#P..#...#.#.#.#.#.......#.#...#...#.#.....#.#...#.#...#.#...#.#.....#P......#.#.#.#...#.#...#.#.#.#...#...#...#...#...#.#.#P#.#
#.#.#######.#.#.#########.#.#.#.#######.#######.#.#####.#.#.#.###.#.#.#.#####.#.###.#######.#.#.#######.#.#.###############.#.#####.#.#.#.#.#######.#.#.#######.#####.#.###.###.###.###.#.#.#######.#######.#.#####.#.###.#.#.###.#.#####.#.#####.#.#.#.#.#
#.#.#.....#.#.#.......#...#.#...#.......#.......#.#.....#.#.#...#.#.#.#.....#.#.#...#.....#.#.#.#.....#.#...#...#.#.......#.#.....#.#.#.#...#.....#.#.#.#.....#...#.#...#.#.....#...#.#.#.#.#.#...#.#.......#.#.....#.#...#.#.#...#.#.#...#.#...#...#.#.#.#
#.###.#.###.#.#######.#.###.#####.#####.#.#######.###.###.#.###.###P#######.#.#.#.###.###.#.#.#.#.#####.#.###.#.#.#.#.#####.#####.#.#.#.#.###.###.#.#.#.#.###.###.#.#####.#######.###.#.#.#.#.#.#.###.#######.#.#####.#.###.#.#.###.#.#.###.#.#.#####.#.#.#
#.....#.....#...#...#...#.....#...#.....#.#.....#...#.....#...#...#.......#...#.#...#...#...#.....#...#.#.#...#.#.#.#.....#.#...#.#.#...#.#...#P..#.#.#.#...#...#.#.......#.......#.....#.#...#.#.#...#.....#...#.....#...#.#...#.....#...#...#.#P........#
#.###########.#.#.#.#########.#.#.#.#####.#.###.###.#.#######.###.#######.#####.###.###.#####.#####.#.#.#.###.#.#.#.#####.#.###.#.#.#####.#.###.###.###.###.###.#.#.###.#.#######.#.#####.###.#.#.#.#######.#####.#######.#.#.###########.#.###.#########.#
#.#.....#.....#.#.#.#.......#.#.#.#.#.....#..P#.#...#.#.......#...#.....#.........#.#.....#...#.....#...#.#...#...#.....#.......#.#.......#...#...#.....#...#.#...#.#...#...#.....#.P...#....P#.#...#.....#...#...#...#...#.#.#...#.......#..P#.....#...#.#
#.###.###.#####.#.#.#.#.###.#.###.#.#.#####.###.#.#####.#########.#.###.#.#.#######.#####.#.###.#########.#.#####.#####.#########.###########.###.###.###.###.#######.#####.#.#########.#######.#####.###.#.###.###.###.###.#.#.#.#.#######.#######.#.#.###
#...#...#.....#...#...#.#...#P....#.#.#P....#...#...#...#.......#...#.#...#.#...#...#...#P#.#...#.......#...#.......#...#P..#...#.#....P......#...#...#...#.........#.#.#...#.#.....#...#...#.#.......#.#.#..P..#...#...#.#.#.#.#...#...#...#.....#...#...#
###.###.###.###########.#.#########.#.#######.#####.#.#######.#.#####.###.###.#.#.#.#.#.#.###.###.#####.#####.#######.#####.#.#.#.#.###########.###.###.###.#######.#.#.#.###.#.#####.###.#.#.#########.#.#####.###.#.###.#.#.#P#####.#.#.###.###.#######.#
#.#...#.#...#...#.......#...#.....#.#.#....P#.....#.#.#.....#.#...#.......#...#...#.#.#.#.#...#.......#...#.....#...#.#.....#.#...#.....#..P#...#...#.#.#.....#..P..#.#...#...#....P#.....#.....#.......#.....#.....#.#...#.#P#.#.#...#...#.#.#...........#
#.###.#.#.###.#.#.#########.#.###.#.#.#.###.#.#.###.#.#.###.#.###.###.#####.#######.#.#.#.#.#.#.#########.#.#####.#.#.#.###.#.#########.#.###.###.###.#.###.#.#####.#.#.###.#######.###########.###.#.#######.#####.#.#.#.#.#.#.#.#.#######P#.###########.#
#.....#...#...#...#...#...#...#.#.#.#.#...#.#.#.#...#.....#.#.#.#...#.#...#...#.....#.#.#...#P#.#...#.....#...#...#...#...#.#.#.......#...#...#...#...#...#.#.....#.#.#.....#.........#.........#...#.#.....#.#.....#.#.#.#.#.#.#.....#...#.#...........#.#
#.#######.#.#######.#.#.#.#####.#.###.###.#.#.#.#.#########.#.#.###.#.#.#.###.#.#####.#.#######.#.#.#.###.#####.#########.###.#.#.#######.#.#####.###.###.#.#####.#.#.#######.#.###.###.#########.#####.###.#.#.#####.###.#.#.#.#####.#.#.#.#########.#.###
#.#.....#.#.#.#.....#...#.......#...#.#...#.#.#.#...........#.#.....#.#.#.....#...#...#.#.......#.#...#...#.....#........P#...#.#.........#.....#.......#.#.#...#.#...#...#.#.#...#.#...#...#.........#...#.#.#.#.....#...#.#.#...#..P#.#.......#...#.#...#
#.#.###.###.#.#.#############.#.###.#.#.###.###.#############.#.#######.#.#########.###.#.#######.#####.###.#####.#####.###.#.#.###############.#######.#.###.#.#.#####.#.#.#.###.#.#.###.#.#.#######.###.#.#.#.#.#####.#.#.#####.#.###P###.#####.#.#####.#
#...#P#.....#.....#.....#...#.#...#..P#.#.#.#...#.........#...#.#...#...#.#.........#.#...#...#...#......P#.....#.#.....#...#P#.#.........#...#.#...#...#.....#...#.....#.#.....#.#.#.#...#...#.........#.#...#.#...#...#.#...#...#.....#.#.#.....#.....#.#
#####.#############.###.#.#.#.###.#####.#.#.#.#.#.###.###.#.###.#.#.#.###.#.#########.#####.#.#.###############.###.###.#.#####.#.#.#####.#.#.#.###.#.#############.#####.#####.#.###.#########.#######.#.#########P#.#.#####.#.#########.#.#.#########.#.#
#.....#...........P.#.#.#.#.#...#.......#.#.#.#.#...#...#...#.#...#...#...#.....#.......#...#.#.#.......#.....#.....#...#.....#.#.#.#.#...#.#.#...#.#...#.#......P..#...#.....#.#...#.#.......#.#.....#.#.........#...#.#.....#...#...#P....#.........#...#
#.#.###.###.#########.#.#.#.#.#####.###.#.#.#.#.#######.#####.###.#############.#######.#.###.#.#.#####.#.###.#.#############.#.###.#.#.#####.###.#.###.#.#.#####.###.#.#####.#####.#.#.#####.#.#.#.#.#.#########.#####.#.###.###.#.#.###.###########.###.#
#P#.....#.#...#..P........#.#.#...#...#.#.#...#.........#.......#.#...........#...#...#P....#.#.#.#...#...#.#.#.#....P..#.....#.....#.#........P#.#.....#.#.....#.....#.#...#.....#.....#.P.#.#.#.#.#.#.#.....#.#...#...#...#...#.#.#...#.....#.....#...#.#
#.#######.###.#############.###.#.#####.#.#.#################.#.#.#.#######.#.###.#.#.#######.#.#.#.#.###.#.#.#.#.#####.#.###########.#########.#.###.###.#####.#######.#.#.#####.#######.###.#.###.###.#.###.#.#.###.#####.#.###.#.###.#####.#.###.###.###
#.#.......#.#...#.......#P#.#...#.......#...#.............#...#.#.#.#P..#...#..P#...#...#...#.#.#.#.#...#...#...#.#.....#.#...........#.........#...#.....#.....#.....#.#.#...#...#...#...#...#...#.....#...#...#.....#.....#.#...#...#.#.....#.#.#...#...#
#.###.###.#.###.#.#####.#.#.#.#.#######.#####.###########.#.###.#.#.###.#.#####.#######.#.#.#.#.#.#.###.#########.#####.#.#.#########.#.###########.#######.#####.###.#.#.###.#.###.#.###.#.#####.#.#####.#.#.#########.#.#####.#####.#.#.#####.#.###.###.#
#.....#P#.#...#.#...#...#.#.#.#.#....P#.#.....#...........#.#.#.#.#...#.#.....#.....#.#...#.#.#...#...#.....#...#.#...#...#.........#.#.......#...#.....#...#...#.#P....#.#P#.#.#...#...#.........#.#...#.#.#.#.........#.#...#.#.....#.#.#P..#.#...#.....#
#######.#.#.#.#.#.###.###.#.#.#.#.###.###.#####.###########.#.#.#.###.#.#####.#####.#.#####.#.#######.#####.#.#.#.#.#.###########.###.#######.#.#.#####.#.###.#.#.#######.#.#.#.#.#.###.###########.#.#.###.###.###########.#.#.#.#####.#.#.#.#.#.#######.#
#.......#.#.#.#...#..P#...#...#.#P#.#...#...#...#.....#...#.#...#...#...#...#...#...#...#...#.#...P.#.#.......#.#...#.........#...#...#.......#.#.....#.#...#.#.#...#.....#...#P#P#...#.....#........P#.....#...#.....#.....#...#...#...#...#.#.#.........#
#.###.###.#.#######.###.#.###.###.#.###.###.#.###.###.#.#.#.#######.###.#.#.###.#.###.#.#.###.#.###.#.#########.#.#########.#.#.###.#.#.#######.#####.#.###.#.#####.###.#######.#####.#####.###############.#.#.#.###.#.#########.#.###.#######.#.#########
#...#.#...#..P....#.#...#.....#...#...#.....#...#...#...#P..#.....#.#.#.#.#...#.#..P#P#.#.#...#.#...#.#.......#.#.........#.#.#.#.#.#.#.....#...#...#...#.#...#.....#...#...P.#...#...#...#.#.....#.........#.#.#...#...#.....#...#...#.........#.#.....#.#
###.#.#.#########.#.###########.###.#.#########.#.#.#########.#.###.#.#.#####.#.###.###.#.###.#.#.#.#.#.#####.#.###.#######.#.#.#.#.###.#####.###.#####.#.###.#.#####.###.###.###.#.###.#.#.#.###.#####.#####.#####.#####.###.#####.#.###########.#.###.#.#
#.#.#...#.........#.....#.......#...#...#P..#...#.#...........#..P#.#.#.#.....#.#...#...#...#...#.#.#...#...#.#.#...#.......#.#.#.#.....#...#.#...#.....#...#.#...#.....#...#.....#.....#.#.#...#.....#.#...#.....#.#.....#...#...#.#.#...#.......#...#...#
#.#.#######.#####.#####.#.#######.#######.#.#.###.###############.#.#.#.#.###.#.###.#.#####.#####.#.#####.###.#.#####.#########.#.#######.#.#.#.#.#.#######.#.###.###.#.###.#######.#####.#.#.#.#####.#.###.#####.#.#.#####.###.#.###.#.#.#.#######.#.#####
#...#.......#...#.....#.#.#.....#.#..P....#.#.#...#.........#.....#.#.#...#.#.#P..#.#.....#.#.....#.....P.#...#.....#.........#.......#...#..P#.#.....#...#.#...#...#.#...#.#.....#.....#.#.#.#.#...#.#.#.....#...#..P#...#.....#.....#.#.#...#.#...#.....#
#.###.#####.#.#.#######.#.###.#.#.#.#######.#.#.###########.#.#####.#.#####.#.###.#P#####.#.#.###########.#.#######.#.#######.#####.###.#############.#.#.#.###.###.#.#.#.#.#.###.###.###.#.###.#.###.#.#.###.#.#########.#############.#.###.#.#.#######.#
#.....#...#.#.#...#...#.#.....#...#.#.....#...#.#...........#.....#.#.#.......#...#..P....#.#...#.......P.#.#....P#.#.......#...#...#...#.....#.....#...#.#...#...#.#.#.#.#.#...#...#.#...#.#...#.....#...#...#.............#...........#...#.#...#.....#.#
#######.#.#.#.###.#.#.#.#########.#.###.#.#####.#.#########.#####.#.#.#.#######.#########.#.#.#.#######.###.#.###.#.#########.#.#.###.###.###.#.###.#####.#.###.###.#.#.###.#.#.###.###.###.#.###.#########.#######.#######.#.#.#########.###.#.###.#.###.#
#....P#.#.#.#.#.....#.#P..........#...#.#.#...#...#.....#...#...#.#...#...#.....#.....#...#.#.#.......#...#.#.#.#.#.......#...#.#...#.....#...#.#.#...#.#...#...#...#.#.....#.#.#.#...#...#...#.#.#...#...#...#.....#.......#.#.....#...#.#...#...#.#.#...#
#.###.#.#.#.#.#######.#############.#.###.#.#.#####.###.#.#####.#.###.###.#.#####.###.#####.#.#####.#.###.#.#.#.#.#######.#.###.###.#######.###.#.###.#.###.#.###.###.#########.#.###.###.#####.#.#.#.#.#####.#.#####.#######.#####.#.#.###.#####.###.#.###
#.#.....#.#.#...#...#.....#.......#.#.#...#.#.......#...#.......#.......#.#...#...#.#P......#.#...#.#.#.#.#.#...#.....#...#...#...#.#.....#.....#...#.#..P#.#...#.#.#...........#..P#.#...#.....#.#P#.#.......#.#...#.#...#...#...#...#...#.#.........#...#
#.#######.#####.#.#######.#.#####.###.#.###.###.###############.#######.#.###.#.###.#########.#.#.###.#.#.#.###.#.#.###.#####.###.#.#.###########.#.#.###.#.###.#.#.#############.#.#.#.#######.#.#.#.#######.#.#.#.#.###.#.###.#.#######.#.###.#########.#
#.......#.....#.#..P.....P..#.......#.#...#.#.#.#.................#...#.#.#.#...#...........#.#.#...#.#...#...#.#.#.#...#.....#...#.#...#.........#.#.P.#.....#.#.#.....#...P...#.#.#...#...#...#...#.......#.#.#.#.#...#.#...#.#.......#.#...#.#.#.....#.#
#.#####.#####.#.###################.#.#.#.#.#.#.#.#################.#.#.#.#.#######.#######.###.###.#.#.#####.#.#.###.###.#####.###.#.#.#.#.###########.#######.#.#####.#.#####.#.#.#####.#.#.#############P###.#.#####.#.###.#.#######.#.###.#.#.#.###.#.#
#...#P#...#.#...#.....#.........#...#.#.#.....#...#P#P......#...P...#.#.#...#.......#.#...#.#...#...#.#.#...#.#P#.....#....P..#.#...#.#...#.#.....#...#.........#.....#.#...#.#...#...#...#.P.#...........#.....#.....#.....#.#.....#.......#.#...#.#.....#
###.#.###.#.#.###.###.#.#######.#.###.#########.###.#.#####.#.#######.#####.#.#######.#.#.#.#.###.###.#.#.###.#.#############.#.#.#######.#.#.###.#.#.###############.#.###.#.#######.#.#.###.#.#####.###############.#####.#.#####.#########.###.#.#####.#
#.#.#...#.#...#...#.#.#.....#P#.#.....#.......#.....#.#.#...#.#.....#...#...#.....#.P...#.#.#.#...#...#.#P..#.#...#.#.........#.#...#...#.#.....#...#.....#.......#...#.............#..P#...#.#.#...#.............#.....#...#...#.#...........#P#.#...#...#
#.#.#.#.#.#####.###.#.#####.#.#.#.#####.#####.#######.#.#.###.#.###.###.#.#######.#.#####.#.#.#.#####.#.###.#.###.#.#.#.#######.###.#.#.#####.#######.###.#.#####.#.#############.#########.###.#.#.###.#######.#.#.#.###.#####.#.#############.#.###.#####
#.#...#.#.......#...#...#.#...#.#.#.....#...#.......#...#.#...#...#...#.#.........#.#...#...#.#...#...#.....#.#P..#...#...#.......#...#.#...#.#.....#P#...#...#.#...#.....#...#...#...#...#.....#.#...#...#.#...#...#.#.....#...#P......#.......#P..#.....#
#.#####.#########.###.#.#.###.#.###.#####.#.#######.###.#.#.#########.#.###########.#.#.#####.###.#.#######.#.#.#########.#.###########.#.#.###.###.###.#.###.#.#.###.###.#.#.###.#.#.#.#.###.###.###.###.#.#.###.#####.#####.#####.###.#.###.#####.#####.#
#.....#.....#.......#.#.....#.#...#.#.#...#.....#.....#.#...#.......#.#....P..#.....#.#.....#...#.#...#.....#.#...........#.#.........#.#.#.....#.#...#.#.#...#.#.#...#.#..P#...#.#.#...#...#.#...#P..#.#...#.#...#...#.#.....#...#...#..P..#.......#...#.#
###.#.#####.###.###.#.#######.###.#.#.#.#.#####.#.#####.#####.#####.#.#######.#.#######.###.###.#.#.#.#####.#.#############.#.#######.#.#.#######.###.#.#.#.###.#.#.###.#######.###.#######.#.#.###.###.###.#.#####.#.#.#.#####.#.#.#######.#####.###.#.#.#
#...#.....#...#...#.#.........#.#...#.#.#.#.....#.....#.......#.#...#.....#.#.#.........#.#.....#.#.#...P.#.#...#...#.......#.#.....#...#.#.........#...#.#.#.#...#.#.....#...#P....#.#.....#.#.#.#.#P......#...#...#...#...#...#.#.#.....#.#...#.....#.#.#
#.#####.#####.###.#.###########.#####.#.#.#.#########.#########.#.#####.#.#.#.###########.#######.#.#####.#####.#.#.#########.#.#.#######.#.#.###########.#.#.#.###.#.#.#.###.#######.#.###.###.#.#.#####.#####.#.#########.#.#.#.###.###.###.#.#####.###.#
#P#.....#...#...#.#...#...#.....#...#...#.#...#.....#.......#...#...#...#...#...#.......#...#.....#.....#.....#.#.#...........#.#.........#.#...#.......#.#.#...#...#P#.#.....#.......#.#...#..P#.#.#...#....P#...#.......#.#.#.#...#...#.....#...#...#...#
#.#######.#.###.###.#.#.#.#.###.#.#.#####.###.#.###.#.#######.#.###.#.#####.#.###.#####.#.#.#.###############.#.#.#####################.###.###.#.#.#####.#.#####.#####.#####.#######.#.#####.###.#.#.#.###########.###.###.###P###.###.#########.#####.#.#
#.........#.........#...#...#.....#.......#.....#P..#.........#.......#..P..#.........#...#....P..............#.........................#.....#...#.......#.............#.............#...........#...#...............#.........#.......#...............#.#
###########################################################################################################################################################################################################################################################

View file

@ -0,0 +1,5 @@
##########
..#......#
#.P.####P#
#.#...P#.#
##########

View file

@ -0,0 +1,9 @@
#######################
...P..P...#P....#.....#
#.#######.#.#.#.#####.#
#.....#...#P#.#..P....#
#.#####.#####.#########
#...P....P.P.P.....P#.#
#.#######.#####.#.#.#.#
#...#.....#P...P#.#....
#######################

View file

@ -0,0 +1,5 @@
##########
#.#......#
#.P.####P#
#.#...P#.#
##########