File tree Expand file tree Collapse file tree 6 files changed +32
-13
lines changed
src/main/scala/com/truelaurel Expand file tree Collapse file tree 6 files changed +32
-13
lines changed Original file line number Diff line number Diff line change @@ -2,10 +2,19 @@ name := "CodinGame-Scala-Kit"
22version := " 0.1.0"
33scalaVersion := " 2.12.4"
44
5+ // solve a weird issue with java dependencies (trait Approving)
6+ // see https://stackoverflow.com/questions/43751394/package-cats-contains-object-and-package-with-same-name-implicits &
7+ // https://github.com/druid-io/tranquility/blob/master/build.sbt
8+ scalacOptions := Seq (" -Yresolve-term-conflict:object" )
9+
10+
11+ resolvers += Resolver .mavenLocal
12+
513libraryDependencies += " org.scalatest" %% " scalatest" % " 3.0.1" % " test"
14+ libraryDependencies += " com.github.writethemfirst" % " approvals-java" % " 0.4" % " test"
615libraryDependencies += " org.scala-lang" % " scala-compiler" % " 2.12.4" % " test"
716libraryDependencies += " com.geirsson" %% " scalafmt-core" % " 1.3.0"
817libraryDependencies += " com.geirsson" %% " scalafmt-cli" % " 1.3.0"
918
1019enablePlugins(JmhPlugin )
11- enablePlugins(JavaAppPackaging )
20+ enablePlugins(JavaAppPackaging )
Original file line number Diff line number Diff line change 1- sbt.version = 0.13.15
1+ sbt.version = 1.1.1
Original file line number Diff line number Diff line change 11logLevel := Level .Warn
2- addSbtPlugin(" pl.project13.scala" % " sbt-jmh" % " 0.2.25 " )
3- addSbtPlugin(" com.typesafe.sbt" % " sbt-native-packager" % " 1.2.0 " )
2+ addSbtPlugin(" pl.project13.scala" % " sbt-jmh" % " 0.3.3 " )
3+ addSbtPlugin(" com.typesafe.sbt" % " sbt-native-packager" % " 1.3.3 " )
44
Original file line number Diff line number Diff line change @@ -11,6 +11,10 @@ case class Pos(x: Int, y: Int) {
1111
1212 def + (pos : Pos ): Pos = Pos (x + pos.x, y + pos.y)
1313
14+ def / (r : Int ): Pos = Pos (x / r, y / r)
15+
16+ def % (r : Int ): Pos = Pos (x % r, y % r)
17+
1418 def neighborIn (direction : Direction ): Pos = direction match {
1519 case N => Pos (x, y - 1 )
1620 case S => Pos (x, y + 1 )
Original file line number Diff line number Diff line change @@ -2,14 +2,16 @@ package com.truelaurel.math.geometry.grid
22
33case class Masks (size : Int , needed : Int ) {
44 val empty = GridData (size)
5- val matrixIndices = for {
5+
6+ val matrixIndices : Seq [(Int , Int )] = for {
67 r0 <- 0 to size - needed
78 c0 <- 0 to size - needed
89 } yield (r0, c0)
10+
911 val matricesCompleted : Set [Long ] =
1012 (preComputedMatricesRows ++ preComputedMatricesCols :+ preComputedMatricesDiag1 :+ preComputedMatricesDiag2).toSet
1113
12- def isComplete (grid : GridData ) =
14+ def isComplete (grid : GridData ): Boolean =
1315 matrixIndices.exists {
1416 case (r0, c0) =>
1517 val gsm = grid.subMatrix(r0, c0, needed)
@@ -20,30 +22,30 @@ case class Masks(size: Int, needed: Int) {
2022 (0 until needed).map(row => (for {
2123 c <- 0 until needed
2224 i = row * needed + c
23- bit = ( 1L << i)
25+ bit = 1L << i
2426 } yield bit).sum)
2527
2628 def preComputedMatricesCols : Seq [Long ] =
2729 (0 until needed).map(col => (for {
2830 r <- 0 until needed
2931 i = r * needed + col
30- bit = ( 1L << i)
32+ bit = 1L << i
3133 } yield bit).sum)
3234
3335 def preComputedMatricesDiag1 : Long =
3436 (for {
3537 r <- 0 until needed
3638 c = r
3739 i = r * needed + c
38- bit = ( 1L << i)
40+ bit = 1L << i
3941 } yield bit).sum
4042
4143 def preComputedMatricesDiag2 : Long =
4244 (for {
4345 r <- 0 until needed
4446 c = needed - 1 - r
4547 i = r * needed + c
46- bit = ( 1L << i)
48+ bit = 1L << i
4749 } yield bit).sum
4850
4951}
Original file line number Diff line number Diff line change @@ -34,16 +34,20 @@ case class GomokuBoard(
3434 def play (x : Int , y : Int ): GomokuBoard = play(Pos (x, y))
3535
3636 def play (p : Pos ): GomokuBoard =
37- if (nextPlayer)
37+ forcePlay(p, nextPlayer)
38+
39+ def forcePlay (p : Pos , player : Boolean ): GomokuBoard = {
40+ if (player)
3841 copy(
39- nextPlayer = false ,
42+ nextPlayer = ! player ,
4043 dataFree = dataFree - (p.x, p.y),
4144 dataTrue = dataTrue + (p.x, p.y))
4245 else
4346 copy(
44- nextPlayer = true ,
47+ nextPlayer = ! player ,
4548 dataFree = dataFree - (p.x, p.y),
4649 dataFalse = dataFalse + (p.x, p.y))
50+ }
4751
4852 def remove (p : Pos ): GomokuBoard =
4953 copy(
You can’t perform that action at this time.
0 commit comments