Skip to content

Commit 1580750

Browse files
committed
Use bitwise operations in 2024 day 22
1 parent 9c202dd commit 1580750

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/main/scala/eu/sim642/adventofcode2024/Day22.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ object Day22 {
77
type Secret = Long
88

99
def mix(secret: Secret, value: Secret): Secret = value ^ secret
10-
def prune(secret: Secret): Secret = secret % 16777216 // TODO: bitwise
10+
def prune(secret: Secret): Secret = secret & 0xFFFFFF // % 16777216
1111

1212
def nextSecret(secret: Secret): Secret = {
13-
val secret1 = prune(mix(secret, secret * 64))
14-
val secret2 = prune(mix(secret1, secret1 / 32))
15-
prune(mix(secret2, secret2 * 2048))
13+
val secret1 = prune(mix(secret, secret << 6)) // * 64
14+
val secret2 = mix(secret1, secret1 >> 5) // / 32, no prune needed after right shift
15+
prune(mix(secret2, secret2 << 11)) // * 2048
1616
}
1717

1818
def secretIterator(initialSecret: Secret): Iterator[Secret] =

0 commit comments

Comments
 (0)