Skip to content

Instantly share code, notes, and snippets.

Keybase proof

I hereby claim:

  • I am privateblue on github.
  • I am mikolajszabo (https://keybase.io/mikolajszabo) on keybase.
  • I have a public key ASBPSbXL4MOm_Zallxta1cyZqgEZSGT0IMRGzLHaK-Owrgo

To claim this, I am signing this object:

@privateblue
privateblue / polyominos.scala
Last active October 17, 2019 15:47
Enumerating polyominos
case class Point(x: Int, y: Int) {
lazy val neighbours = Set(Point(x-1,y), Point(x+1,y), Point(x,y-1), Point(x,y+1))
}
case class Polyomino(squares: Set[Point]) {
def op(f: Point => Point) = copy(squares = squares.map(f))
val order = squares.size
lazy val mx = if (squares.isEmpty) 0 else squares.map(_.x).max
@privateblue
privateblue / nqueens1.scala
Last active March 29, 2020 12:09
N Queens
object nqueens1 {
import math._
case class V(x: Int, y: Int) {
def -(v: V): V = V(x - v.x, y - v.y)
}
def solve(n: Int): List[V] = attempt(n, grid(n), List())
// given an expected queen count, a list of still available squares, and a
@privateblue
privateblue / nqueens2.scala
Last active March 29, 2020 12:09
N Queens without straight lines
object nqueens2 {
import math._
case class V(x: Int, y: Int) {
def -(v: V): V = V(x - v.x, y - v.y)
def +(v: V): V = V(x + v.x, y + v.y)
def lineWith(v: V, n: Int): List[V] = extend(v, n) ++ v.extend(this, n)