object Main extends App {
def pascal(prev: List[Int], until: Int): Unit = {
if (until == 0) ()
else {
val now = if (prev.isEmpty) 1 :: prev else (0 to prev.size).map(number(_, prev)).toList
println(now.mkString(" "))
pascal(now, until - 1)
}
}
def number(pos : Int, prev: List[Int]) : Int = {
val left = if(prev.isDefinedAt(pos - 1)) prev(pos - 1) else 0
val right = if(prev.isDefinedAt(pos)) prev(pos) else 0
left + right
}
def f(n: Int): Unit = {
pascal(Nil, n)
}
(3 to 7).foreach { i =>
f(i)
println()
}
}