day3 part1
This commit is contained in:
@@ -3,69 +3,69 @@ use std::fs;
|
||||
|
||||
use array2d::Array2D;
|
||||
|
||||
pub fn main() {
|
||||
let input = fs::read_to_string("input.txt").unwrap();
|
||||
let array_2d = get_map(&input);
|
||||
// let mut r = Vec::new();
|
||||
let mut stars_count: HashMap<(usize, usize), Vec<u32>> = HashMap::new();
|
||||
for (y, row_iter) in array_2d.rows_iter().enumerate() {
|
||||
let mut checked = false;
|
||||
for (x, element) in row_iter.enumerate() {
|
||||
let d: char = element.clone();
|
||||
if d.is_digit(10) && !checked {
|
||||
let star_vec = get_neighboring_star(x, y, &array_2d);
|
||||
if !star_vec.is_empty() {
|
||||
let (x_star, y_star, _) = star_vec.first().unwrap().clone();
|
||||
let key = (x_star, y_star);
|
||||
let gear = get_number(x, y, &array_2d);
|
||||
if stars_count.contains_key(&key) {
|
||||
let mut v: Vec<u32> = stars_count.get(&(x_star, y_star)).unwrap().clone();
|
||||
v.push(gear);
|
||||
stars_count.insert(key, v);
|
||||
} else {
|
||||
stars_count.insert(key, vec![gear]);
|
||||
}
|
||||
checked = true
|
||||
}
|
||||
} else if !d.is_digit(10) {
|
||||
checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
let r = stars_count.iter().fold(0u32, |acc, (_, gears)| {
|
||||
if gears.len() == 2 {
|
||||
acc + gears.first().unwrap() * gears.last().unwrap()
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
});
|
||||
|
||||
println!("{}", r);
|
||||
}
|
||||
|
||||
// pub fn main() {
|
||||
// let input = fs::read_to_string("input.txt").unwrap();
|
||||
// let array_2d = get_map(&input);
|
||||
// let mut r = 0;
|
||||
// // let mut r = Vec::new();
|
||||
// let mut stars_count: HashMap<(usize, usize), Vec<u32>> = HashMap::new();
|
||||
// for (y, row_iter) in array_2d.rows_iter().enumerate() {
|
||||
// let mut checked = false;
|
||||
// for (x, element) in row_iter.enumerate() {
|
||||
// let d: char = element.clone();
|
||||
// if d.is_digit(10) && !checked {
|
||||
// if !get_neighbors(x, y, &array_2d).is_empty() {
|
||||
// checked = true;
|
||||
|
||||
// r += get_number(x, y, &array_2d)
|
||||
// let star_vec = get_neighboring_star(x, y, &array_2d);
|
||||
// if !star_vec.is_empty() {
|
||||
// let (x_star, y_star, _) = star_vec.first().unwrap().clone();
|
||||
// let key = (x_star, y_star);
|
||||
// let gear = get_number(x, y, &array_2d);
|
||||
// if stars_count.contains_key(&key) {
|
||||
// let mut v: Vec<u32> = stars_count.get(&(x_star, y_star)).unwrap().clone();
|
||||
// v.push(gear);
|
||||
// stars_count.insert(key, v);
|
||||
// } else {
|
||||
// stars_count.insert(key, vec![gear]);
|
||||
// }
|
||||
// checked = true
|
||||
// }
|
||||
// } else if !d.is_digit(10) {
|
||||
// checked = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// let r = stars_count.iter().fold(0u32, |acc, (_, gears)| {
|
||||
// if gears.len() == 2 {
|
||||
// acc + gears.first().unwrap() * gears.last().unwrap()
|
||||
// } else {
|
||||
// acc
|
||||
// }
|
||||
// });
|
||||
|
||||
// println!("{}", r);
|
||||
// }
|
||||
|
||||
pub fn main() {
|
||||
let input = fs::read_to_string("input.txt").unwrap();
|
||||
let array_2d = get_map(&input);
|
||||
let mut r = 0;
|
||||
for (y, row_iter) in array_2d.rows_iter().enumerate() {
|
||||
let mut checked = false;
|
||||
for (x, element) in row_iter.enumerate() {
|
||||
let d: char = element.clone();
|
||||
if d.is_digit(10) && !checked {
|
||||
if !get_neighbors(x, y, &array_2d).is_empty() {
|
||||
checked = true;
|
||||
|
||||
r += get_number(x, y, &array_2d)
|
||||
}
|
||||
} else if !d.is_digit(10) {
|
||||
checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println!("{}", r);
|
||||
}
|
||||
|
||||
fn get_map(input: &str) -> Array2D<char> {
|
||||
let rows: Vec<&str> = input.split("\n").collect();
|
||||
let mut array = Vec::new();
|
||||
|
Reference in New Issue
Block a user