Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 8 additions & 14 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,33 +1,27 @@
import com.typesafe.sbt.SbtScalariform._
name := "ascii-graphs"

organization := "com.github.mdr"

version := "0.0.6"
version := "0.0.7"

scalaVersion := "2.12.1"
scalaVersion := "2.10.6"

crossScalaVersions := Seq("2.9.1", "2.9.2", "2.10.1")
crossScalaVersions := Seq("2.10.6")

scalacOptions ++= Seq("-deprecation")
scalacOptions ++= Seq("-deprecation", "-Xlint")

javacOptions ++= Seq("-source", "1.6", "-target", "1.6")
javacOptions ++= Seq("-source", "1.8", "-target", "1.8")

libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"

libraryDependencies += "org.scalacheck" %% "scalacheck" % "1.13.4" % "test"

// Screen-sized dependency graph:
// libraryDependencies += "org.vert-x" % "vertx-core" % "1.3.1.final"

EclipseKeys.withSource := true

EclipseKeys.eclipseOutput := Some("bin")

//net.virtualvoid.sbt.graph.Plugin.graphSettings

import com.typesafe.sbt.SbtScalariform.ScalariformKeys

ScalariformKeys.preferences <<= baseDirectory.apply { dir =>
ScalariformKeys.preferences <<= baseDirectory.apply { dir =>
scalariform.formatter.preferences.PreferencesImporterExporter.loadPreferences((dir / "formatterPreferences.properties").getPath)
}

Expand All @@ -36,7 +30,7 @@ publishMavenStyle := true
publishArtifact in Test := false

publishTo <<= isSnapshot(
if (_) Some("snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/")
if (_) Some("snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/")
else Some("releases" at "https://oss.sonatype.org/service/local/staging/deploy/maven2/"))

pomExtra := {
Expand Down
26 changes: 17 additions & 9 deletions src/main/scala/com/github/mdr/ascii/common/Point.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,33 @@ package com.github.mdr.ascii.common

object Point {

private def sameColumn(p1: Point, p2: Point, p3: Point) = p1.column == p2.column && p2.column == p3.column
private def sameRow(p1: Point, p2: Point, p3: Point) = p1.row == p2.row && p2.row == p3.row
private def colinear(p1: Point, p2: Point, p3: Point) = sameColumn(p1, p2, p3) || sameRow(p1, p2, p3)
private def sameColumn(p1: Point, p2: Point, p3: Point) =
p1.column == p2.column && p2.column == p3.column
private def sameRow(p1: Point, p2: Point, p3: Point) =
p1.row == p2.row && p2.row == p3.row
private def colinear(p1: Point, p2: Point, p3: Point) =
sameColumn(p1, p2, p3) || sameRow(p1, p2, p3)

def removeRedundantPoints(points: List[Point]): List[Point] = points match {
case List() | List(_) | List(_, _) ⇒ points
case p1 :: p2 :: p3 :: remainder if colinear(p1, p2, p3) ⇒ removeRedundantPoints(p1 :: p3 :: remainder)
case p :: ps ⇒ p :: removeRedundantPoints(ps)
case List() | List(_) | List(_, _) ⇒ points
case List(p1, p2, p3, remainder @ _*) if colinear(p1, p2, p3) ⇒
removeRedundantPoints(List(p1, p3) ::: remainder.toList)
case List(p, ps @ _*) ⇒ List(p) ::: removeRedundantPoints(ps.toList)
}

}

case class Point(row: Int, column: Int) extends Translatable[Point] with Transposable[Point] {
case class Point(row: Int, column: Int)
extends Translatable[Point]
with Transposable[Point] {

def maxRowCol(that: Point): Point = Point(math.max(this.row, that.row), math.max(this.column, that.column))
def maxRowCol(that: Point): Point =
Point(math.max(this.row, that.row), math.max(this.column, that.column))

type Self = Point

def translate(down: Int = 0, right: Int = 0): Point = Point(row + down, column + right)
def translate(down: Int = 0, right: Int = 0): Point =
Point(row + down, column + right)

def transpose: Point = Point(column, row)

Expand Down
Loading