tangled
alpha
login
or
join now
nove.dev
/
aoc-2025
1
fork
atom
:)
1
fork
atom
overview
issues
pulls
pipelines
questionable code cleanup
nove.dev
3 months ago
49929560
e43f7c5d
+18
-40
2 changed files
expand all
collapse all
unified
split
src
day6.rs
spatial.rs
+14
-31
src/day6.rs
···
44
44
}
45
45
problems.push(
46
46
(0..rows.len())
47
47
-
.map(|row| &rows[row][beginning_of_last_problem..col])
47
47
+
.map(|row| rows[row][beginning_of_last_problem..col].to_vec())
48
48
.collect_vec(),
49
49
);
50
50
beginning_of_last_problem = col + 1;
51
51
}
52
52
53
53
-
let mut parsed_problems = vec![];
54
54
-
55
55
-
for problem in problems {
53
53
+
let parsed_problems = problems.into_iter().map(|problem| {
56
54
let operands = if !cephalopod_style {
57
57
-
problem[..problem.len() - 1]
58
58
-
.iter()
59
59
-
.map(|chars| {
60
60
-
chars
61
61
-
.iter()
62
62
-
.collect::<String>()
63
63
-
.trim_ascii()
64
64
-
.parse()
65
65
-
.unwrap()
66
66
-
})
67
67
-
.collect_vec()
55
55
+
problem[..problem.len() - 1].to_vec()
68
56
} else {
69
69
-
let transposed = spatial::transpose(&problem[..problem.len() - 1]);
57
57
+
spatial::transpose(&problem[..problem.len() - 1])
58
58
+
}
59
59
+
.iter()
60
60
+
.map(|line| line.iter().collect::<String>().trim().parse().unwrap())
61
61
+
.collect();
70
62
71
71
-
transposed
72
72
-
.into_iter()
73
73
-
.map(|line| line.iter().collect::<String>().trim().parse().unwrap())
74
74
-
.collect_vec()
75
75
-
};
76
76
-
77
77
-
let operator = problem[problem.len() - 1]
78
78
-
.iter()
79
79
-
.collect::<String>()
80
80
-
.trim_ascii()
81
81
-
.to_owned();
82
82
-
let operator = match operator.as_str() {
63
63
+
let operator = problem[problem.len() - 1].iter().collect::<String>();
64
64
+
let operator = match operator.trim() {
83
65
"+" => Operator::Plus,
84
66
"*" => Operator::Times,
85
67
_ => unreachable!("{operator}"),
86
68
};
87
87
-
parsed_problems.push((operands, operator));
88
88
-
}
69
69
+
70
70
+
(operands, operator)
71
71
+
});
89
72
90
90
-
parsed_problems
73
73
+
parsed_problems.collect()
91
74
}
+4
-9
src/spatial.rs
···
71
71
retval
72
72
}
73
73
74
74
-
pub fn transpose<T: Copy + Default>(input: &[&[T]]) -> Vec<Vec<T>> {
75
75
-
let mut output = vec![vec![Default::default(); input.len()]; input[0].len()];
76
76
-
77
77
-
for col in 0..input[0].len() {
78
78
-
for row in 0..input.len() {
79
79
-
output[col][row] = input[row][col]
80
80
-
}
81
81
-
}
82
82
-
output
74
74
+
pub fn transpose<S: AsRef<[T]>, T: Copy>(input: &[S]) -> Vec<Vec<T>> {
75
75
+
(0..input[0].as_ref().len())
76
76
+
.map(|col| input.iter().map(|row| row.as_ref()[col]).collect())
77
77
+
.collect()
83
78
}