aboutsummaryrefslogtreecommitdiff
path: root/src/day13pt2.rs
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-15 03:57:07 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-15 04:31:46 +0100
commita06ae0bf475fda36bb1cbc5b0b7bbf355c499bed (patch)
tree8b0b04ee2097fbfe2f1d426081258ae0033200f4 /src/day13pt2.rs
parentb987ec6481ea40e257dc81a8b3ebfc5f0483afe5 (diff)
day13 & day14pt1
Diffstat (limited to 'src/day13pt2.rs')
-rw-r--r--src/day13pt2.rs60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/day13pt2.rs b/src/day13pt2.rs
new file mode 100644
index 0000000..5af732b
--- /dev/null
+++ b/src/day13pt2.rs
@@ -0,0 +1,60 @@
+pub fn f(input: Vec<Vec<char>>) -> u64 {
+ for x in 1..input[0].len() {
+ let mut cnt: u32 = 0;
+
+ for i in 0..input.len() {
+ for j in 0..x {
+ if 2 * x - 1 - j >= input[0].len() {
+ continue;
+ }
+ if input[i][j] != input[i][2 * x - 1 - j] {
+ cnt += 1;
+ }
+ }
+ }
+
+ if cnt == 1 {
+ return x as u64;
+ }
+ }
+
+ for y in 1..input.len() {
+ let mut cnt: u32 = 0;
+
+ for i in 0..y {
+ for j in 0..input[i].len() {
+ if 2 * y - 1 - i >= input.len() {
+ continue;
+ }
+ if input[i][j] != input[2 * y - 1 - i][j] {
+ cnt += 1;
+ }
+ }
+ }
+
+ if cnt == 1 {
+ return (y * 100) as u64;
+ }
+ }
+
+ panic!();
+}
+
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day13.txt").unwrap();
+ let input = txt
+ .split("\n\n")
+ .map(|s| {
+ s.lines()
+ .map(|s| s.chars().collect::<Vec<char>>())
+ .collect::<Vec<_>>()
+ })
+ .collect::<Vec<_>>();
+
+ let mut sum: u64 = 0;
+ for i in input {
+ sum += f(i);
+ }
+
+ println!("{}", sum);
+}