問題の意図がわかりません。
三角数の判定は、
n(n + 1) / 2 = t
n2 + n - 2t = 0
これを解いて、
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))