Skip to content

Commit 64c7d3a

Browse files
authored
Merge pull request #61 from tyrcho/master
util classes for gomoku/tic-tac-toe, upgraded to latest sbt version note: LGTM, no big changes though.
2 parents e8a420b + 1bc96d2 commit 64c7d3a

File tree

6 files changed

+32
-13
lines changed

6 files changed

+32
-13
lines changed

build.sbt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@ name := "CodinGame-Scala-Kit"
22
version := "0.1.0"
33
scalaVersion := "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+
513
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
14+
libraryDependencies += "com.github.writethemfirst" % "approvals-java" % "0.4" % "test"
615
libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.12.4" % "test"
716
libraryDependencies += "com.geirsson" %% "scalafmt-core" % "1.3.0"
817
libraryDependencies += "com.geirsson" %% "scalafmt-cli" % "1.3.0"
918

1019
enablePlugins(JmhPlugin)
11-
enablePlugins(JavaAppPackaging)
20+
enablePlugins(JavaAppPackaging)

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version = 0.13.15
1+
sbt.version = 1.1.1

project/plugins.sbt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
logLevel := 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

src/main/scala/com/truelaurel/math/geometry/Pos.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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)

src/main/scala/com/truelaurel/math/geometry/grid/Masks.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@ package com.truelaurel.math.geometry.grid
22

33
case 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
}

src/main/scala/com/truelaurel/samplegames/gomoku/GomokuBoard.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff 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(

0 commit comments

Comments
 (0)