Link to pastebin
object TicTacToeTomek {
def solve(arr: List[List[Char]]) : String = {
def checkWin(a: List[Char]) : String = {
val o = a.filter(c=>c=='O').length
val x = a.filter(c=>c=='X').length
val t = a.filter(c=>c=='T').length
if(o+t==4) return "O won"
else if(x+t==4) return "X won"
else return null
}
for(i<-0.to(3)) {
val h = arr(i)
val hres = checkWin(h)
if(hres!=null) return hres
val v = List(arr(0)(i),arr(1)(i),arr(2)(i),arr(3)(i))
val vres = checkWin(v)
if(vres!=null) return vres
}
val d1 = List(arr(0)(0),arr(1)(1),arr(2)(2),arr(3)(3))
val d1res = checkWin(d1)
if(d1res!=null) return d1res
val d2 = List (arr(0)(3),arr(1)(2),arr(2)(1),arr(3)(0))
val d2res = checkWin(d2)
if(d2res!=null) return d2res
arr.foreach(a=>a.foreach(c=>if(c=='.') return "Game has not completed"))
return "Draw"
}
def main(args: Array[String]):Unit = {
val T = readLine().toInt
for(i<-1.to(T)) {
val arr = List[List[Char]](readLine().toList,readLine().toList,readLine().toList,readLine().toList)
val empt = readLine()
println("Case #"+i+": " + solve(arr))
}
}
}