Skip to content

Instantly share code, notes, and snippets.

@noahlz
Created August 6, 2013 02:04
Show Gist options
  • Save noahlz/6161394 to your computer and use it in GitHub Desktop.
Save noahlz/6161394 to your computer and use it in GitHub Desktop.
// Reference: http://www.cforcoding.com/2012/01/interview-programming-problems-done.html
object PascalsTriangle {
def nextrow(prev: List[Int]) :Stream[List[Int]] = {
val curr = collection.mutable.ArrayBuffer(1)
for(i <- 1 until prev.length) {
curr += prev(i - 1) + prev(i)
}
prev #:: nextrow(curr += 1 toList)
}
lazy val pascalTriangleRows: Stream[List[Int]] = { nextrow(List(1)) }
def printTriangle(numRows: Int) :Unit = {
pascalTriangleRows take numRows map { _.mkString(",") } foreach println
}
}
// scala> PascalTriangle.printTriangle(10)
// 1
// 1,1
// 1,2,1
// 1,3,3,1
// 1,4,6,4,1
// 1,5,10,10,5,1
// 1,6,15,20,15,6,1
// 1,7,21,35,35,21,7,1
// 1,8,28,56,70,56,28,8,1
// 1,9,36,84,126,126,84,36,9,1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment