ScalaでProject Euler(72)

Problem 42

問題の意図がわかりません。
三角数の判定は、

n(n + 1) / 2 = t
n2 + n - 2t = 0

これを解いて、

 n = \frac{-1 + \sqrt{1 + 8t}}{2}

nが整数になる必要十分条件は、1 + 8tが平方数です。

def int_sqrt(n :Int) :Int = {
    def f(m :Int) :Int = {
        val s = (m + n / m) / 2
        if(s >= m) m else f(s)
    }
    f(n)
}

def is_triangle(n :Int) = {
    val m = int_sqrt(1 + 8 * n)
    m * m == 1 + 8 * n
}

def remove(s :String) = s.substring(1, s.size - 1)

val s = io.Source.fromFile("words.txt")
val str = s.getLines.next
val words = str.split(',').map(remove)
val ns = words.map(s => s.map(c => c - 'A' + 1).sum)
println (ns.count(is_triangle))