summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2023-12-15 21:47:10 +0100
committerSanto Cariotti <santo@dcariotti.me>2023-12-15 21:47:10 +0100
commit67dff579e91c13ef40ecb17d14497d145861c5e7 (patch)
tree3ec7cccea75ba25aa0da34f528811d28f6c9b21a
parent49ecb2db619bb32c712e619ec66833a917b5ffc3 (diff)
add day15 pt1
-rw-r--r--2023/Cargo.toml2
-rw-r--r--2023/day11/src/lib.rs26
-rw-r--r--2023/day13/Cargo.toml8
-rw-r--r--2023/day13/example.txt15
-rw-r--r--2023/day13/input.txt1361
-rw-r--r--2023/day13/src/lib.rs146
-rw-r--r--2023/day15/Cargo.toml8
-rw-r--r--2023/day15/example.txt1
-rw-r--r--2023/day15/input.txt1
-rw-r--r--2023/day15/src/lib.rs56
10 files changed, 1623 insertions, 1 deletions
diff --git a/2023/Cargo.toml b/2023/Cargo.toml
index effa9b6..7f6cc11 100644
--- a/2023/Cargo.toml
+++ b/2023/Cargo.toml
@@ -1,2 +1,2 @@
[workspace]
-members = ["day1", "day2", "day3", "day4", "day5", "day6", "day7", "day7_2", "day8", "day9", "day11"]
+members = ["day1", "day2", "day3", "day4", "day5", "day6", "day7", "day7_2", "day8", "day9", "day11", "day13", "day15"]
diff --git a/2023/day11/src/lib.rs b/2023/day11/src/lib.rs
index 938de38..66c95c4 100644
--- a/2023/day11/src/lib.rs
+++ b/2023/day11/src/lib.rs
@@ -67,6 +67,32 @@ pub fn part1(input: &str) -> u32 {
pub fn part2(input: &str) -> u32 {
let mut res: u32 = 0;
+ let mut m: Vec<Vec<i16>> = input
+ .trim_end()
+ .split('\n')
+ .map(|y| y.chars().map(|x| if x == '#' { 1 } else { 0 }).collect())
+ .collect();
+
+ expand(&mut m, 1);
+ let mut hs: Vec<(usize, usize)> = vec![];
+ let rows = m.len();
+ let cols = m[0].len();
+ for i in 0..rows {
+ for j in 0..cols {
+ if m[i][j] > 0 {
+ hs.push((i, j));
+ }
+ }
+ }
+
+ let n = hs.len();
+ for i in 0..n {
+ for j in i + 1..n {
+ res += ((hs[j].1 as i16 - hs[i].1 as i16).abs()
+ + (hs[j].0 as i16 - hs[i].0 as i16).abs()) as u32;
+ }
+ }
+
res
}
diff --git a/2023/day13/Cargo.toml b/2023/day13/Cargo.toml
new file mode 100644
index 0000000..36c9510
--- /dev/null
+++ b/2023/day13/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "day13"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/2023/day13/example.txt b/2023/day13/example.txt
new file mode 100644
index 0000000..3b6b5cc
--- /dev/null
+++ b/2023/day13/example.txt
@@ -0,0 +1,15 @@
+#.##..##.
+..#.##.#.
+##......#
+##......#
+..#.##.#.
+..##..##.
+#.#.##.#.
+
+#...##..#
+#....#..#
+..##..###
+#####.##.
+#####.##.
+..##..###
+#....#..#
diff --git a/2023/day13/input.txt b/2023/day13/input.txt
new file mode 100644
index 0000000..023748d
--- /dev/null
+++ b/2023/day13/input.txt
@@ -0,0 +1,1361 @@
+######....#######
+..#...####...#..#
+.###.#....#.###.#
+....##.##.##....#
+.##....##....##..
+.####...#..####.#
+##..#..##..#..###
+..#.########.#...
+#..#.######.#..#.
+.##..#.##.#..##..
+###.#.####.#.###.
+###.#.####.#.###.
+.##..#.##.#..##..
+#..#.######.#..#.
+..#.########.#...
+
+......##....#
+.#.#.##...#.#
+.##.#..#..#.#
+.##.#..#..#.#
+.#.#.##...#.#
+......##..#.#
+....#.#....#.
+...#.###...##
+.#.##.#.###..
+###.....##.##
+#.##..##...#.
+###.#..##.##.
+#..#######..#
+#..#######..#
+###.#..##.##.
+
+#.#.#.#..
+#.#.#.##.
+#.#.#.##.
+#.#.#.#..
+...#.....
+#..#.##..
+....#...#
+####....#
+#####....
+.###.#.##
+####...##
+.#.#...#.
+#....#.#.
+
+.########..##
+.###..###.#.#
+###....###.##
+#...##...##.#
+.########.#..
+#...##..#####
+#.##..##.#...
+....##....#..
+....##....#..
+
+.........##..#..#
+.#....#.######.##
+.#....#.######.##
+.........##.....#
+.######.#..#.#..#
+##.##.###.##..#.#
+#########...#..#.
+###..###...#.####
+#......#....#..#.
+##....##.....###.
+..####..##.#....#
+.............#.#.
+..#..#...####....
+
+##......##.
+....##.....
+##..##..##.
+..#.##.#...
+..........#
+..##..##...
+####..####.
+####..####.
+#.##..##.#.
+
+......#..######
+######.#.......
+.####.###..##..
+..##..##.#....#
+.####.#...#..#.
+..##..#.##....#
+#.##.##..#....#
+##..####.......
+.####..#.######
+##..##..#.....#
+......####.##.#
+#....#.........
+######..##....#
+######....#..#.
+#....#####....#
+
+##...........
+..###########
+##..###..###.
+##.##########
+..#..........
+##...#....#..
+..###..##..##
+##.##.#..#.##
+..#.###.####.
+###.###..###.
+....#..##..#.
+##.#.#....#.#
+...####..####
+....#.####.#.
+##.##......##
+
+#.#....##..
+#..##...#.#
+#.###..##.#
+#.###..##.#
+#..##...#.#
+#.#....##..
+.#..####.#.
+..#..######
+#..###.#.#.
+.#.########
+.#.########
+#..###.#.#.
+..#...#####
+
+....###.#.##..#
+....###.#.##..#
+#.##..####.....
+#.##.....##..##
+.#..##....#.##.
+.#......##.#.#.
+....#.#...###.#
+....#.#...###.#
+.#......##.#.#.
+.#..##....#.##.
+#.##......#..##
+#.##..####.....
+....###.#.##..#
+
+#..#..#..##..
+#.##.........
+#.##.........
+...#..#..##..
+##..#.#.###..
+#.#.#########
+...#.##....##
+
+..########..#.###
+....####....#.#..
+........#...###..
+..##....##...##..
+####....####.#.##
+###..##..###.#.##
+#....##....###.##
+###......####.#..
+#.##.##.##.##..##
+
+.####.##.
+......##.
+..##.....
+..##..##.
+#....#..#
+##..##..#
+#....###.
+##..##..#
+##..#####
+
+####..#######
+.##....##..##
+..######....#
+..##..##....#
+#...##...##..
+#.#....#.##.#
+#.######.##.#
+###....######
+###.##.######
+.#..##..#..#.
+##....#.####.
+
+###.#.#..#.#.##
+##..##....##..#
+..#.########.#.
+##.#..#..#..#.#
+###..##..##..##
+##.#.#....#.#.#
+..#.#......#.#.
+####.######.###
+##.##.#..#.####
+..##.#....#.##.
+..#.##.##.##.#.
+..#.#.#..#.#.#.
+###.########.##
+###.#......#.##
+##...#.##.#...#
+
+#......
+##..###
+##..##.
+#..#...
+..##...
+###.#..
+.##.###
+..#....
+#....##
+#....##
+..#....
+
+.#####....##.#...
+..####....##.#...
+##.#.####..#.###.
+##...##...#..#.#.
+##...##...#..#.#.
+##.#.####..#.###.
+..####....##.#...
+.#####....##.#...
+.#..##......###..
+#.#####...###.##.
+....#..#.#..#####
+..###....##......
+.#...###...#.##.#
+#...#.....#..##.#
+#..##.###.#..#.#.
+.#...#....###.#..
+##..#..###......#
+
+###.##.##
+##.####.#
+##.#..#.#
+####..###
+....##...
+##.#..#.#
+...#..#..
+##..###.#
+##......#
+##......#
+..#.##.#.
+...#..#..
+##.####.#
+....##...
+...####..
+....##...
+##.####.#
+
+###..##.#
+#####....
+.##.#.##.
+#.#.###..
+##...#..#
+#.#.##.#.
+#####.##.
+###.#....
+###.#.#..
+###.#.#..
+###.#....
+
+..#...#
+..#...#
+.....#.
+#.#.#.#
+.###.#.
+###.#..
+##....#
+#.#.#.#
+###..#.
+.###..#
+.###..#
+###..#.
+###.#.#
+##....#
+###.#..
+.###.#.
+#.#.#.#
+
+.###.....
+...###..#
+....##.#.
+#.#..###.
+#.#..###.
+....##...
+...###..#
+.###.....
+.###.....
+...###..#
+....##...
+
+########...##.#
+########.#.#...
+##.##.####.####
+########.##...#
+#......##..####
+##....##.###..#
+##.##.##.##..##
+##....###..####
+###..#####..##.
+..####...#####.
+..####...#####.
+..####......#.#
+#########.##..#
+..........##.#.
+..#..#...###..#
+
+###.#.###....
+####...##..#.
+..#..##...##.
+..##.#######.
+###.#.####..#
+##.....####..
+...####..#..#
+..###.#.#.##.
+##....###...#
+..##..##.####
+###.##.####.#
+..####.....##
+...#.#..#.#..
+...#.#....#..
+..####.....##
+
+#..#...
+.##...#
+.##..#.
+.##..##
+.##.#.#
+.##.#.#
+.##..##
+.##..#.
+.##....
+#..#...
+....#.#
+.##....
+####.##
+####.#.
+....###
+
+#.#..#.#.#.....#.
+...##...#.#.#.#.#
+.######.#.......#
+..#.##..#..###.##
+###..####.##.#..#
+#......######....
+############.#.##
+.#.##.#...#.#####
+.#.##.#.##..#.#..
+.........#.#.#.##
+........#.#.#..##
+###..####.##.#..#
+.##..##..#.###..#
+.##..##..#.###..#
+###..####.##.#..#
+........#.#.#..##
+.........#.#.#.##
+
+###.####.######
+....#.......##.
+.#..####..#.##.
+#.##.##.##.####
+.#..#..#..#....
+..#..##..#..##.
+#...####...#..#
+
+....###
+#...#.#
+.######
+..#####
+....#..
+.###.##
+.##.#..
+..#....
+....#..
+..#####
+.#...##
+#...###
+#...###
+.#...##
+..#####
+
+####.###..###.#
+#.##.########.#
+....##......##.
+...##..#.##..##
+....##.#..#.##.
+##..#.#....#.#.
+......##..##...
+#..##........##
+..#...#....#...
+.##...#.##.#...
+.##...#.##.#...
+..#...#....#...
+#..##........##
+
+.###.#.....
+.##.##.####
+.####..#.##
+#.##..#.##.
+.#####.....
+..##...####
+...#..#.##.
+...#..#....
+...#..#....
+...#..#.##.
+..##...####
+
+.....#..#..
+...###..##.
+#####.#.#.#
+.##..#.#.##
+#..#..#.#.#
+#..######.#
+....##..##.
+....##..##.
+#..######.#
+
+##.###.##.#
+.##.#####..
+.#..#.##.##
+.#..#.#..##
+.##.#####..
+##.###.##.#
+.#....#.###
+.#....#.###
+##.###.##.#
+.##.#####..
+.#..#.#..##
+.#..#.##.##
+.##.#####..
+##.###.##.#
+#..#..#.#.#
+
+###..###.#.##
+.##..###.#.##
+..###.#.#..#.
+.#......####.
+#...#...###..
+.#.#####.##.#
+.#.#####.##.#
+#...#...###..
+.#......####.
+
+.##.##...##...##.
+#####..##..##..##
+.....##..##..##..
+.##.#.#.####.#.#.
+.##...#.#..#.#...
+....#..........#.
+#..#..#......#..#
+....###.....####.
+.##...#.#..#.#...
+.....#..####..#..
+#..#...##..##...#
+....#...#..#...#.
+#..#.##########.#
+#..##...####...##
+#####.##.##.##.##
+
+...##...#######
+.##..#..##.....
+.#....#....#..#
+.##..##.....##.
+###..####.#....
+##.##.##.###..#
+########.###..#
+.#....#.###....
+#.#..#.##..#..#
+..........##..#
+########.##.##.
+
+..##.....
+...###..#
+#...##..#
+.###.####
+##...####
+##.......
+...##.##.
+#..#..##.
+...#.....
+...#.....
+#..#..##.
+...##.##.
+##.......
+##...####
+.###.####
+#.#.##..#
+...###..#
+
+.#..##..#.##...
+..#.##.#..#####
+.##.##..#..#.#.
+.########.###.#
+..#....#..#.##.
+##..##..###....
+##..##..###....
+..#....#..#.##.
+.########.###.#
+
+#####..###.#.##
+###....##.#..##
+##....####.....
+...#.#..##.#.#.
+..#.#..#.#.....
+...#..###..#..#
+..##..###..#..#
+..#.#..#.#.....
+...#.#..##.#.#.
+##....####.....
+###....##.#..##
+#####..###.#.##
+..###...#....#.
+##.#...#..##...
+###.#...##.#.#.
+..###.#....#.#.
+..#####...###.#
+
+..##.####..#..#
+..#.###..##.##.
+##.#..##.###..#
+##.#.#.####....
+###..#.#.##....
+####.#.##.##..#
+##.##....###..#
+###########....
+..#.##..####..#
+...##..#.#.#..#
+....####.######
+..#...#.#.#.##.
+###...##..##..#
+##.#...#.#.#..#
+##.#.#.....####
+..##..###.##..#
+##.#.#....####.
+
+#..#..##...
+#..#..##...
+.#..#.#...#
+#...##..###
+###.###.###
+##...##.###
+..##...##..
+##....#.#..
+#.#...###..
+###.#...#..
+......##...
+
+#....###.
+#....###.
+.#..#.###
+#....##..
+.......#.
+#.#..###.
+#.##.#.#.
+.......#.
+.####.##.
+##..##.##
+.####.#.#
+
+....#.#####
+..#.#......
+###.##..##.
+..#.#......
+.....#.#..#
+.#...#.##.#
+..###......
+#..#####..#
+#.##...####
+##.###..##.
+.#.##..#..#
+..####.#..#
+#......####
+##....#....
+#####..####
+#####..####
+##....#....
+
+....#........
+#..#.#.#...#.
+....#.......#
+.##..#.##....
+....##...####
+#..#.##..###.
+####.##....#.
+####.#.#..##.
+......#....##
+....###..##.#
+.##..#.#....#
+.##..#.##...#
+....###..##.#
+......#....##
+####.#.#..##.
+
+....###
+.#.####
+..####.
+##.#.##
+##.#.##
+..####.
+.#.####
+....###
+###...#
+###...#
+.....##
+
+.#...###...
+..#.#######
+#..#.##.###
+....##.....
+..#.##..###
+...#.##.###
+.#.##.#....
+.##.#..##..
+#.####...##
+#.##.......
+#.##...#...
+#.####...##
+.##.#..##..
+.#.##.#....
+...#.##.###
+
+.#..#.###
+#....#...
+######...
+#....##..
+.########
+######...
+##..#####
+.#..#.#..
+.......##
+
+##....#.##..##.
+#...#####.####.
+.#.##.#....#..#
+#.....#####....
+.#...#....####.
+#.#..#...#..#.#
+#.#..#...#..#.#
+.#...#....####.
+#.....#####....
+.#.##.#....#..#
+##..#####.####.
+##....#.##..##.
+.##...#..#...##
+#.######..##.##
+........#####..
+........#####..
+#.######..##.##
+
+.#..#.#...##.#.
+..#..#....#.###
+#.#.#..#.#.##..
+#....##....####
+#.###.#.##.##.#
+##..#...###...#
+##..#...###...#
+#.###.#.##.##.#
+#....#.....####
+#.#.#..#.#.##..
+..#..#....#.###
+.#..#.#...##.#.
+.#....##.####..
+#.#.#####.#...#
+#.#.#####.#...#
+
+.#.####.####.##
+.#.#.#........#
+###.#...#..#...
+###.#...#..#...
+.#.#.#........#
+.#.####.####.##
+..##..##.##.#..
+
+#..####.#.##...##
+.....###.#####..#
+......##.#..##.##
+....#.#.#.##.#..#
+....#.#.#.##.#..#
+......##.#..##.##
+.....###.#####..#
+#..##.#.#.##...##
+#..####.#.#.####.
+.##.####.#.#...#.
+.##.###...##..##.
+####.#.#...#.#..#
+####.#.###.#..###
+#..#####....##.#.
+#..#####.#..##..#
+
+#.####.####
+##....##..#
+#......####
+.#.##.#....
+..####..##.
+..####..##.
+.#.##.#....
+.#.##.##..#
+.##..##.##.
+..####.....
+#.####.#..#
+
+..#.#..#.###....#
+.#.######.##...##
+#.#.###..##..###.
+.#...#####.#..#..
+#.##.#.#..#.#..##
+#.##.#.#..#.#..##
+.#...###.#.#..#..
+#.#.###..##..###.
+.#.######.##...##
+..#.#..#.###....#
+..#.#..#.###....#
+
+....#.##...
+.#.#..#..##
+.#.#..#..##
+....#.###..
+.......#.##
+..##.#...##
+...#.#.....
+####..#...#
+#..#.#...#.
+#..#.#...#.
+####..#...#
+...#.#.....
+..##.#...##
+
+..######...
+..#.##.#..#
+#.##..##.##
+#.##..##.#.
+..#.##.#..#
+..######...
+##..##..##.
+.#..##..#..
+.#..##..#.#
+###....####
+..#.##.#...
+
+#......####..
+..#..#......#
+.##..##.##.##
+.#.##.#....#.
+..#..#..##..#
+#..##..####..
+##.##.######.
+########..###
+#..##..##.#..
+.##..##....##
+.##..##....##
+.######....##
+...##...##...
+
+.####..##
+..#######
+.#......#
+##..#.#..
+####..#..
+..#....#.
+..#....#.
+####..#..
+##..#.#..
+.#......#
+..#######
+.####.###
+#..#.##..
+#..#.##..
+.####.###
+
+#.#..#..#......
+##...####..#.##
+####..#.#..#.##
+.##..###.#.#..#
+..#.##.####....
+.#..##..##.##..
+##.###.##.#.###
+#..#.#..#.##.##
+##..#####....##
+####..#.####..#
+#.....#.####.##
+......###....##
+..#...###....##
+.##.##.###..###
+.##.##.###..###
+..#...###....##
+......###....##
+
+####..#..
+.....##.#
+...###...
+.....#.##
+....##.#.
+##.#.#.##
+##.#.#.##
+....##.#.
+.....#.##
+...###..#
+.....##.#
+
+######...###...
+#.##.#.##....##
+......##..###.#
+#....##....#.#.
+.......##...#.#
+#######.#...#.#
+#######.#...#.#
+.......##...#.#
+#....##....###.
+......##..###.#
+#.##.#.##....##
+######...###...
+.####.##..####.
+#.##.#..###....
+..##.....##.#.#
+
+#.######.##.#.#
+#..####..#.###.
+..........#.#..
+..#.##.#.......
+..#.##.#.......
+..........#.##.
+#..####..#.###.
+#.######.##.#.#
+###....#######.
+...#..#.....#.#
+.#..##..#.###.#
+.##.##.##.#..##
+.#.####.#...##.
+
+##.#..#..##..#..#
+##.#..##....##..#
+#.#....#.##.#....
+....##.##..##.##.
+###.##..#..#..##.
+.#####...##...###
+...#####.##.#####
+
+###..####..
+##...#.....
+##...#.....
+###..####..
+#.#......##
+.##....#.##
+.###.#....#
+#..##....##
+.##......##
+
+........#..##
+........#.###
+........#..#.
+#######.#..#.
+.#..#...####.
+##..###.###.#
+#.##.#....###
+########.....
+#....##.....#
+##..###..###.
+.#..#.#.####.
+......####..#
+..##..##.#...
+
+....#.#..##.#.#.#
+....#.#..##.#.#.#
+..#####.##...#.#.
+###..#..##....#.#
+###.#....#...####
+#..#..#.#...###..
+#....###.#.######
+..#..##.#..#..##.
+..#..##.#..#..##.
+#....#.#.#.######
+#..#..#.#...###..
+###.#....#...####
+###..#..##....#.#
+..#####.##...#.#.
+....#.#..##.#.#.#
+
+...#.##...###
+...#.##...###
+...##.###..##
+.##..#.##...#
+#..#..#.#..##
+.#....##.#.##
+..#.#.###..#.
+..#.#.###..#.
+.#....##.#.##
+#..#..#.#..##
+.##....##...#
+...##.###..##
+...#.##...###
+
+###.######.
+##.#.####.#
+..#.#.##.#.
+..#.#.##.#.
+...#.#..#.#
+..##.#..#.#
+##...####..
+..###....##
+###.#.##.#.
+##.#.#..#.#
+##.........
+####.####.#
+###..#..#..
+..#......#.
+....#....#.
+
+#..###.##..##.#
+.##...#......#.
+##.###.##..##.#
+##.#.##########
+###.##.######.#
+#.#...#......#.
+..#..#........#
+..#..#........#
+###...#......#.
+
+..#.####.
+..##.##.#
+###.#..#.
+#.#......
+.....##..
+.#.######
+.########
+
+..#..#..###...##.
+#####.#...#..#...
+.......#.#.#.##.#
+#...#.........##.
+.#.##.#.....#....
+.#.##.#.....#....
+#...#.........##.
+.......#.###.##.#
+#####.#...#..#...
+..#..#..###...##.
+#..#..#...#...###
+#.#.#.###.#...#..
+#.#.#.###.#...#..
+
+....#..#.....
+##........###
+#....##....#.
+##........##.
+...#.##.#....
+####....####.
+.....##......
+....#..#.....
+..##.##.##...
+..##.##.##...
+...##..##....
+.....##......
+####....####.
+
+...........#.
+.........#.#.
+##.##.##..###
+.........##.#
+#..##..######
+#.#..#.#..#.#
+..####..#.#..
+..#..#..#.###
+#.#..#.#...#.
+.##..##....#.
+########.#.##
+
+.##......##..##.#
+.##......##..#..#
+.#...##...#.#....
+...#....#...#...#
+.#.##..##.#..#.#.
+..##.##.##......#
+###..##..###..###
+.####..####.#.#.#
+............##.##
+
+...##....##....
+.####.##.####..
+.####.##.####..
+##..##..##..###
+.#.#.#..#...#..
+##.#.####.#.###
+#..#..##..#..##
+#.#........#.##
+#...##..##...##
+#....#..#....##
+...#.#..#.#....
+##.###..###.###
+####.####.#####
+
+..#...##...#.
+#.##.####.##.
+##.#..##..#.#
+....######...
+....##..##...
+...#.#..#.#..
+##.#.####.#.#
+..###.##.###.
+###.#.##.#.##
+..#..####..#.
+....#.##.#...
+
+#......##..##..
+#.####.#.######
+...##....##..##
+...##...#.#..#.
+##....##.##..##
+..#..#.###.##.#
+#.####.#.#....#
+##....##.##..##
+.#....#...#..#.
+...##...#.####.
+#.#..#.#.#.##.#
+..####..#.#..#.
+#########.#..#.
+...##..........
+.##..##....##..
+.######..######
+###..###.......
+
+#..#......#.#
+#####.#..#.##
+....###..###.
+#..##.####.##
+.##..#....#..
+#..##.####.##
+.##..######..
+#..##..##..##
+####..#..#..#
+.......##....
+.....##..##..
+######.##.###
+.##.########.
+
+######.#.
+##..#.#..
+##..###.#
+##.##.#..
+.##...##.
+#....####
+#....####
+.##...##.
+##.##.##.
+##..###.#
+##..#.#..
+######.#.
+######.#.
+
+.##..####
+.###.##.#
+.####....
+..#.###..
+.#..#....
+.########
+.##.##...
+.###..###
+.##..####
+##.#.....
+##.#.....
+
+#..#.#....#......
+######.######.##.
+####..####...##.#
+.##...##.####.#..
+.##...##.####.#..
+####..####...##.#
+######.######.##.
+#..#.#....#......
+###.#######.....#
+
+#..##.###.#####
+#..######.#####
+.####.##.#.##.#
+..#.##...#.#.##
+#..######...#..
+#..######...#..
+..#.##...#.#.##
+.####.##.#.##.#
+#..######.#####
+#..##.###.#####
+####.####.#..#.
+
+.........####.##.
+#####.#.#..#.##.#
+.##.##...#...#.#.
+#..#...#.#.....#.
+#..#...#.#.....#.
+.##.##...#.#.#.#.
+#####.#.#..#.##.#
+
+.##..######
+#####.####.
+#..##.#..#.
+.###.######
+.##.##....#
+#####......
+.##.#......
+.##........
+####...##..
+####.......
+#..##..##..
+.##..######
+####.##..##
+......#..#.
+.##.#.####.
+....#######
+#####.#..#.
+
+#.##.#..##..#.#
+.#..#..####..#.
+.#..###....###.
+#######....####
+.####.##..##.##
+.#..#........#.
+##..####..####.
+#.##.###..###.#
+#.##.##.##.##.#
+.#..#..####..#.
+.####..####..##
+.#..#.######.#.
+......#.##.#...
+##..##.#..#.##.
+.####.##..##.##
+
+###.####..#
+##.#......#
+...#..#...#
+...#..#...#
+##.#......#
+##..####..#
+##.#.#.#..#
+..###.###.#
+####.#.###.
+##..#.#.###
+...#....#..
+
+.###..##..###
+..#.##..###..
+##..#.#####..
+##..#.#####..
+..#.###.###..
+.###..##..###
+..###....#.#.
+...###..##..#
+..#..#..#..#.
+.##..##.....#
+.##..##.....#
+
+...#.#..#
+###..##..
+...#.##..
+##......#
+##......#
+...#.##..
+###..##..
+.....#..#
+##.##.###
+######.#.
+.....####
+
+.##...#######
+....##.#.##.#
+.##...##.....
+.##..#..####.
+######..####.
+.##..##..##..
+.##.#..#....#
+####..#..##..
+....#...####.
+....#....##..
+#..#.##......
+
+..##..#
+.#.#..#
+.#..##.
+..##..#
+..##..#
+.#..##.
+.#.#..#
+..##..#
+##.####
+.#.#..#
+#.#.##.
+.##.##.
+#..####
+#.##...
+#......
+
+###.##....##.####
+###..######..####
+.....#.##.#......
+.#.###.##.###.#..
+..#.##....##.#...
+###..#.##.#..####
+###..#....#...###
+.#.#........#.#..
+.#..#.#..#.#..#..
+
+.##.#.##.....
+#.##.#.###...
+#....##...#..
+....##.#..###
+#.#.#.#...###
+.#..###...#..
+##.....#...##
+......#..#...
+.##.#..###.##
+#.###.#.#..##
+#.#####...###
+..#.#....##..
+..#.#..#.##..
+#.#####...###
+#.###.#.#..##
+
+...##.#######....
+.....#..#..######
+##..#..###....#..
+##.#.#..##.###.##
+..#.#.#..##.###..
+..#..#..##.##.#..
+.##..#..#..#.#.##
+##...##..###.....
+.......#.#.######
+####.##.#...#..##
+###.#.#.##..##.##
+
+##.#.#.....
+.#..###.#..
+####.#..###
+##.....#...
+.#.#.#...##
+##...#.####
+..###...###
+####..#....
+####.##....
+..###...###
+##...#.####
+
+###.#..#.##
+..#......#.
+...#.##.#..
+##..#..#.##
+####.##.###
+..###..###.
+##.#....#.#
+###......##
+...#.##.#..
+####.##.###
+###..##..##
+##.##..##.#
+...#....#..
+
+#..###...####..
+#.####...####..
+##.###...####..
+...#..#..#..#..
+##...###..##..#
+.##.##..#.##.#.
+.#.#.#.###..###
+#####.#.######.
+.###.####....##
+####...########
+.#..#.###....##
+#........#..#..
+#..#.#.########
+
+#...#..######.#
+#.#...#....##..
+#.#...#....##..
+#...#..######.#
+###.####.###...
+.#.#..#..#..#..
+.#.#.###...#..#
+######..#..#.#.
+.#.####..#....#
+#.....#..#.#.##
+.##...#.#.....#
+##...###..#.##.
+...#...##.#..#.
+#.#.#..#.##.#..
+#.#.#..#.##.#..
+...#...##.#..#.
+##..####..#.##.
+
+#.#.##..#..
+...###..###
+.####.##.##
+##..##..##.
+##.########
+.###.####.#
+####......#
+.#...#..#..
+###...##...
+##...#..#..
+##.#.#..#.#
+##.#.#..#.#
+##...#..#..
+
+..#.##.###.
+..#.##.###.
+#.######.##
+.#..#..###.
+.#.#.......
+.#.#.......
+.#..#..#.#.
+#.######.##
+..#.##.###.
+
+###........######
+..#.#....#.#....#
+.#.##....##.#..#.
+###.##..##.######
+...##.##.##......
+..##......###..##
+.#.########.#..#.
+.##..#..#..##..##
+##..#....#..####.
+.##.#.##.#.##..##
+.###..##..###..##
+##.#......#.####.
+###........######
+.#.########.#..#.
+.##...##...##..##
+
+#.#.#.#..#.###.
+##....##.#.#...
+#.#.###.#.....#
+..##.##..###.##
+..#############
+..#######....##
+..#....##.####.
+..#....##.####.
+..#######....##
+..#############
+..##..#..###.##
+#.#.###.#.....#
+##....##.#.#...
+#.#.#.#..#.###.
+#.#.#.#..#.###.
+
+........###.###.#
+........###.###.#
+.#.##.#..##..#.#.
+###..###.#.#.##.#
+##..#.##.#####...
+..#..#..#..###.##
+...##....#.##..##
+##....##.####....
+#.#..#.##.#.##..#
+
+....#.#.###.#..
+.##........####
+.##.##..#.##.##
+####.#...#..#..
+.......##.##.##
+####..##.#..###
+.##..###..##.##
+...#.##.#....##
+....####.#.#...
+#..#######..#..
+#..###....#.###
+.....#..#.#.###
+.##...#.###..##
+.......#..##.##
+#..#..##...####
+.##.##.###.....
+#..#.##.#.#....
diff --git a/2023/day13/src/lib.rs b/2023/day13/src/lib.rs
new file mode 100644
index 0000000..03af2b8
--- /dev/null
+++ b/2023/day13/src/lib.rs
@@ -0,0 +1,146 @@
+pub fn part1(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ let m: Vec<Vec<String>> = input
+ .trim_end()
+ .split("\n\n")
+ .map(|x| {
+ x.split('\n')
+ .map(|y| y.chars().collect::<String>())
+ .collect()
+ })
+ .collect();
+
+ for s in m {
+ let n = s.len();
+
+ // Search by column
+ // 012345678
+ // ><
+ // #.##..##.
+ // ..#.##.#.
+ // ##......#
+ // ##......#
+ // ..#.##.#.
+ // ..##..##.
+ // #.#.##.#.
+ // ><
+ // 012345678
+ //
+ let m = s[0].len();
+ let mut mc = 0;
+ for i in 0..m {
+ let mut j = m - 1;
+ while j > i {
+ let mut s1 = String::new();
+ let mut s2 = String::new();
+ for k in 0..n {
+ s1.push(s[k].chars().nth(i).unwrap());
+ s2.push(s[k].chars().nth(j).unwrap());
+ }
+ if s1 == s2 {
+ mc = std::cmp::max(mc, i);
+ }
+ j -= 1;
+ }
+ }
+
+ let mut check = true;
+
+ let mut i = mc;
+ let mut j = mc + 1;
+
+ while i > 0 && j < n {
+ let mut s1 = String::new();
+ let mut s2 = String::new();
+ for k in 0..n {
+ s1.push(s[k].chars().nth(i).unwrap());
+ if j >= s[k].len() {
+ break;
+ }
+ s2.push(s[k].chars().nth(j).unwrap());
+ }
+ if s1 != s2 {
+ check = false;
+ break;
+ }
+ i -= 1;
+ j += 1;
+ }
+
+ if check {
+ res += (mc + 1) as u32;
+ continue;
+ }
+
+ // Search by row
+ let mut mc = 0;
+ for i in 0..(n / 2) + 1 {
+ for j in ((n / 2)..n).rev() {
+ if s[i] == s[j] {
+ mc = std::cmp::max(mc, i);
+ }
+ }
+ }
+
+ let mut check = true;
+
+ let mut i = mc;
+ let mut j = mc + 1;
+
+ while i > 0 && j < n {
+ if s[i] != s[j] {
+ check = false;
+ break;
+ }
+ i -= 1;
+ j += 1;
+ }
+
+ if check {
+ res += (mc + 1) as u32 * 100;
+ continue;
+ }
+ }
+
+ res
+}
+
+// pub fn part2(input: &str) -> u32 {
+// let mut res: u32 = 0;
+//
+// res
+// }
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn example_part1() {
+ let input = include_str!("../example.txt");
+ let result = part1(input);
+ assert_eq!(result, 405);
+ }
+
+ #[test]
+ fn input_part1() {
+ let input = include_str!("../input.txt");
+ let result = part1(input);
+ assert_eq!(result, 2331);
+ }
+ //
+ // #[test]
+ // fn example_part2() {
+ // let input = include_str!("../example.txt");
+ // let result = part2(input);
+ // assert_eq!(result, 2286);
+ // }
+ //
+ // #[test]
+ // fn input_part2() {
+ // let input = include_str!("../input.txt");
+ // let result = part2(input);
+ // assert_eq!(result, 71585);
+ // }
+}
diff --git a/2023/day15/Cargo.toml b/2023/day15/Cargo.toml
new file mode 100644
index 0000000..f52c8dc
--- /dev/null
+++ b/2023/day15/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "day15"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/2023/day15/example.txt b/2023/day15/example.txt
new file mode 100644
index 0000000..4f58f74
--- /dev/null
+++ b/2023/day15/example.txt
@@ -0,0 +1 @@
+rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7
diff --git a/2023/day15/input.txt b/2023/day15/input.txt
new file mode 100644
index 0000000..b12bf11
--- /dev/null
+++ b/2023/day15/input.txt
@@ -0,0 +1 @@
+fnln-,bkxf-,spfc=9,ds-,trzx-,dtck-,xs-,bg=4,fgmpc=5,xmxf=1,cl=9,md-,ct=2,ftz=5,xhd-,vkqx-,hxd=6,mlcn=6,ctdbt=6,txpsv-,nkx=3,jfz-,fzm=3,rvcd=4,nfgp=3,jjd=7,nzq=6,zv=5,lh-,nfgp-,gcbtgm=7,zj=6,sxlh=3,vsj=8,cjb-,tslfp=5,vc-,kpn=7,qpm=5,jgmnxd-,xp-,kmm-,xb=4,tv-,bmnlf=7,cb-,vbmk=5,dvz-,ssd=6,sb-,mldgtn-,mtx-,kz-,nzq-,dnkf-,sn-,js-,bpq-,vc-,fzm=9,xqv-,gqsr=2,jzxp=5,bc-,lxg=5,sv-,gflrmd=9,ncjb-,fm=9,lln=1,ql=9,tj=2,pbmldc-,fkzq=7,vkh=3,tn=4,fdl-,frgf=1,vf-,fpg=4,xzt-,jf-,pjfk=5,rvcd-,rv=6,zrs-,qnd=1,vqzhc-,xrb=8,lvx-,dfz-,xstdx=6,sf=4,hsb=3,sqjgc-,xtl=7,zthrd=8,mldgtn-,rc-,kpz-,tpnmp=6,bzj=7,gmrrx-,bszd-,mjz-,bzj=8,ztk=9,dtv-,qgm=4,ssd=3,xc=8,hvglb-,xf-,qhvz-,vqc-,ktj=1,ppq-,zxt-,rnsbt-,qpx-,nj-,vhl-,rknz-,zngsp-,vhl-,fjh-,vrzjf=7,gkn=6,tfd=4,bgg=1,fgmpc=9,lpd-,pbmldc=4,jm=2,vlv=4,shn-,vps=8,ljsvc-,rfdrk=3,vkqx=7,gftx=9,nzq-,cq=1,ckb=6,zsx-,qpf-,cggz-,bzj=9,lfg=6,tfd-,xdfz=8,ghbr-,dsdm=8,nj=4,jf-,fnln=7,fzm=7,fkzq=7,xcq=8,fkzq-,dm-,bfz=2,lqf=4,sfp-,kpqvtc=2,fkzq-,vth-,zn-,xhs-,vsj-,psfnx=4,xbx=1,xgk=9,snpgsm-,psg=3,shn=6,qxkrd-,pxvxlh-,xbx-,gt-,ksn-,dzn=7,gp=7,mp=8,jtz=3,ph=2,jxj=8,pg=5,txkh=6,drls=6,zthrd=9,gqsr-,dtv-,mktlhp=9,bszd=5,snpgsm=5,qz=6,sh=6,lqt-,mktlhp-,mgt-,mvmqfm=5,bc-,lpd=6,zn=3,nhsvv=3,vdf-,znjg-,phsl=7,tnb=4,qlf=9,txpsv-,pxvxlh=6,lqfv=7,lffv=5,djmlb=7,pxn-,hdxvhr=8,vbz=1,vqc=1,xrb-,bj=1,bzpv=5,tdl-,xc=2,cnr-,ss=6,mf=2,sv=2,mp-,zpc-,rqg-,xtsd-,hlg=6,xdfz=9,nl-,kfp-,cr-,qxkrd-,vpxv=9,mtx=1,drls=9,jzxp-,xqfrg-,js=3,ql=8,xp-,kpz=8,zj=9,jxj-,gf-,gcbtgm-,cmpc=4,tr=4,px=6,pvv=9,tpnmp-,jhhqj=5,mmn=3,qpf=5,vnk=9,cnn-,xgr-,mmsz=4,lvs-,cv=3,cq-,bfz=8,ct=7,kr=6,gk-,zdtz=1,vqzhc=3,xzt-,vqt=4,dphx-,kmr-,fkzq-,lk=8,dvz=6,ghbr=6,hm=6,zm-,sn-,jgmnxd-,vkz-,ps-,vpxv-,gpg=4,bmnlf=9,pjfk=3,ndmt=7,zk-,zthrd=5,fgmpc=8,rgh=7,bx-,ctp=2,nl=7,rtj=6,grlkl=9,zf=8,lg=4,zngsp-,rsn=5,drls=9,lxmkfx=7,sbt-,bx-,lln-,dm=6,fnv-,qpf-,tq-,qv=9,cfnbp-,pxvxlh-,tr-,nh-,clg-,xjpbxm-,zs-,trzx=8,bgh-,cmbv=1,vq=6,lcr=9,scbjp-,sjb=2,gmrrx=6,mg=5,znjg=4,zn=9,grlkl=7,xmxf-,smtd-,vkh-,spsx=9,qpf-,bgg-,smtd-,ntg=6,qpf-,vtp-,nlcrm=8,cvc-,frgf=8,blfx-,vbz-,tcs-,bqpp-,fjh=5,rtj=5,vr=6,kjrc=1,nzq-,qpf-,vqc-,kmr-,hj=8,fnh-,scbpb-,gxg=9,kf=6,xhs-,zdl=9,sscn=9,dzt-,rl=9,gr=6,tv-,jmthd=9,gn-,bzj=4,pv=9,pcnzf-,jxj-,sxlh-,lxg=3,rpn-,vr=9,rl-,tslfp=5,pgd=2,xmxf-,mjz=9,drls-,hrbj=7,rr-,lxg-,grlkl=3,jsv=1,sr=6,dv-,scbjp=1,pkg-,mgt=9,hsb=3,ccs-,xdfz-,cqq-,nbtq=2,ljsvc-,rpn=8,msbfzl=5,kz=7,cnr=4,hz-,ctf-,tgqp=9,tfd-,sqd=7,rb-,qf-,srp-,fkzq-,pfjml=6,rnsbt-,dmp-,zngsp-,cfnbp-,kpqvtc-,gftx-,lvs-,zpc-,kpz=2,pxvxlh-,spm-,rt-,ftz-,lvs=2,zsx=2,sjb=4,lxmkfx=7,bqpp-,hb=7,xzl-,ckb=7,hsb-,cvc-,ksn=7,mktlhp=5,jhl=6,snpgsm-,mm-,xstdx=2,rm-,rqx-,ld=4,zv=6,fx-,sbx=2,blfx=8,fmkjj-,km-,cmbv=8,vz=9,lg=4,fpg=4,kpfr-,dmp=4,xxj-,jhl=2,km-,vx-,sh=8,xqv=3,kfp=3,zdm=3,tdl-,ddxn-,gzrz=9,xqv=8,kqh=2,rlrlql-,lpd=1,vr=1,ggm-,dkz=3,jx=2,trzx-,sjb-,rh=8,dbsf=4,jhhqj=8,jzxp-,bkxf-,thnmq=7,mktlhp-,jtz=7,sh-,plt-,rfdrk-,hj=4,dk-,zjvd=9,jsv-,vkn-,jc-,zk-,mmsz-,lcr-,dkz-,px-,pcnzf-,jtz-,pzd-,kqh-,ts-,znb-,dzn-,qgm-,drls=9,bmnlf=3,thnmq-,bpq-,zxt=9,lg=6,rknz=8,bzj-,vsh-,lq-,rm-,ql-,cs=1,dzt-,hfrdk=4,kmm=9,lhks=9,jsv=5,zxt=9,kc=4,rm=8,hvglb-,bzpv-,drs=1,tgqp-,trg=4,dp-,zmlr-,pvv-,lfg=2,rqg-,nh=5,mkj=5,cct=1,lxmkfx-,txpx=2,vps=5,dzn=3,dph-,kv=1,vth=6,gftx-,lztd=3,hb=8,qpx=2,fjg-,plp-,vnhfc=3,zv-,xt=1,bgkjq-,pbk=9,hj-,sv-,kpz=5,fnh-,zpc=3,zj=8,pxvxlh-,qgm=6,gct=5,tdl=5,xtl=2,lg=7,trzx=9,hvglb=3,ss=6,vpxv-,gh-,js=1,jf=1,rqx-,pg-,nqcj-,zzx-,mf-,zlcmgc=3,lxg=8,rpgj-,vhl=6,phsl=8,dtck-,rxv=2,qpf=7,nh-,ccs-,mf=3,xrm=4,pljg=1,rnsbt=5,nnn=2,snpgsm=5,qxkrd=5,xgk-,trg-,phsl-,bzj=5,ckb=4,cqbvs=5,xgk=8,ck=7,dbffb-,tj=2,dm-,fjg-,zdm=8,jc=9,rqg=3,qhvz-,cmpc-,dzn=4,xrb=2,kfp=2,vbz-,xhs-,dnkf=3,chpn-,sl-,kftx=5,rsn=5,ps=9,jm-,pbk-,vq-,qpf=4,rfdrk-,rsn=9,nqcj=7,vsh=7,npm=7,qxkrd-,hpl=1,rnsbt-,pxn-,zsx-,lpd=5,fgmpc-,vkqx-,vth-,pm-,mgt=5,cct=3,bb-,hzlzn=2,gkn-,mjz-,kx=8,qcnnzx-,kmr=7,lfl-,jhhqj-,lqfv-,gkn=5,pfjml-,lhks=4,bzj-,tnp-,nj=1,xhs-,rtj=9,rlrlql-,qcm=3,mph-,fx-,jm-,xtl-,xdfz-,msbfzl-,ckb=7,hj-,cqr=5,scbpb=2,tslfp=1,kmm-,cv=4,zpc-,qfb-,rlrlql-,trzx-,sf-,ccs-,fsz=2,dv=8,thncf=4,bmnlf-,qgm=8,plvd-,dm-,pjfk=4,gr=6,qv=7,khx=3,vs=7,dtck=9,xbx-,xstdx=8,km=6,hgp-,kf-,xf=1,vnhfc=6,xgr=1,pbk-,sl=2,jmthd=8,sbt=6,mkj=8,vnk=3,bgkjq=8,bg=2,xbx=6,mmsz-,rnxt=1,shn-,ss=3,kpqvtc-,dfz-,qxj=9,mktlhp=4,jzxp=1,hm-,vx-,bzj=1,vnhfc-,vrc=7,bgkjq=8,gp-,vq-,lh-,tnfx=4,ntg-,dd=5,znb-,vtp=4,vgln-,hz=1,lk=1,mktlhp-,vz=3,vpk-,bbsk=4,qlf=1,hgp=5,xjpbxm-,qcm=8,tz=4,lqf=2,bz=3,jfjbj=9,lfl=6,cqq=8,xzt=4,xb-,rlrlql=9,cqbvs=8,dzt-,blfx=9,rqx=5,xfn=6,px=3,chpn=7,js-,lg-,ctf=1,qcnnzx-,hsb-,xnmq=1,hpl=1,pg-,gr-,fkzq=2,rfdrk=7,tnp-,gbsp-,nq=4,vttk=1,lrpx=5,xrm=3,crb-,nglvx=5,md=2,px=6,pljg-,sjb=3,kpjqgm=9,xrm=6,slzd=6,xc-,sxlh=6,mtx-,xc-,nbtq-,plvd=2,hb-,znfd=7,ghbr=1,gkn=3,gct-,cqq-,znb=5,jsv-,txpsv=6,dk-,dbh=7,lmlx=6,lcr-,bfz=4,xhs-,cjb-,tkpb-,dkms=4,sh-,fkzq=3,kqh=8,dv=9,lrpx-,vnhfc-,bqpp-,pcnzf-,km=1,ssmflk-,pnp-,rsn-,cqbvs=5,fr-,kfp-,npm-,vbz-,jm=9,pgd-,trzx=6,hsb=6,qrn=3,lln=8,zl=6,qpf=8,djmlb=6,zj-,qhvz=1,kz-,bzpv-,bq=8,frgf=7,blfx-,tnp=9,lqf=3,zrs=5,lc=2,scb=6,dzfqlb=3,kmqjt=1,trg=1,fzm-,bgg-,gzrz-,sv-,qz-,zlcmgc=4,qcm=1,xhd=7,zmlr-,fnv-,xdfz=9,fx-,xfn=7,zdm-,fr=7,tfd=1,njvd=4,vnk=2,xbx=8,xp=3,zbgdxg-,lxmkfx-,pbmldc-,znfd-,znb-,xh=5,ccf-,lxmkfx-,tgqp=6,ng=6,kz=9,hlg=2,mmsz=9,vdf=1,vkh=9,cvc-,sfp=7,ckb=6,gxg=9,cggz=2,clg=8,zn=6,ctf=6,zdtz=1,ddxn=6,nhsvv-,plvd-,sbx-,ncjb-,lc-,pvv-,vpxv=3,mhh-,qgm=6,vbmk=8,rb-,gxx=7,pt-,qpx-,gcbtgm-,xf=4,xfn=1,tv-,mmn-,zrs=6,zm=7,pxvxlh=5,xc-,dbsf-,scbpb=3,smtd-,fsz-,znjg=3,rfdrk-,ccs=9,mgt=5,mjjk-,vsh-,sv=8,cgp-,gf=1,pg=5,mph-,ctp=3,vblpd=7,gbsp-,gf=3,nbtq-,vjsg-,jsv-,lqfv-,np=4,xh-,tq-,xs-,vk-,hb-,mmn-,vbz-,kpjqgm=5,dkz-,rzjkqp-,tvm=3,dz-,kftx-,khn-,nj=2,cnn=3,cl-,sf-,vc-,zmlr=3,lxmkfx=3,blfx=9,vbmk=6,tpnmp-,sqjgc=5,rz=2,bszd=6,kkc=9,dnkf-,lmlx=7,ddxn-,bhfh-,gflrmd-,xb-,mmn=2,jfjbj=1,zm-,sqd=4,kl-,dfz=4,ktj=5,lxmkfx=2,qxkrd-,dp=6,hl-,lqfv-,kx-,vbz=5,qf-,sv-,kpqvtc-,vhx-,ps=1,fr-,vbmk-,bnhz-,tj-,rlrlql=2,np=4,vs-,vbmk-,pmz=3,pbk-,zxt-,ck-,xf=2,jtsdd=7,ng=1,gn-,qfb=5,mf=4,xb-,rc=7,jjd-,xv=6,gzrz-,cqq=5,dzt-,scb-,plvd-,vqbp-,mvmqfm=3,pr=1,nj-,pvv=8,xtsd-,gbsp-,hnf-,fdfc=3,zzd-,kftx-,pbk=3,lrpx-,hbmt=4,mktlhp=2,ld=4,sf=4,rxv=1,kkcd=9,dph=7,ssmflk-,vnhfc=1,hrbj-,ljsvc=6,rt-,xf=5,tq-,npm=1,kkcd-,spm=7,ljsvc=4,lpd-,nh-,cnr-,xmxf-,cxq=6,mjz-,hpl-,lh-,grlkl=7,pv=9,pqf=1,zsx=7,vbz-,vgln-,dvz-,zl=6,js-,rqx=8,hdxvhr-,pkg-,tzjln=1,nhsvv=7,ggm=5,zz-,kmm-,zngsp=5,gqsr-,cnn=8,vrc=3,zxt-,txpx-,jmthd=9,gbsp-,gn-,zrq-,ss=5,xjpbxm-,ssmflk-,sr-,kl-,gp=9,mhh=7,bpqv-,mvmqfm=6,vr-,kmqjt=4,xnmq-,hvglb=5,qpf-,xb=5,jgmnxd-,sfp-,sscn=8,pcnzf=4,rr=7,gqsr=4,xs-,ql-,pxn=6,jf-,ckb=6,ps=7,bzpv-,qcm=5,gf-,vk=8,hlg-,kjrc=4,dnkf-,kjrc-,qgm=7,pt-,mmn-,dphx-,dsg=8,brp=5,lq=6,kpqvtc=8,xhs=1,tz=1,rm-,qht-,jhl=3,mr=1,tj=4,pnp-,zngsp-,lcr=5,fr=9,vgln-,bz=1,nfgp-,xzt=1,xzbz-,cqzt-,vblpd=9,mg=6,dd-,xtl-,mf=7,qln-,qxj-,mgpp=7,cb=7,zf-,pkbv=2,fgmpc=4,lc-,dmp-,zxt=1,db-,hrbj-,vnk-,smtd=1,cjb-,dtt-,zlcmgc=1,kkcd=9,xh=3,sqjgc-,td=9,npm-,cqbvs-,hj-,sf=2,zf-,mph=7,zcjvl=4,dkms-,rgh=6,zzx=4,hm=4,tz-,vr-,vf-,cqq-,bgh=1,sn-,vbz-,sxlh=3,xtl-,lqt-,kd-,mg-,vf-,lg=5,fnh-,gbsp-,ksn-,mlcn-,vqzhc=8,gzrz=6,lcr=3,qxj=1,hpl-,dphx=5,js-,fm=5,vgslz-,vf=5,ns=2,qcm-,ds-,pr-,vqfz-,hl-,mnphn-,ctp-,qht-,dv-,kd=1,lrpx=9,bpq=1,qgm=9,ckb=6,zf-,vps=5,gbkt=3,zk=4,lztd-,tpnmp=9,rr=9,rpgj=5,dbffb-,mvmqfm-,fzm=8,bpq=9,lxmkfx-,sf-,br-,jxj=1,snpgsm=2,bj-,fsz-,vjsg-,gxx=4,hbmt=1,gflrmd-,rtj-,zl-,snpgsm=7,ppq-,vrzjf-,dv-,njvd-,sxlh=1,xgr-,tv=8,kmqjt=2,cfnbp-,xxj=1,zngsp=5,cqr=1,jc=9,gr-,qxkrd-,xzbz=9,xnmq=1,zcjvl=1,vjsg=4,fx=2,srp=2,kpfr-,bbsk-,xqfrg-,tvm=1,pqf-,fdl-,ss=5,bnlpjk=6,dphx=6,vbz=4,grlkl=7,gxx=1,lrpx=3,drls-,dph=8,vs=4,sbt=3,jpc=5,pbmldc=8,ddxn-,br=3,qln-,rvcd-,dmp=5,dhh=5,fjh-,sn=6,txpx=2,ctdbt=1,rzjkqp=7,bzpv-,gt=6,sb=8,qht=9,kpz=2,hvglb=8,mr=3,fq=5,jm=5,rzjkqp-,ndmt=6,bzj-,lg-,ks=1,npm-,vqbp=4,lcr-,km=9,tv=6,thncf=6,bxx-,vq-,rpn=6,dz=2,tcs-,mr-,kd-,spfc=8,npm=7,hrbj=1,cggz-,jjd=7,drs=6,vr-,rfdrk=4,kc-,pkbv-,zmlr=1,lqt-,hsb=1,xb=5,pljg=5,bq-,gxx=5,vrzjf=9,xhs-,xk-,vdf-,lg=6,xrb-,vc-,pbmldc=5,js=5,ld=4,sbt=4,gftx-,kpz-,khx=1,mr=9,lztd=7,xqv=8,cb-,sbx=6,qpf-,vgln-,xcq=9,jf=4,zs=2,cv-,vqc-,vgln=3,bmnlf-,nsxz-,vttk-,jx=1,tnfx=9,zv-,fdfc-,rc-,lhks=4,zlcmgc-,grfxxs-,hrbj=4,vqt=8,ts=5,hd-,tq=8,bg-,mf-,pcnzf-,sh-,trzx-,xb=4,rc=8,bzj-,pkg=8,hlg=5,qcnnzx-,ck-,mjz-,vth-,mgt-,cct=1,bkxf=8,rpn=1,mg-,fjg=3,vlv-,zngsp=8,ksn-,hnf-,dbh=7,pxn=5,hsb=8,mq-,jsv=7,ccf=1,ts=8,kz-,xgr=5,xbx=5,sqd-,fpg=8,lvs=5,smtd-,zs=3,dsdm-,nrc-,jtz=8,jxj=3,sv=3,mlcn=9,psfnx-,kpqvtc=9,rsn=4,zdl-,lztd=4,vnk=2,dmp-,sscn-,zj-,dd-,zdl-,smtd-,tj=3,ggm=6,ff=2,zzd-,pfjml=7,chpn-,mjjk=4,spm=7,sfp=6,xbx-,dbffb-,sh=9,hnf-,pmz-,rzjkqp-,hb=8,bj-,hgp-,txkh-,znjg=2,vqfz-,vgln=2,zzd-,crb-,vqt=3,ssmflk-,bqpp=4,xt-,dbffb-,bhfh-,hsb-,rvcd-,sbt-,txpx-,jtz-,cb-,dp-,mvmqfm=3,ddxn-,msbfzl-,xgk-,jpc=5,phsl-,dbffb-,zcjvl=4,tvm-,pv=2,sfp-,nnn-,jmthd=2,qcnnzx=3,xnmq-,tgqp-,fzm=3,jpc=2,cnn-,jhhqj-,mvmqfm-,rtj-,km-,lk=6,slzd-,chpn-,xb-,tpnmp=9,vkz-,lqt-,vf-,gbsp-,cmpc-,xc-,pkg=5,tz-,dzt-,mvmqfm-,dvz-,lhks-,npd=6,lfg=7,bgh-,vqbp=5,grlkl-,lvx=4,mgpp=1,znb=6,zf=4,lfl-,cr=2,dbffb=3,jzxp=2,mhh=2,gftx=7,lfg-,gkn-,xb=5,djmlb-,qln=8,zmlr-,dkz=6,grlkl-,rt-,zcjvl-,vblpd-,lztd-,lfg=2,gxg=6,bj=8,zs=9,ssd-,lcr-,tqx-,ncjb-,kmr-,trg=4,kmm-,cjk-,tq=7,qqp-,scbpb=1,rc-,xzt=1,ftz-,sjb=2,rknz=4,gbsp=4,qrn=3,dhh-,mph=1,pjfk-,grfxxs-,xfn=3,bq=6,kd=3,vjzt-,vgln-,rv-,lcr-,blfx=4,gzrz-,kmm-,hj=8,pvv-,khn-,jfz-,gr-,gr-,dhh=9,ps=3,vblpd=9,sqd=3,hz=7,mp-,lxg=1,bnlpjk=3,jjd-,txpx=7,fx=9,nkx-,bg-,rvcd=4,sr=6,qz=3,vdf=9,ld-,nsxz=1,zdtz-,dzn-,hb-,vjzt-,nfgp-,cmbv=6,pljg-,sqd=1,ssd-,fzm-,qv=8,tn-,cct=8,cnn=2,vkh-,zl=8,xcq-,ppq-,scb=5,pbk=6,jmrz-,xgr-,kpjqgm-,nglvx=5,qht-,fnln-,cl-,kkc=9,kpfr-,xtl=9,dsg-,xrb-,zdm-,mmn=5,tz-,gh-,vkn-,vkqx-,gkn-,qxkrd=7,rt=7,rh=3,bc-,nzq-,mtx=8,jc-,kfp-,dkms-,thnmq-,jhhqj=6,vhx=2,lqfv-,kc-,vqzhc-,bzj-,fmkjj=5,ql-,fdfc-,kftx-,ktj-,bgh=2,cqzt-,rtj=2,vkh=2,dfz=6,xstdx=9,npd-,hf=8,jhhqj=1,snpgsm-,xrb-,hm=5,bx=1,ql=2,djmlb=7,xcq=6,xbx=4,kl=9,dk-,sh=7,ctf-,sqjgc-,thnmq=7,lhks=9,xdfz-,tk-,pt-,vgslz=7,dtv=5,sbt=9,kv=1,drs=3,db=8,lqf=6,xhd-,qln-,ckb=2,kpn-,qvlzn-,fb-,xcq=3,vqc=2,ct=4,dtck=5,vgslz=9,shn-,rv-,cr=3,tpnmp=1,cct-,zj=8,bnhz=4,psfnx-,nnn=8,kl=8,ps=5,ng=6,cnr-,snpgsm-,dnkf=9,znb-,bgkjq=1,pjfk-,pl=9,dtt-,sqd-,hgp=7,gs-,qrn=8,dvz=4,kftx=7,ggqq-,cl-,cr=9,jsv-,vjzt-,pxvxlh-,kqh=1,tqx-,lvx=9,mf-,rpn=2,bpq=4,km=4,vnk=6,cqzt=9,bxx=8,tn-,pgd=8,dp=7,thncf=8,zdtz-,vgslz=5,cnr=7,nkx-,hdxvhr=6,tj=6,xnmq-,qf=4,lq-,vnk=7,rpn=4,zd=8,rxv-,lln-,sbt=6,mhh-,rz=5,dtt=9,gxx=7,pnp=2,lqt-,xdfz=7,lhks-,gflrmd=8,kpqvtc=3,tj-,pvv-,xcq-,xfn-,kpjqgm-,kc=6,zngsp=1,vpxv-,xfn=1,qqp-,tj=2,xrb-,zsx=4,lfl-,vqc-,nq=9,lrpx=7,rpn-,phsl=7,chpn-,vq=6,dd-,ff=1,lztd-,lq-,vx-,lg=3,jmthd=7,vnhfc-,jgmnxd=6,fpg=3,xs-,ggqq-,msbfzl=7,znjg-,xt=8,xzt=9,ff=3,mmn-,dmp=7,hrbj-,vth-,dkz-,nsxz-,bnhz-,bq=2,hm-,dm=7,trzx-,xmxf=1,npm=7,qqp-,fnv-,bzpv-,hnf-,ztk=4,hz-,bx-,srp=4,sqd-,zk=5,gbsp-,fsz-,vlv=6,hpl=5,jgmnxd-,rtj=9,lh-,qhvz-,vkn-,blfx=6,sc-,rqx-,tslfp=6,zdm-,fsz-,mm=5,lc=5,ghm=6,ktj-,kl=6,dph=6,ztk-,cb=2,kz-,psfnx-,mq=4,vqc-,dph=9,zj-,js-,znb-,vqbp=9,dx=2,dtck-,gt-,br=6,zrq-,bqpp=5,ckb=6,ng=9,zdm-,jc-,lvs-,ql=9,zf-,sc=2,dph=9,bz-,vbz-,khn=6,kmr-,drs=7,kx-,vlv-,pljg=6,vpxv=6,fsz=5,vqbp-,tcs=5,qz=9,xp=2,xp=7,kx-,ssd-,bz-,vs=5,mgpp=8,rnsbt=1,hdxvhr=4,rz=9,nq-,ktj-,pv-,cmpc=5,psfnx-,pqf=9,tv=4,jpc-,jfjbj-,vps=6,bszd-,jx-,xhs=2,cfnbp-,cb=6,nfgp=8,mg-,fjh-,mtx-,vrc-,cr-,njvd-,lffv-,qqp=4,cr-,js-,jx-,pgd=9,qg-,vsj-,bnhz-,sjb=1,nglvx-,fkzq=9,qhvz-,nlcrm-,kmm=2,jzxp=2,zrs-,mtx=9,hnf-,lk=5,nq=2,rpgj=1,tkpb=7,zzx=7,pnp-,rgh=1,qhvz-,zpc=1,pmz-,nhsvv=5,zqr=6,cggz-,lhks=3,bpq-,tfd=7,jm=4,kpjqgm=9,qxj=8,pv=8,pmz=2,jf=2,gxx-,jf-,mktlhp=1,lrpx=2,lqf-,scbjp=3,fdl=7,khn-,ddxn=7,dzn=6,chpn=5,vpxv-,kl=8,sqd-,vnk=9,vbz-,cqzt=9,lc=4,nhsvv=7,ph-,bz-,xzt=7,cqr=8,spfc=3,vsh=9,bbsk-,khn=1,bl-,lffv=3,pl=8,zdl=7,qg=2,vkz-,qht=9,xhd-,blfx=5,vbmk=5,npd-,zv-,bpqv=2,tvm=6,xqv-,zv=8,dbffb-,trg-,cqbvs=2,vqbp=4,kpfr-,ql-,cggz-,kpfr-,sbt-,plp=2,fsz=3,ct=1,zcjvl=6,rpgj-,nfgp-,zqr=4,zn-,mq-,ps=8,rtj=4,kpqvtc-,ndmt=3,plvd-,xv-,rt-,fb-,psg=8,sxlh-,nhsvv=4,pkbv-,vrzjf=7,dzn=7,mmn-,jfjbj-,vnkmzj=6,dp-,rh-,cv-,dzn-,lg-,rpgj=1,dph-,ctdbt=3,cfnbp-,gxx=8,hj=3,xnmq=4,lc=5,bb=9,zdl-,zzd=9,hzlzn=9,dz=9,rz=9,bzj-,xb=4,lrpx-,vlv-,dph=1,cqbvs-,ghm-,pcnzf=2,vr-,cct-,mph=2,nsxz-,ssd=2,hfrdk-,psfnx=9,rc-,pbk-,znb-,zmlr=1,dk-,dkz=3,rqg=3,mv-,zv=9,sscn-,bszd=1,xhs-,dzt-,mgpp=3,dnkf=6,tnfx=9,drs-,spfc=3,dbsf-,sr-,lfg-,bg=2,gbkt=7,jxj-,tv-,fjh=9,fdfc=5,gs-,vbz=1,dbsf=9,zdtz=6,fgmpc=2,njvd-,hfrdk-,sh=8,scbjp-,zn-,msbfzl-,px-,spfc=6,vdf=2,vc-,vlv=2,cqq-,vhx=1,hl=3,vkqx-,fx=7,gct-,vrc-,hpl=8,zm=1,ktj-,xmxf-,rqg=7,zm=8,cqq-,zlcmgc-,kkcd-,dtt-,jmrz-,gf-,xzl-,pcnzf-,tslfp-,pxn=2,ccs=5,lmlx-,cct-,vgln=4,xt=3,gxg-,vq-,dz-,vqc-,bgh=6,zbgdxg-,ctdbt-,mg=6,fb=1,xbx=1,xv=2,lvs-,kd=9,slzd=2,xb=3,mvmqfm-,kv-,jfz-,jc=8,mgpp-,shn-,kpn-,scb=9,txpx=5,zf-,vhx-,rnxt-,pxn-,mg-,gftx=6,fsz-,xnmq-,bz=4,nfgp-,gkn=7,bnhz-,qpm=1,vhl=5,pm=1,spm-,xfn=8,xf=9,vqbp-,trg=1,pkg-,lrpx=4,mf=7,rpn=7,vqbp-,vdf=8,zz=5,tslfp-,dz=1,fjg-,cb-,zqr=3,clg-,js=2,xjpbxm-,fnln=4,pgd=7,hzlzn=6,qrn=4,khn-,psfnx=7,grfxxs=8,lvx=4,spm-,zl=6,grfxxs-,trg=1,lmlx=2,rsn-,rb-,cnn-,zdl=1,mmn=8,rr-,scbjp-,zk=2,xrm-,lc-,pkbv-,ss-,qhvz-,fq-,bnlpjk-,kkc=8,fpg=7,tgqp-,jzxp=8,rm=2,plvd-,lfg=5,jmrz=9,vk=7,spsx=2,spfc=5,plp-,cfnbp=6,jzxp-,fjh=3,xjpbxm=4,br-,nrc-,sn=3,rc-,lfl-,plt-,np=5,bgg-,xf=4,vlv-,vrc=5,cct=5,vps-,xzl=9,nnn-,pvv=9,dmp-,sf-,hm-,vtp=7,cqr=7,kv-,rnsbt-,qcm-,dvz=1,dbffb-,dbh=4,bzj=9,ctdbt-,tnp-,ksn-,dmp-,qz-,lxg=6,dtck=9,lvx-,bfz=6,xgk=7,qpm-,ggqq=2,grfxxs=3,msbfzl=1,xqfrg-,nlcrm=5,hzlzn-,rfdrk-,xhs=8,xnmq-,pbk=9,jsv=9,zk=8,dtck-,jtz=2,nhsvv=6,ddxn-,ks-,tcs=1,jsv-,xb=1,ff=1,scbjp-,mjz=7,pbmldc-,tcs-,xhs-,plt=8,zs-,xbx=6,bxx-,qcnnzx-,dkz-,dvz=2,rh=4,mhh=7,djmlb=7,bnlpjk=8,jgmnxd=9,pzd-,lffv=2,xqfrg-,cb-,tzjln-,bfz=1,fnh=8,xf-,cqbvs-,lqfv-,ld-,jtz-,nj=8,cjk-,dsdm=9,thnmq=2,ck=8,bpqv=4,rgh-,mf-,sqjgc=8,rzjkqp-,dvmm=8,zthrd=2,mtx-,cqzt=6,gct-,spfc=7,trzx-,hlg-,rqx-,lffv=5,vf-,bqpp-,nhsvv=8,kpfr=2,dfz-,cnn-,gkn-,hb=2,vnk-,px=2,hxd-,zthrd-,xv-,jzxp-,vkn=7,cxq-,ccf-,xfn-,lxmkfx=5,pljg-,lqfv=5,rfdrk=9,khn=5,cnr-,vr=9,kd-,ssd=5,mmsz=7,fnh-,mf=8,lvs=3,vgslz-,pfjml=7,dtck=8,dph-,gk=4,ntg-,lpd=2,fnv=1,mnphn-,xzbz=1,zd=8,gf=1,tr-,lpd=9,vjzt-,ss=7,qnd-,db=2,vz-,lxg-,khn=3,vkqx-,fjg-,zrs-,tnp-,rc=9,fdfc=4,tqx=1,scbjp-,nbtq=6,kmqjt-,jc=9,txpx-,pr-,vps-,zv-,vnhfc-,jmthd-,blfx=1,vqt=4,spfc-,tzjln-,cfnbp-,zf-,ndmt=4,xqfrg=2,cmbv=4,mtx-,ktj=5,nh=1,mm=6,xv=5,ng-,bfz=2,zj-,pt=6,njvd-,qcnnzx-,qgm=8,fjh-,zqr=9,tn-,zz-,mvmqfm=9,gt=3,vgslz=4,px-,fnh=7,njvd=8,jtsdd=2,rzjkqp-,np-,ph=5,zqr=6,cb=6,sxlh-,pfjml=2,dmp-,lxmkfx=2,kpqvtc=4,mvmqfm=1,rknz=8,zcjvl-,tq=1,nnn-,vc-,zdl-,ndmt-,dtt-,mf=4,qcnnzx-,zzx-,pkg=6,xfn-,rnsbt=8,rgh-,vp=2,vpk=1,zz=2,mkj-,mr-,lln-,dm-,cfnbp-,sbx=9,dsdm=1,kpqvtc-,zzx-,bqpp=9,lqf-,cqr-,mlcn-,spm=1,dhh=6,js=4,pg=1,vbmk=3,vqc-,ftz=4,zxt-,zz-,xtl=6,pr=9,cnr=8,rqx=4,bszd=3,rl=6,phl=4,dvmm=2,drs-,bnhz=4,cggz=7,nhsvv-,cnr-,bgg=4,tr=1,pjfk=8,fq-,kmm=2,jjd=9,dbsf-,sxlh-,xzt-,mjjk-,pfjml=8,lmlx-,xtsd-,ftz-,nq-,kd=3,tk=2,vth-,nrc=4,vqbp-,grfxxs=1,ssmflk-,mmsz=6,lh-,td=2,vc-,qht=1,ccs=3,fpg-,ff-,ppq=2,cl-,ff=9,gk=1,zzd-,mv-,pqf-,vq-,vtp=1,thncf-,gt=7,ksn-,bnhz=8,xmxf-,ktj-,cnr-,ctdbt-,cggz-,vps=8,ff=1,jhhqj-,hd-,dphx=3,zk-,bg-,pkg-,gh-,nl=4,dtv=1,ph=5,xk=4,sbt-,sjb=4,tslfp-,kftx-,gxg-,mjz=9,bzpv-,dvmm-,zlcmgc-,mvmqfm-,jmrz-,sf=3,zz=4,vsh-,kfp=9,cggz=4,pm=4,nlcrm-,pg=9,xhd-,spsx=9,xmxf=8,bbsk-,pr-,qhvz-,vqfz=7,dp=5,ndmt-,nlcrm-,mgt=8,gflrmd-,vkn-,jsv-,qrn=7,gk-,rc=9,qvlzn=2,xtsd-,xzl=8,vdf-,fb-,mr-,vrc=2,qpx-,bmnlf-,scbjp-,vpk=5,vjsg=3,rvcd=7,tk=2,xstdx=9,tcs-,zqr-,kpfr-,rz-,vgln-,dvmm-,lqfv=8,bszd=3,nglvx=9,lq=5,dnkf-,sfp=3,pxn-,blfx=6,zzd-,sbx-,dfz-,fq=2,qqp-,rtj-,sb-,nbtq=2,bb-,zpc=6,tfd-,zl-,scb=4,nfgp-,kftx-,zn=8,rh=3,fzm-,qvlzn=3,ctp-,qrn-,ztk-,pmz-,rh-,vpxv-,lvx-,cq-,jmrz=8,sqd=2,kftx-,ppq=7,dvz=3,vblpd-,jgmnxd-,gxx=6,vnk=5,ntg-,sjb=3,dkms=3,bgh-,zsx-,xrm=8,pkbv=7,vttk=7,lxg=5,jm=9,vqbp-,kfp-,hzlzn=5,hl=4,trg=9,lq=7,ksn-,mmsz=5,px=2,lcr=4,td-,hfrdk-,rnsbt-,qln=3,dvmm=6,gftx=6,ppq-,xbx=8,pvv=8,xcq-,tzjln-,tdl=8,vf=9,sxlh=9,bgh=5,bqpp-,zxt-,xs=5,kmm-,ps=5,ctdbt-,hd=4,md=7,xzl=5,jfz-,tzjln=9,gpg=5,lmlx=2,phsl=2,jx=3,lfl=4,kpfr-,db=9,fdl-,rm=3,bqpp=7,mp-,xv-,bpq-,pg=1,nlcrm-,xk-,mq-,lk=7,hrbj=1,hj=1,ss=8,hnf-,xqfrg-,tnfx=9,znb=8,kl-,lqf-,dsdm-,khn-,cct=4,bzj-,spsx-,lc=6,jfz=4,plp-,fb=1,bgkjq=2,pvv-,br-,cfnbp=5,sqjgc-,sv=5,mmsz-,dd-,lrpx=5,mgt-,hdxvhr=1,dsg=6,zz-,gkn-,fjg=7,px=4,lfg=7,jfjbj-,ghbr=4,ftz=1,lffv-,pjfk-,spfc-,mlcn-,vth-,qxkrd-,ctdbt-,qpx=5,gqsr-,sscn=7,ghbr-,vqbp=8,bgg-,zf=2,qxj=8,bpqv=6,hlg-,tn-,lfl-,bzj-,tk=4,ql-,gxx=6,gqsr-,mtx=1,rqg=7,zzx-,lcr-,bx=7,nl-,msbfzl-,bhfh-,sxlh=7,nsxz=8,bgg-,pfjml=4,pv-,qv-,kx=4,dp=5,gxg-,qpx=9,mjz=5,zxt-,tv=4,kx-,xtsd=7,txpx=4,hdxvhr=7,pzd=2,vqc=4,xjpbxm=3,dm-,rvcd-,ps-,hbmt=9,nsxz=5,cct-,xhs=3,cqr-,fm=3,pzd=5,qxkrd-,rz=8,pgd-,txpx-,xk-,hnf=7,hlg-,lcr-,nqcj=9,pgd-,spm=3,zk=5,jxj=9,vth-,srp-,sbx-,cs=1,vpk-,srp=7,sqjgc=7,ks=1,dvmm-,zqr=6,gbkt=5,rl=1,phl-,mg=9,rm=2,dsdm-,rz=2,pgd-,gf-,bxx-,nq=3,vtp=6,sbt=9,kpqvtc-,qcm-,td-,bnhz=3,rknz=6,mjjk=6,qf=9,thncf=5,bb-,vjsg-,cnn=6,jxj=6,vkn-,gbsp=3,kpfr=1,lqfv=6,kv-,gt=1,fq=4,kl=4,rtj-,vth-,pfjml-,hbmt-,vr=1,xmxf-,sc=1,cgp-,jx=1,chpn-,xcq-,vttk-,vpk=1,mnphn-,mtx-,gxx=1,cgp=2,qvlzn=4,sr-,ct-,rh=3,rzjkqp=2,ld=9,pljg=6,vlv-,rgh-,spfc-,jm=8,fkzq=4,xmxf-,gp-,chpn=8,xtl-,cggz-,xnmq=3,rnxt=1,znb-,nfgp-,ts-,bqpp-,fnln=3,pljg=5,hz-,kfp=4,cq-,bgkjq=9,vs-,zngsp=7,jsv=3,dbsf-,kx=4,ph-,xb-,dsg=6,sn-,jmrz=4,dzt=7,mnphn-,vk-,kkc-,kpn-,vblpd=6,vqbp-,dmp=6,hsb=1,zlcmgc-,vbmk-,dp-,tk=3,drs=8,pl=4,sbx-,jhl=9,rknz=5,qcm-,mp=8,vqfz=9,ctdbt-,qp=2,vsh=8,nkx=8,qxkrd=6,bpqv=9,cxq=3,nbtq=1,sxlh=4,fnv=5,vnkmzj-,gpg-,nh=8,zd=1,rzjkqp=6,qpx-,bzj=2,fkzq-,lxg-,bb-,lffv-,xs=3,rzjkqp-,bpqv-,bz=3,zn=5,br-,zthrd=5,kc=2,ss=2,kf-,bb-,bz=6,hb-,dtck=4,sxlh=9,mmsz-,znb-,mhh=3,nhsvv-,ntg=1,bqpp=2,thncf-,tnfx=8,nglvx=1,bzj=3,gcbtgm-,cmbv-,ctp-,pg-,zpc-,rpn=1,gn-,ncjb=8,kmr=3,tz-,bnhz-,dvz=2,mvmqfm=5,jc-,plt=6,cl=8,vc-,qgm=2,ss=5,jc-,cggz=4,chpn-,qln-,nh=8,pljg-,km-,pgd=7,tqx-,xhd=2,gmrrx=3,bhfh=6,bx=3,msbfzl=2,rm=6,qcnnzx=9,xgk=6,gct=4,kpjqgm-,jx-,tgqp=4,sv=2,xf-,ks=9,pzd=6,zrs=3,md-,thnmq-,zzd-,xnmq=3,rc=2,kmm=9,rz-,jc-,rsn-,dphx-,bqpp=7,vs=2,kkc-,sqd-,tdl=9,zbgdxg-,qgm-,gmrrx=7,cb=4,bx-,lvx=8,slzd=1,fzm=5,cs-,xs=5,xxj-,xhd-,qcm=2,xxj=6,vz=8,cqzt=2,fdfc-,vx=6,rpn-,gxx-,nhsvv=6,mktlhp-,vjzt=4,lztd=7,zs=7,mv=2,nlcrm-,tkpb=9,sxlh-,pv-,qxj-,xcq=8,xgk-,scbpb=3,dk=9,mjjk=3,lztd-,njvd=8,znjg=5,lxmkfx=5,snpgsm-,ph-,pr=1,rpgj=4,nzq=2,kc=2,rsn-,dzfqlb=6,gf-,qcm=1,tcs-,mm=2,fjh=6,vp=6,sl-,kfp=4,tslfp=9,hl=1,fzm-,lmlx=2,bnhz-,sfp-,pcnzf-,gct-,jc-,xk-,zpc=2,jxj=6,tzjln-,bqpp=5,pjfk-,cct=5,qgm=8,sxlh=7,lhks-,mmn-,rpn-,vp-,qnd=9,mjz=2,td-,gct=6,sfp-,cb-,tnb-,zf-,chpn-,pkg-,gs-,mmn=2,mnphn=9,pxvxlh-,fm-,vdf=2,vnhfc-,njvd=1,npd-,cl-,vhx-,kz-,hl=8,bpqv=7,ks-,pl=6,txkh-,mjz-,bl=1,cqzt-,bbsk=7,ghm=3,tpj=4,tv=2,qf=7,tpj=7,ztk-,mq=2,jtz-,vkn=4,cs-,xdfz-,ccf-,lxg=9,ctdbt=1,trzx-,bnhz=6,gf-,kjrc-,vr=1,msbfzl=2,vblpd=6,qxj=7,cjk-,nj=4,cjk-,sjb-,ng=4,rnsbt=4,rtj-,frgf-,tqx-,sbx=9,kmqjt=8,rfdrk=8,ctdbt=5,mldgtn=8,rfdrk=7,pnp-,phsl=3,vc-,hz-,rzjkqp=9,njvd-,qqp=7,pjfk=1,sscn=2,pkbv-,lfl-,vp=5,kr=4,ccf-,plp=8,lpd=5,mph-,rh=6,zl-,lc=2,jhhqj=5,xf=6,snpgsm-,lq-,sxlh=6,vsj-,trg=1,cl=1,vjsg-,gp-,tn-,mlcn=8,gmrrx=5,qfb-,fx-,tzjln-,tfd=2,bg-,bkxf-,qpm=3,npd-,ssmflk-,fpg-,rknz-,zngsp=1,nlcrm=4,pt-,vkz-,mq=7,mldgtn=2,gr=7,fr-,xzt-,mkj-,jmrz=5,lxmkfx-,pxvxlh=3,vbz-,nq-,sbt=8,rtj=8,ktj=3,bpq-,mq-,lqf=9,vp=7,vz=1,bb-,ndmt=4,vdf=7,mr-,fnh-,rzjkqp=7,sxlh-,bszd=1,vgslz=5,zd=2,tpnmp=6,fr=2,bgg-,lk=1,qpf-,bpq-,xt-,ps=7,pxvxlh=1,fkzq=7,mgpp-,cqzt=6,bbsk-,clg=7,ztk-,bl-,vjzt=4,tk-,plvd-,jsv-,zd=7,dm-,gxg=8,lxg=2,bgkjq-,np=4,frgf-,lh-,ssmflk-,bc-,vjsg=9,rfdrk-,jx-,pbk=7,npm=5,kjrc-,jfz=8,bz-,bfz=3,ld=6,hj=4,msbfzl=4,clg=2,vhx-,vq=1,hb=4,mmsz-,sbx-,xnmq-,cqbvs=8,hgp=5,qlf-,nfgp-,ztk=8,vnkmzj-,cmbv=9,jjd-,rz-,bl-,jfjbj=7,hxd-,tfd=6,sh-,frgf-,ctp-,sjb=7,vsh=6,br=7,vz=9,px-,lrpx-,fzm=3,tslfp=9,znfd=5,bpqv=2,mktlhp=2,hm=9,znfd-,xgk-,xdfz=7,gxx=8,vpxv=3,qfb-,qnd=1,gpg=1,txpx=4,zmlr=4,zk-,plt=5,dx-,qfb-,vqbp=2,hzlzn=3,bfz-,mgpp-,xf=1,fgmpc-,rl=9,fjg-,qpf-,tslfp-,qvlzn=3,gbsp-,scbjp=1,mktlhp-,jhl-,fdl-,jmrz=1,rc=8,dmp-,clg=2,xtl-,cqbvs-,qfb=9,lpd-,kmr=3,xh-,lh=4,spfc-,cnr=1,lqfv-,scb=7,kd-,rqx-,tpnmp=5,pjfk-,qz-,gf=7,tz=9,kjrc=5,td-,bl=3,dmp-,ccs=9,rzjkqp=5,npm-,kpn-,pljg=6,dsg-,bg-,mhh-,mvmqfm=4,xzl-,plp=7,tk=6,zn=7,njvd=6,lqfv=7,rzjkqp-,kmqjt=5,cv-,mf=7,gxx=3,pxvxlh=4,nbtq-,vqzhc=7,bpqv=2,sl=6,ccf=5,slzd-,ssmflk-,sf=3,vhx=8,mmsz-,chpn-,fzm=2,xtsd-,tvm=1,zk=9,hm=2,cv=1,lq=2,dzfqlb-,kmm-,rxv=5,txpsv-,nrc=7,ps-,gflrmd-,tv=6,gs=6,znfd-,kc=3,zzx=8,vc-,tvm-,rtj-,kqh-,dsg=9,fx=3,hm-,rsn-,lpd=1,zjvd-,nq=6,hgp=3,vqbp=5,jzxp=5,pxn-,js=4,zthrd=3,nj=3,znb-,ncjb-,kc-,kmr=6,lcr-,vs-,kpfr=3,jgmnxd=9,bhfh-,rv=4,ks=3,hf=9,bgg=4,fsz-,hf-,np-,zzd=8,pgd=6,kmqjt-,znb-,fb-,qlf-,zj=1,pvv-,nzq-,ng-,lmlx-,zdm=4,hvglb=9,nhsvv-,kjrc=4,hvglb=1,ctp-,qlf-,lfg-,jhhqj-,txpsv-,bxx=3,ppq=2,vhx=7,scb-,lq-,sscn=9,pljg-,gxg=2,cv=7,zm=6,hdxvhr=4,hpl-,mkj=5,zl=7,zcjvl-,xp=3,bszd-,lxmkfx=5,rgh=7,lztd-,xv=1,cjb-,rqx-,gflrmd=5,lqfv=1,fdfc=4,vblpd=6,tslfp=5,rnsbt-,tpnmp-,cmbv=6,cq=5,gk=2,zdtz=8,lhks=2,gr=2,cxq-,xzbz=7,bpqv-,cmbv=3,cqq-,bgg=2,znb=3,vkn=7,gxx-,pv-,vf=7,gbsp-,qp=6,grfxxs=2,vqc=6,lh-,msbfzl-,dfz-,fgmpc-,kmqjt=3,qrn-,pfjml-,pm-,qpf-,qg=8,vlv=4,cq=6,lq=1,tnfx=2,cgp-,lq-,vgln=7,bgh=3,ggm-,jtsdd=1,xk=2,rqx=5,zv-,mhh=2,bpq=6,fdfc=6,lmlx=7,hdxvhr=5,jgmnxd-,lvx-,vrzjf-,dtck=5,ph-,rqg=5,gf=9,nqcj-,vqzhc-,bj-,fjg-,qln-,jpc-,vnk=1,sbt-,qf=8,qrn=8,gpg-,nglvx-,dbsf-,hz=1,jfjbj-,hbmt=1,sqd=1,cl=7,bzj-,jtz-,vblpd=7,znfd=1,gpg-,drs=3,gn=7,mvmqfm-,cr=3,tpj-,ck=3,qp-,zrs-,tpj-,gcbtgm-,zv=8,lfg=8,jxj-,ftz-,zz-,fdfc-,plvd=9,spm-,fkzq-,xcq-,sqd=4,dph-,rsn=9,vjzt-,xt-,dsdm=4,qlf=3,qht=2,js-,sv-,slzd=9,spsx-,zk=1,rv-,jxj-,scb-,db-,ff=2,cq=9,nh-,fzm=1,cs-,rzjkqp=4,vx-,qp-,spm=9,tnb-,bgg-,phsl=2,lg=5,gmrrx=3,pfjml=1,psfnx-,dbsf=3,jmrz-,lztd-,vrzjf-,vkqx=8,mv-,sqd-,hrbj=8,tgqp-,sbt=6,lhks=2,vp-,mv=6,snpgsm=9,xf=3,tnb-,hl=5,vqbp=7,zd=1,fm-,hbmt=7,scb=1,txpsv=3,jf=6,rc=3,vs=7,qpx=1,sf=3,zbgdxg-,xv=7,xv-,hgp=3,nfgp-,qht=8,vblpd-,ql=9,kmr-,rtj=2,lpd-,rfdrk-,rxv=5,sbx-,rfdrk-,pgd=8,kpjqgm-,vjsg-,cgp-,fnln-,dvz=3,pbk-,mvmqfm-,lmlx-,ndmt=2,trzx=7,tnfx-,xgr-,zlcmgc=5,plvd=8,gs=5,sv=2,dk=9,vnkmzj-,vkn=3,xbx=9,kl-,psfnx=8,ppq-,vq=3,xzl-,mldgtn-,plvd=7,gcbtgm=1,sscn-,drs-,bnhz=2,lhks-,sf-,pbk-,sxlh=3,vkn=2,vqfz=9,gct=1,cmbv-,qgm=5,lg=6,tnp=6,jsv=7,mmn-,xnmq=3,vx-,fkzq=1,vqbp-,gbsp-,txpx=9,jtz-,hdxvhr=8,xk=4,xxj=3,vrc-,fjh-,pxn-,gbsp=8,hl=5,jm-,zn-,chpn-,nbtq=7,kqh-,chpn-,nnn-,hfrdk-,mp-,bgh-,ns-,vsj=3,fgmpc=1,kd-,dtck-,nh=4,frgf=3,cq-,pt-,vttk-,px-,smtd=7,ctf=8,zn=4,kl-,jjd=4,bzj=7,cnn-,mtx-,pzd=1,ssmflk=4,jgmnxd-,ccf=4,jmthd-,vnhfc=7,srp-,qxj=7,chpn-,nh=2,kkcd-,dm-,mmsz=4,fnln-,lq=6,kkc=1,bq-,nl=3,mmn-,jfz-,zf=4,sl=3,sqd=7,dtt=3,ql-,jmthd-,ndmt-,vqc=2,jjd=2,jpc=4,vrc=9,kpn-,gs-,mjz-,ftz=7,bq=5,cv-,xv=2,mktlhp=9,cmbv-,mtx=6,ggqq=7,fq-,rknz=3,xxj-,zngsp=3,rsn=5,xrb=3,vrc-,fb-,phsl-,plp-,pl=9,cr-,vpxv-,lk=4,khx-,rpgj=2,kd=7,md-,dvz-,rl-,dkz=9,fsz=8,vq-,pm-,xf=7,tv-,tk-,dz-,qqp-,bg=7,xb-,nfgp=9,ng=7,kfp=2,mp-,vbz-,lxg=5,xqv=1,npd-,pvv-,xzl-,slzd-,dmp-,jzxp-,dphx-,txpsv=7,mldgtn-,ql=2,xgk-,mv=7,rl=7,kjrc=6,rl-,jfz-,ctdbt-,tdl-,fq=6,lcr=6,hzlzn-,qpx-,nbtq-,td-,mr=8,zngsp=4,vps-,ssmflk-,djmlb=9,pxn=7,cqq-,nlcrm-,rt-,vgln=9,gn=2,nsxz-,cfnbp=2,xrb=8,ts-,bfz-,lh=1
diff --git a/2023/day15/src/lib.rs b/2023/day15/src/lib.rs
new file mode 100644
index 0000000..e9d36eb
--- /dev/null
+++ b/2023/day15/src/lib.rs
@@ -0,0 +1,56 @@
+pub fn part1(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ let inputs: Vec<String> = input.trim_end().split(',').map(|x| x.to_string()).collect();
+
+ for i in inputs {
+ let mut s = 0;
+ for ch in i.chars() {
+ s += ch as u32;
+ s *= 17;
+ s %= 256;
+ }
+ res += s;
+ }
+
+ res
+}
+
+pub fn part2(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ res
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn example_part1() {
+ let input = include_str!("../example.txt");
+ let result = part1(input);
+ assert_eq!(result, 1320);
+ }
+
+ #[test]
+ fn input_part1() {
+ let input = include_str!("../input.txt");
+ let result = part1(input);
+ assert_eq!(result, 2331);
+ }
+
+ // #[test]
+ // fn example_part2() {
+ // let input = include_str!("../example.txt");
+ // let result = part2(input);
+ // assert_eq!(result, 2286);
+ // }
+ //
+ // #[test]
+ // fn input_part2() {
+ // let input = include_str!("../input.txt");
+ // let result = part2(input);
+ // assert_eq!(result, 71585);
+ // }
+}