Skip to content

Commit d08f030

Browse files
committed
Test 2024 day 22 examples with scalacheck
1 parent 0103bd6 commit d08f030

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ object Day22 {
1515
prune(mix(secret2, secret2 * 2048))
1616
}
1717

18-
def secretAfter(initialSecret: Secret, after: Int = 2000): Secret =
19-
Iterator.iterate(initialSecret)(nextSecret)(after)
18+
def secretIterator(initialSecret: Secret): Iterator[Secret] =
19+
Iterator.iterate(initialSecret)(nextSecret)
2020

2121
def sumSecretsAfter(secrets: Seq[Secret], after: Int = 2000): Secret =
22-
secrets.map(secretAfter(_, after)).sum
22+
secrets.map(secretIterator(_)(after)).sum
2323

2424
def mostBananas(secrets: Seq[Secret]): Int = {
2525
// TODO: optimize (~4.7s)
2626
val secretMaps = secrets
2727
.map({ initialSecret =>
28-
Iterator.iterate(initialSecret, 2000 + 1)(nextSecret)
28+
secretIterator(initialSecret).take(2000 + 1)
2929
.map(_ % 10)
3030
.map(_.toInt)
3131
.sliding(5)

src/test/scala/eu/sim642/adventofcode2024/Day22Test.scala

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package eu.sim642.adventofcode2024
22

3-
import Day22._
3+
import Day22.*
44
import org.scalatest.funsuite.AnyFunSuite
5+
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks
56

6-
class Day22Test extends AnyFunSuite {
7+
class Day22Test extends AnyFunSuite with ScalaCheckPropertyChecks {
78

89
val exampleInput =
910
"""1
@@ -18,16 +19,26 @@ class Day22Test extends AnyFunSuite {
1819
|2024""".stripMargin
1920

2021
test("Part 1 examples") {
21-
assert(secretAfter(123, 1) == 15887950)
22-
assert(secretAfter(123, 2) == 16495136)
23-
assert(secretAfter(123, 3) == 527345)
24-
assert(secretAfter(123, 4) == 704524)
25-
assert(secretAfter(123, 5) == 1553684)
26-
assert(secretAfter(123, 6) == 12683156)
27-
assert(secretAfter(123, 7) == 11100544)
28-
assert(secretAfter(123, 8) == 12249484)
29-
assert(secretAfter(123, 9) == 7753432)
30-
assert(secretAfter(123, 10) == 5908254)
22+
val secrets = Table(
23+
"secret",
24+
123,
25+
15887950,
26+
16495136,
27+
527345,
28+
704524,
29+
1553684,
30+
12683156,
31+
11100544,
32+
12249484,
33+
7753432,
34+
5908254,
35+
)
36+
37+
val it = secretIterator(123)
38+
forAll (secrets) { secret =>
39+
assert(it.next() == secret)
40+
}
41+
3142
assert(sumSecretsAfter(parseSecrets(exampleInput)) == 37327623)
3243
}
3344

0 commit comments

Comments
 (0)