Если вам нужны индексы столбцов:
type GameState = List[List[String]]
case class ColumnNum(index: Int)
def allViableColumns(game: GameState): List[ColumnNum] =
for((xs, i) <- game.zipWithIndex; if !isColumnFull(xs)) yield ColumnNum(i + 1)
Если вам нужны столбцы, это просто:
def allViableColumns(game: GameState): List[List[String]] =
game filterNot isColumnFull
Если вы решите использовать первую версию, рассмотрите возможность изменения(i + 1)
- i
: обычно нет веских причин для индексации по одному.