Skip to content

Commit ad00465

Browse files
committed
refactor(22/2024): simplify
1 parent 0ca3726 commit ad00465

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

src/solutions/year2024/day22.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,19 @@ impl Day22 {
2727
let mut next_secrets = Vec::new();
2828

2929
for _ in 0..number_of_secrets {
30-
let tmp = secret * 64;
31-
secret ^= tmp;
32-
secret %= 16777216;
33-
34-
let tmp = secret / 32;
35-
secret ^= tmp;
36-
secret %= 16777216;
37-
38-
let tmp = secret * 2048;
39-
secret ^= tmp;
40-
secret %= 16777216;
30+
secret = self.mix_and_prune(secret, |s| s * 64);
31+
secret = self.mix_and_prune(secret, |s| s / 32);
32+
secret = self.mix_and_prune(secret, |s| s * 2048);
4133

4234
next_secrets.push(secret);
4335
}
4436

4537
next_secrets
4638
}
39+
40+
fn mix_and_prune(&self, current: usize, calculations: fn(usize) -> usize) -> usize {
41+
(current ^ calculations(current)) % 16777216
42+
}
4743
}
4844

4945
#[cfg(test)]

0 commit comments

Comments
 (0)