Skip to content

Commit effd6a5

Browse files
committed
better golf
1 parent 4f99feb commit effd6a5

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

src/data_structures/linear_rmq.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,16 @@ impl<T: Clone, F: Fn(&T, &T) -> bool> LinearRMQ<T, F> {
7171
let j = self.t[le].1
7272
& self.t[ri].1
7373
& 0_usize.wrapping_sub(1 << ((self.t[le].0 ^ self.t[ri].0) | 1).ilog2());
74-
{
75-
let mut k = self.t[le].1 ^ j;
76-
if k != 0 {
74+
let lift = |u: usize, mut k: usize| -> usize {
75+
if k == 0 {
76+
u
77+
} else {
7778
k = 1 << k.ilog2();
78-
le = self.head[self.t[le].0 & 0_usize.wrapping_sub(k) | k];
79+
self.head[self.t[u].0 & 0_usize.wrapping_sub(k) | k]
7980
}
80-
}
81-
{
82-
let mut k = self.t[ri].1 ^ j;
83-
if k != 0 {
84-
k = 1 << k.ilog2();
85-
ri = self.head[self.t[ri].0 & 0_usize.wrapping_sub(k) | k];
86-
}
87-
}
81+
};
82+
le = lift(le, self.t[le].1 ^ j);
83+
ri = lift(ri, self.t[ri].1 ^ j);
8884
if (self.cmp)(&self.a[le], &self.a[ri]) {
8985
le
9086
} else {

0 commit comments

Comments
 (0)