current approach for day 4
this does not work yet
Dieser Commit ist enthalten in:
Ursprung
d430c8e15e
Commit
4f32ca95cf
1 geänderte Dateien mit 78 neuen und 0 gelöschten Zeilen
78
src/bin/2024/04.rs
Normale Datei
78
src/bin/2024/04.rs
Normale Datei
|
@ -0,0 +1,78 @@
|
||||||
|
#[allow(unused_variables)]
|
||||||
|
use std::ops::RangeInclusive;
|
||||||
|
|
||||||
|
#[allow(unused_imports)]
|
||||||
|
use advent_of_code_macros::{include_data, include_example};
|
||||||
|
|
||||||
|
include_data!(DATA 2024 04);
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
enum Direction {
|
||||||
|
Forward(usize, usize),
|
||||||
|
Backward(usize, usize),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Direction {
|
||||||
|
fn iter(&self) -> RangeInclusive<usize> {
|
||||||
|
let (from, to) = match self {
|
||||||
|
Direction::Forward(from, to) => (from, to),
|
||||||
|
Direction::Backward(to, from) => (from, to),
|
||||||
|
};
|
||||||
|
*from..=*to
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let table: Vec<Vec<char>> = DATA
|
||||||
|
.split('\n')
|
||||||
|
.map(|line| line.chars().collect())
|
||||||
|
.collect();
|
||||||
|
let length = table[0].len();
|
||||||
|
let mut xmas;
|
||||||
|
let mut amount = 0;
|
||||||
|
let directions = [
|
||||||
|
Direction::Forward(0, length - 1),
|
||||||
|
Direction::Backward(0, length - 1),
|
||||||
|
];
|
||||||
|
for r in directions.clone() {
|
||||||
|
for c in directions.clone() {
|
||||||
|
println!("Horizontal: {:?}, vertical: {:?}", r.clone(), c.clone());
|
||||||
|
for row in r.iter() {
|
||||||
|
xmas = 0;
|
||||||
|
for column in c.iter() {
|
||||||
|
println!(
|
||||||
|
"Row {}, Column {}, dir {:?} {:?}",
|
||||||
|
row,
|
||||||
|
column,
|
||||||
|
r.clone(),
|
||||||
|
c.clone()
|
||||||
|
);
|
||||||
|
match (xmas, table[row][column]) {
|
||||||
|
(_x, 'X') => {
|
||||||
|
xmas = 1;
|
||||||
|
//println!("Found X, previous was {}", _x)
|
||||||
|
}
|
||||||
|
(1, 'M') => {
|
||||||
|
xmas = 2;
|
||||||
|
//println!("Found XM")
|
||||||
|
}
|
||||||
|
(2, 'A') => {
|
||||||
|
xmas = 3;
|
||||||
|
//println!("Found XMA")
|
||||||
|
}
|
||||||
|
(3, 'S') => {
|
||||||
|
xmas = 0;
|
||||||
|
amount += 1;
|
||||||
|
//println!("found XMAS in {}:{}", row, column);
|
||||||
|
}
|
||||||
|
(_x, _ch) => {
|
||||||
|
xmas = 0;
|
||||||
|
//println!("Reset, was {}({})", _x, _ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("There are {} XMAS in text", amount);
|
||||||
|
}
|
Laden …
Tabelle hinzufügen
In neuem Issue referenzieren