aboutsummaryrefslogtreecommitdiff
path: root/src/day13pt1.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/day13pt1.rs')
-rw-r--r--src/day13pt1.rs70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/day13pt1.rs b/src/day13pt1.rs
new file mode 100644
index 0000000..bc71c44
--- /dev/null
+++ b/src/day13pt1.rs
@@ -0,0 +1,70 @@
+pub fn f(input: Vec<Vec<char>>) -> u64 {
+ for x in 1..input[0].len() {
+ let mut ind: bool = true;
+
+ for i in 0..input.len() {
+ if !ind {
+ break;
+ }
+
+ for j in 0..x {
+ if 2 * x - 1 - j >= input[0].len() {
+ continue;
+ }
+ if input[i][j] != input[i][2 * x - 1 - j] {
+ ind = false;
+ break;
+ }
+ }
+ }
+
+ if ind {
+ return x as u64;
+ }
+ }
+
+ for y in 1..input.len() {
+ let mut ind: bool = true;
+
+ for i in 0..y {
+ if !ind {
+ break;
+ }
+
+ 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] {
+ ind = false;
+ break;
+ }
+ }
+ }
+
+ if ind {
+ 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);
+}