Skip to content

Commit 66cd324

Browse files
authored
Merge pull request #102 from jwodder/no-maxtracker
Remove uses of `maxtracker.rs`
2 parents 69abd95 + 99eff6f commit 66cd324

File tree

3 files changed

+37
-29
lines changed

3 files changed

+37
-29
lines changed

2017/06a/src/main.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use adventutil::maxtracker::FirstMaxKeyTracker;
21
use adventutil::pullparser::{ParseError, PullParser, Token};
32
use adventutil::Input;
43

@@ -7,11 +6,16 @@ struct Banks(Vec<u32>);
76

87
impl Banks {
98
fn maxpos(&self) -> usize {
10-
let mut tracker = FirstMaxKeyTracker::new();
11-
for (i, &val) in self.0.iter().enumerate() {
12-
tracker.add(i, val);
13-
}
14-
tracker.get_key().unwrap()
9+
self.0
10+
.iter()
11+
.copied()
12+
.enumerate()
13+
// Use rev() so that max_by_key() will return the first max element
14+
// in self.0 when there's a tie.
15+
.rev()
16+
.max_by_key(|&(_, val)| val)
17+
.unwrap()
18+
.0
1519
}
1620

1721
fn redistribute(&mut self) {

2017/06b/src/main.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use adventutil::maxtracker::FirstMaxKeyTracker;
21
use adventutil::pullparser::{ParseError, PullParser, Token};
32
use adventutil::Input;
43

@@ -7,11 +6,16 @@ struct Banks(Vec<u32>);
76

87
impl Banks {
98
fn maxpos(&self) -> usize {
10-
let mut tracker = FirstMaxKeyTracker::new();
11-
for (i, &val) in self.0.iter().enumerate() {
12-
tracker.add(i, val);
13-
}
14-
tracker.get_key().unwrap()
9+
self.0
10+
.iter()
11+
.copied()
12+
.enumerate()
13+
// Use rev() so that max_by_key() will return the first max element
14+
// in self.0 when there's a tie.
15+
.rev()
16+
.max_by_key(|&(_, val)| val)
17+
.unwrap()
18+
.0
1519
}
1620

1721
fn redistribute(&mut self) {

2018/05b/src/main.rs

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use adventutil::maxtracker::MinTracker;
21
use adventutil::Input;
32

43
/// A doubly-linked list backed by a borrowed slice, with adjacency of elements
@@ -169,23 +168,24 @@ struct Adjacent {
169168

170169
fn solve(s: &str) -> usize {
171170
let mut list = DoubleIndexList::new(s.as_bytes());
172-
let mut shortest = MinTracker::new();
173-
for &c in b"abcdefghijklmnopqrstuvwxyz" {
174-
if c > b'a' {
175-
list.reset();
176-
}
177-
let mut cursor = list.cursor();
178-
while let Some(&sc) = cursor.current() {
179-
if sc.to_ascii_lowercase() == c {
180-
cursor.remove_current();
181-
} else {
182-
cursor.move_next();
171+
b"abcdefghijklmnopqrstuvwxyz"
172+
.iter()
173+
.map(|&c| {
174+
if c > b'a' {
175+
list.reset();
183176
}
184-
}
185-
let length = react(&mut list);
186-
shortest.add(length);
187-
}
188-
shortest.get().unwrap()
177+
let mut cursor = list.cursor();
178+
while let Some(&sc) = cursor.current() {
179+
if sc.to_ascii_lowercase() == c {
180+
cursor.remove_current();
181+
} else {
182+
cursor.move_next();
183+
}
184+
}
185+
react(&mut list)
186+
})
187+
.min()
188+
.unwrap()
189189
}
190190

191191
fn react(chars: &mut DoubleIndexList<'_, u8>) -> usize {

0 commit comments

Comments
 (0)