Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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 withScalaCheckPropertyChecks{
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)

AltStyle によって変換されたページ (->オリジナル) /