私はベクトルのベクトルで文字を検索する必要があります。私は非常に粗悪な方法を書いています。ベクトルのベクトルの要素を検索するためのより良い方法は何ですか?ここでスカラーのベクトルのベクトルの文字を検索するための良い方法
は私のコードです:ここでは
def search(xs: Vector[Vector[Char]], char: Char, rowIndex: Int): Pos = xs.headOption match {
case None => Pos(-1, -1)
case Some(row) => {
val tuple = searchHelper(row, char, 0)
if(tuple._1)
Pos(rowIndex, tuple._2)
else
search(xs.tail, char, rowIndex +1)
}
}
def searchHelper(xs: Vector[Char], char: Char, colIndex: Int): (Boolean, Int) = xs.headOption match {
case None => (false, colIndex)
case Some(col) =>
if(col == char)
(true, colIndex)
else
searchHelper(xs.tail, char, colIndex +1)
}
search(vector, c, 0)
は、入力された:
val input =
"""ooo-------
|oSoooo----
|ooooooooo-
|-ooooooooo
|-----ooToo
|------ooo-""".stripMargin
val vector =
Vector(input.split("\n").map(str => Vector(str: _*)): _*)
val c = 'S'
私はCourseraの割り当てを認識しているので、私はまっすぐな答えを出すつもりはありませんが、行インデックスと列インデックスの2つの異なるインデックス値を探しています。 [標準ライブラリ](http://www.scala-lang.org/api/current/scala/collection/immutable/Vector.html)は、コレクションからインデックスを抽出するためのいくつかの異なる方法を提供しています。これらのうち2つ(コメントヒントで述べたように)を使用すると、 'findChar()'チャレンジは2行のコードで解決できます。 – jwvh
ありがとう。ちょうどヒントが必要でした。 – kromastorm